Git命令-分支操作
1. 创建分支
基本语法:git branch <branch_name>
比如我们创建user分支
sh
$ git branch user
查看我们刚刚创建的分支:
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上面。
- 在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
- 在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
- 合并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状态,我们需要进行手动人工处理冲突,编辑冲突文件保存后再提交: 手动修改后,具体开发中看实际情况,这里修改将每个分支的内容都保留:
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)
$
可以看到当前已经不是合并中的状态了。