Skip to content

Git命令-分支操作

1. 创建分支

基本语法:git branch <branch_name>
比如我们创建user分支

sh
$ git branch user

查看我们刚刚创建的分支:
Alt text

2. 查看所有分支

分支名称前面带*表示当前活跃的分支。

sh
$ git branch -v
* master c83d71d Revert "Issue354645 删除1.txt"
  user   c83d71d Revert "Issue354645 删除1.txt"

3. 切换分支

sh
$ git checkout user
Switched to branch 'user'

git支持切换到未创建的分支:

sh
mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (user)
$ git checkout -b order
Switched to a new branch 'order'

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (order)
$

4. 删除分支

git不能删除当前所在的分支:

sh
mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (order)
$ git branch -d user
Deleted branch user (was c83d71d).
mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (order)
$ git branch -v
  master c83d71d Revert "Issue354645 删除1.txt"
* order  c83d71d Revert "Issue354645 删除1.txt"

5. 合并分支

需求场景: 在master分支上创建c.txt,修改后提交,在切换到order分支,再创建c.txt修改后提交,现在需要将order分支提交的内容合并到master上面。

  1. 在master分支上操作:
sh
mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (order)
$ git checkout master
Switched to branch 'master'

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master)
$ vi c.txt

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master)
$ git add c.txt
warning: in the working copy of 'c.txt', LF will be replaced by CRLF the next time Git touches it

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master)
$ git commit -m "#Issue#5435 提交c.txt"
[master 764f7a5] #Issue#5435 提交c.txt
 1 file changed, 1 insertion(+)
 create mode 100644 c.txt
  1. 在order分支上操作开发:
sh
mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master)
$ git checkout order
Switched to branch 'order'

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (order)
$ vi c.txt

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (order)
$ git add c.txt
warning: in the working copy of 'c.txt', LF will be replaced by CRLF the next time Git touches it

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (order)
$ git commit -m "Issue#54534 开发完毕c.txt"
[order ed3dd88] Issue#54534 开发完毕c.txt
 1 file changed, 1 insertion(+)
 create mode 100644 c.txt
  1. 合并order分支内容到master, 需要注意要合并的目标分值,首先要切换过去:
sh
mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (order)
$ git checkout master
Switched to branch 'master'

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master)
$ git merge order
Auto-merging c.txt
CONFLICT (add/add): Merge conflict in c.txt
Automatic merge failed; fix conflicts and then commit the result. 

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master|MERGING)
$

此时git已经提示我们的代码有冲突了,当前master分支处于MERGING状态,我们需要进行手动人工处理冲突,编辑冲突文件保存后再提交:
Alt text 手动修改后,具体开发中看实际情况,这里修改将每个分支的内容都保留:
Alt text

sh
mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master|MERGING)
$ git add c.txt

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master|MERGING)
$ git commit -m "解决了冲突"
[master 8b7b6e4] 解决了冲突

mi@JieBaBa-PC MINGW64 /f/learn_git/git_demo1 (master)
$

可以看到当前已经不是合并中的状态了。