一、 跟踪分支与远程跟踪分支的概念
分支: 指向某个Commit 对象的引用
跟踪分支(tracking branch):可以理解为本地Github 的客户端
远程跟踪分支(remote tracking branch),可以理解为本地GitHub的服务端
现在我们在本地通过 add commit 提交commit C3. 这个时候master 会指向C3. 但original/master 依然指向了C2.并没有改变
例如,上面的例子,http://XX/project.git 是git hub 地址,有两个commit: C1 和 C2 , Git hub 的master 分支指向了第二个commit C2. 现在我们使用git clone 命令把这个仓库clone 到本地,这个时候在本地的仓库会产生两个分支
master : 跟踪分支,这个是用户可写的
origin/master : 远程跟踪分云,用户只读。
在上图中,我们用git push 命令把C3 push 到Git hub
remote repo 的master 会指向C3
local repo 中的origin/mater 也会指向C3
1. Push Test
Head--> master : 指本地的head 指向本地的master
2. Pull Test
此时,我在Git Hub上直接提交一个commit #fa6876f. commit description is hello-3. 模仿Git hub 上有其他同事提交。
查看本地master 和 origin/master 全部指向了第二次的提交,并没有自动更新第三次提交。
使用pull 命令,从fa6876f (第三次from github 的提交),更新了master 和 origin/master
3. Fetch 和 merge
从Github 上做第四修改
执行Git fetch 会从远程更新到远程跟踪 orgin/master branch 上
执行Git merge 会从orgin/master 更新到 master 上