接着上Remote 1来介绍,资料同步的另一种方法pull。
方法二 git pull: git merge及git fetch的综合体,较为快速。
我们在远端server master branch创建一个 git_pull_test.txt,此时跟local端不同步了,我们利用git pull直接将远端server最新的commit合併到我们local端,透过ls,git log都可发现已经成功同步了。
但git pull有缺点
,就是原本是两个过程,我们可能还可以做一些更动、修改
,但git pull是直接跳过过程去一个步骤完成,这样中间也问题就很难去debug
。
如果我们用git fetch origin master,会获取FETCH_HEAD,我们在此时可以去git diff FETCH_HEAD
比较local与远端FETCH_HEAD的区别,看看到底改了哪里,考虑是否需要git merge FETCH_HEAD,这样有更弹性的处理。
除非我们很清楚远端的修改,且确定远端的修改并不会对我们的local有任何影响,如冲突等等...就可使用git pull。
如何将local branch push至remote端 ? 又如何将 remote端 branch push至local端?
第一题:
先利用git checkout -b test创建test分支并切换到test分支,再利用git push origin test就可以将local branch push test到远端,此时点击github的branch,就可以发现多出一个test得分支。
第二题:
如果local要同步远端新创建的branch,或在现有的branch进行修改,就可利用git fetch (分支名)去同步。
如何删除及重命名远端branch?
git branch -a:可查询到local所有的branch
git branch -d (分支名):可删除指定local分支
-d,-D差别在于-D可以删除没有merge的branch,而-d无法
。
git push origin --delete (分支名) : 可以删除远端server(github)的branch
git branch -m (原分支名) (新分支名) : 可以重新命名 local branch。
而如果要改变远端branch名字,需要先利用git checkout -b test2,创建一个local branch,接着再利用git branch -m test2 test3
,将local branch重命名,最后将重命名后的branch利用,git push origin test3
给push去远端即可。
如何在远端快速找到特定历史的commit?
需要找到特定的历史commit,commit message及commit number都不是很好记,所以这时候,我们就可以利用tag在特定的commit留下标注。
tag (标籤):即是对某个commit所做的标注。
标籤预设会对指定分支下所有commit做标注,而我们也可利用commit值,对特定commit做标注。如下图:
git fetch -t : 可以获取远端的tag
git tag -l :可显示目前所有的tag
git tag (标籤名) :在local创建 tag
git push --tag : 可以将local tag push至 远端
git tag -d (标籤名) :可以删除local标籤
git push origin : refs/tags/(标籤名) :可以删除远端tag