git fetch
git fetch [remote_repo] :这个是将remote repo所有的数据:包括更新的文件,新增/减的分支,tag,等等,全部下载到本地的local repo。但是,不会做merge。也就是说,master分支数据可能是旧的,但是origin/master上的数据已经是新的了。可以进一步运行
1
2
|
git checkout master
git merge origin
/master
|
来将两个分支进行merge。或者更好使用git push来进行merge(前提是master确实是origin/master的tracking branch)
git pull
git pull [remote_repo branch_name]:这个命令直接从指定remote_repo的指定branch拉取相应的数据。并将远程branch的更新和本地的tracking branch做merge。
注意。这时候,并不会把这个branch之外的数据拉下来。比如,如果远程的另一个branch有更新,或者增加了一个新的branch,这个命令并不会把这些数据拉下来。
如果直接执行git pull [remote_repo],则会将所有数据拉下来,包括其它分支的更新,包括新增的分支。同时还会将当前branch与它tracking的branch做merge。
git push
git push [remote_repo local branch:remote branch]。缺省情况下,将当前branch的改动push到缺省repo中它track的branch。也可以加repo和branch,将当前分支的数据push到任何一个repo的任何一个branch
删除远程分支
如果需要删除一个远程分支,则需要git push origin :b1根据 git push的定义,就是把空push到远程的b1 branch。也就是删除了。
但是,如果别人已经在b1删除之前执行了fetch或者pull,在本地有了b1这个branch,再次执行fetch或者pull并不会删除这个branch。运行git branch -a也不能看出这个branch被删除了。这时候需要运行
1
2
3
4
5
6
7
8
9
10
11
12
|
$ git remote show origin
* remote origin
Fetch URL: git@github.com:xxx
/xxx
.git
Push URL: git@github.com:xxx
/xxx
.git
HEAD branch: master
Remote branches:
master tracked
refs
/remotes/origin/b1
stale (use
'git remote prune'
to remove)
Local branch configured
for
'git pull'
:
master merges with remote master
Local ref configured
for
'git push'
:
master pushes to master (up to
date
)
|
这时候能够看到b1是stale的,可以使用git remote prune origin将它从本地repo也去掉。
git remote prune
说明:remote上的一个分支被其他人删除后,需要更新本地的分支列表
使用举例:
git checkout [COMMIT_ID] [FILE_PATH]
说明:部分恢复。当我们修改很多次之后,可能想恢复之前某个commit时的某个或者某些文件,本命令就提供了这个支持。 使用举例: