alhost spider]# git branch
* dev
master
自动连接远程分支代码,如果远程仓库dev有代码更新,git pull 更新本地代码
2、解决冲突
人生不如意之事十之八九,合并分支往往也不是一帆风顺的。
准备新的feature1
分支,继续我们的新分支开发:
[root@localhost spider]# git checkout -b feature
切换到一个新分支 'feature'
修改README.md最后一行,改为:
[root@localhost spider]# echo 'added this line from branch feature' >> README.md
在feature
分支上提交:
[root@localhost spider]# git add README.md
[root@localhost spider]# git commit -m 'add feature'
[feature 8880f27] add feature
* [new branch] feature -> feature
分支 feature 设置为跟踪来自 origin 的远程分支 feature。
切换到master
分支:
[root@localhost spider]# git checkout master
切换到分支 'master'
您的分支领先 'origin/master' 共 2 个提交。
(使用 "git push" 来发布您的本地提交)
Git还会自动提示我们当前master
分支比远程的master
分支要超前1个提交。
在master
分支上把README.md文件的最后一行改为:
[root@localhost spider]# echo 'added this line from master' >> README.md
提交上传仓库:
[root@localhost spider]# git add README.md
[root@localhost spider]# git commit -m 'mASTER UPDATE'
[master d735926] mASTER UPDATE
1 file changed, 1 insertion(+)
e886050..d735926 master -> master
现在,master
分支和feature1
分支各自都分别有新的提交,变成了这样:
这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
[root@localhost spider]# git merge feature
error: 'merge' is not possible because you have unmerged files.
提示:请先在工作区改正文件,然后酌情使用
提示:'git add/rm <file>' 标记解决方案,
提示:或使用 'git commit -a'。
fatal: Exiting because of an unresolved conflict
果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status
也可以告诉我们冲突的文件:
[root@localhost spider]# git branch
dev
feature
* master
[root@localhost spider]# git status
# 位于分支 master
# 您有尚未合并的路径。
# (解决冲突并运行 "git commit")
#
# 未合并的路径:
# (使用 "git add <file>..." 标记解决方案)
#
# 双方修改: README.md
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
我们可以直接查看README.md的内容:
# spider
forth commit
create a new branch
<<<<<<< HEAD
added this line from master
=======
added this line from branch feature
>>>>>>> feature
Git用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,我们修改如下后保存:
# spider
forth commit
create a new branch
added this line from master
added this line from branch feature
再次提交:
[root@localhost spider]# git add README.md
[root@localhost spider]# git commit -m 'conflict fixed'
[master 92fe979] conflict fixed
[root@localhost spider]# git push -u origin master
d735926..92fe979 master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
现在,master
分支和feature
分支变成了下图所示:
用带参数的git log
也可以看到分支的合并情况:
[root@localhost spider]# git log --graph --pretty=oneline
* 92fe979409a534673f7f35c3613f65dcd8e9660b conflict fixed
|\
| * 8880f27f77477481232ab28fd1fe42cc87c33683 add feature
* | d73592620ebd7d368e0c4d7293ff228386fd243a mASTER UPDATE
|/
* 9182888e813b69bf08f9eff5cd899b6a07861507 Merge branch 'dev'
|\
| * 5a4ba4248b1b4982d48e570b1038c995e1e75ef0 Update README.md
* | e8860504de4b2975055943a353f6267d75984504 branch dev second
|/
* fbbba8c24902b2c4e52e693dc7503b400012fe76 branch first
* 3d649257c8778c5a40f52cfad9a6acfbc59d26dc gitignore
* 1560f36d2ebb48a47c7db12cd0aedf88e3d2a0f9 conf commit
* 81a32a17078f92d290ea29a7bbc928e1b30bf501 third commit
* 40ac1cff6d9bc827c1c3d8dac2b3aa838e4dfe70 second commit
* daf94f4cf0919b