Git Tools

Git Use

分支建立和删除

新建分支

1
git checkout -b branch1

转换到本地 master 分支

1
git checkout master

删除本地分支

1
git branch -d branch1

查看远程分支

1
git branch -a

删除远程分支

1
git push origin --delete branch1

删除不存在对应远程分支的本地分支

1
2
3
git remote prune origin 可以将其从本地版本库中去除。
#更简单的方法是使用这个命令,它在fetch之后删除掉没有与远程分支对应的本地分支:
git fetch -p

重命名远程分支
在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。

1
2
3
4
5
6
7
8
9
git branch -av
删除远程分支:
git push --delete origin devel(如果出错可能devel是默认分支)
重命名本地分支:
git branch -m devel develop
推送本地分支:
git push origin develop
git pull origin branch1 //从远程分支下载

撤销add的修改

1
2
git checkout -- file1 //add之前想恢复到改变之前的状态,
git reset HEAD file // or fileDir

fetch + merge = pull

默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

1
$ git fetch <远程主机名> <分支名>

比如,取回origin主机的master分支。

1
git fetch origin master

所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。比如origin主机的master,就要用origin/master读取。

1
2
git reset --hard origin/master
git merge origin/master (当前分支与远程master合并)

取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。

1
git checkout -b newBrach origin/master

上面命令表示,在origin/master的基础上,创建一个新分支。
此外,也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ git merge origin/master
# 或者
$ git rebase origin/master
上面命令表示在当前分支上,合并origin/master。
git pull = git fetch + merge to local
# 当你在 master 下
$ git pull
# 等于 fetch origin,然后 merge origin/master
# 当你在 develop 下
$ git pull
# 等于 fetch origin,然后 merge origin/develop

tag

把本地tag推送到远程

1
git push --tags

获取远程tag

1
git fetch origin tag <tagname>

删除远程tag:

1
git push origin --delete tag <tagname>

补充:分支的重要属性
分支确实有些特殊的属性——其中最重要的是,如果你在一个分支进行作业并创建了一个新的提交(commits),该分支的顶端将前进到那个提交(commits)。

解决冲突;

1
2
3
4
5
git fetch origin master
git merge origin/master
出现conflict
修改conflict 文件,
修改完git add, git commit -m

回退到历史版本:

1
2
3
4
git log # 查看提交历史
git fetch origin
git checkout <sha1-of-a-commit>
(正常情况下,git fetch origin, git checkout branch_name 即可, git pull origin branch_name)

附Git的远程,本地仓库,本地工作空间的文件流

image