ameng 2019-12-01
单纯的使用 git branch 命令会显示当前的分支名称,使用 git branch feature1 创建了一个名为 feature1 的分支,git checkout feature1 表示切换到 feature1 分支,git checkout -b feature2 则是上述两个命令的结合,创建并切换到 feature2 分支。
$ git branch # 查看 * master $ git branch feature1 # 创建 $ git branch * master feature1 $ git checkout feature1 # 变更 Switched to branch 'feature1' $ git checkout -b feature2 # 创建 + 变更 Switched to a new branch 'feature2'
$ git branch * feature2 feature1 master $ git merge feature1 # 此时需要填写 merge 信息,然后就成功将 feature1 的内容合并到 feature2 中 $ git branch -d feature1 # 此时 feature1 就消失了,后面的编号代表它 commit 的值前 7 位 Deleted branch feature1 (was 651f232).
分支合并时冲突主要表现在,两个分支对一份文件有不同的修改,分支 A 中文件写的是 a,分支 B 中文件写的是 ab,分支 C 中文件写的是 ac,合并的时候内容就产生冲突,这时候就需要手动修改内容,完成合并的过程。
# 在 A 分支写下 a.txt 文件,内容是 a $ git branch * A $ cat a.txt a # 创建 B 分支,修改 a.txt 文件,内容是 ab $ git checkout -b B Switched to a new branch 'B' $ cat a.txt ab $ git branch A * B # 回到 A 分支,创建 C 分支,修改 a.txt 文件,内容是 ac $ git checkout A Switched to branch 'A' $ git checkout -b C Switched to a new branch 'C' $ cat a.txt ac # 回到 B 分支,合并 C 分支,此时产生冲突 $ git checkout B Switched to branch 'B' $ git merge C Auto-merging a.txt CONFLICT (content): Merge conflict in a.txt Automatic merge failed; fix conflicts and then commit the result. # 查看冲突的文件内容,不做修改,重新 commit $ vim a.txt <<<<<<< HEAD ab ======= ac >>>>>>> C $ git add . $ git commit -m "abc" # 此时可以看到合并已经完成 $ cat a.txt <<<<<<< HEAD ab ======= ac >>>>>>> C $ git log commit 6019def448ca10da6aa462c0b1ed7f1b1a768bbd (HEAD -> B) Merge: b088741 fa4d442 Author: ChenBin113 <> Date: Sun Dec 1 17:55:05 2019 +0800 abc commit fa4d442a66125c89af5cabf946a669af9ba256ba (C) Author: ChenBin113 <> Date: Sun Dec 1 17:53:06 2019 +0800 ac commit b088741babb987489d27a558978b63df3144ba0e Author: ChenBin113 <> Date: Sun Dec 1 17:50:34 2019 +0800 ab commit d34197eb7937fb2198676e8b9f2c80e061433f96 (A) Author: ChenBin113 <> Date: Sun Dec 1 17:40:25 2019 +0800 A: a # 删除 C 分支 $ git branch -d C Deleted branch C (was fa4d442).
git tag -a v1.0 表示对当前的 commit 打上 tag 为 v1.0 的标记,通常用来记录重大的版本发布。