git - 高级

ameng 2019-12-01

常用命令

创建分支 - git branch

单纯的使用 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 -d

合并分支 - git merge

$ 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,合并的时候内容就产生冲突,这时候就需要手动修改内容,完成合并的过程。

git - 高级

# 在 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

git tag -a v1.0 表示对当前的 commit 打上 tag 为 v1.0 的标记,通常用来记录重大的版本发布。

相关推荐