Git重点:Git分支管理
1、主要功能
列出、创建或删除分支
2、概述
git branch [--color[=<when>] |--no-color] [--show-current]
[-v [--abbrev=<n> |--no-abbrev] ]
[--column[=<options>] | --no-column][--sort=<key>]
[--合并 [<commit>]][--no-merged [<commit>]]。
[--包含[<commit>]][--no-contains [<commit>]] [--contains [<commit>]]
[--points-at <object>] [--format=<format>]。
[(-r | --remotes) | (-a | --all) [--列表] [<pattern>…]
git branch [--track |-no-track] [-f] <branchname> [<start-point>]。
git branch (-set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-c | -C) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>…
git branch --edit-description [<branchname>])
3、案例分析
3-1、创建测试目录
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog
$ mkdir gitdemo
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog
$ cd gitdemo
#执行 git init 的时候,默认情况下 Git 就会为你创建 master 分支。
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo
$ git init
Initialized empty Git repository in D:/FrontEnd/blog/gitdemo/.git/
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ touch README .gitignore
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git add README
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git commit -m "first submit"
[master (root-commit) ca12dd8] first submit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README
3-2、列出分支
没有参数时,git branch 会列出你在本地的分支。tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git branch
* master
用 git checkout (branch) 切换到我们要修改的分支。切换到 testing 分支的时候,我们添加的新文件 test.txt 被移除了。切换回 master 分支的时候,它们又重新出现了。
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ ls
README
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ echo "find me" > test.txt
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git add .
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git commit -m "add text.txt"
[master 5bdb45e] add text.txt
2 files changed, 1 insertion(+)
create mode 100644 .gitignore
create mode 100644 test.txt
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ ls
README test.txt
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git checkout testing
Switched to branch 'testing'
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (testing)
$ ls
README
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (testing)
$ git checkout master
Switched to branch 'master'
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ ls
README test.txt
(这里跳出的 warning: LF will be replaced by CRLF in test.txt.,快乐李同学(李俊德-大连理工大学)给出了较完整的解释,由于是案例,不需要过多调整。)
可以使用 git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作。
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git checkout -b newtest
Switched to a new branch 'newtest'
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (newtest)
$ git rm test.txt
rm 'test.txt'
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (newtest)
$ ls
README
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (newtest)
$ touch text.php
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (newtest)
$ git add .
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (newtest)
$ git commit -am "removed test.txt、add text.php"
[newtest 7d669af] removed test.txt、add text.php
2 files changed, 1 deletion(-)
delete mode 100644 test.txt
create mode 100644 text.php
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (newtest)
$ ls
README text.php
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (newtest)
$ git checkout master
Switched to branch 'master'
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ ls
README test.txt
案例中创建了一个分支,在该分支上移除了一些文件 test.txt,并添加了 text.php 文件,然后切换回我们的主分支,删除的 test.txt 文件又回来了,且新增加的 text.php 不存在主分支中。 使用分支将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。
3-3、删除分支
删除分支命令:
git branch -d (branchname)
删除testing分支
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git branch
* master
newtest
testing
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git branch -d testing
Deleted branch testing (was 24d581e).
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git branch
* master
newtest
3-4、分支合并
合并分支命令:
git merge
将其他分支合并到当前分支中去:
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git branch
* master
newtest
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ ls
README test.txt
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git merge newtest
Updating 5bdb45e..7d669af
Fast-forward
test.txt | 1 -
text.php | 0
2 files changed, 1 deletion(-)
delete mode 100644 test.txt
create mode 100644 text.php
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ ls
README text.php
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git branch
* master
newtest
实例中将 newtest 分支合并到主分支去,test.txt 文件被删除。 合并完后就可以删除分支:
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git branch -d newtest
Deleted branch newtest (was 7d669af).
tmh89@LAPTOP-C6Q7NRN4 MINGW64 /d/FrontEnd/blog/gitdemo (master)
$ git branch
* master
以下是本案例的所有操作内容,合并冲突的案例分析将在下期博客中更新...
404 mkdir gitdemo
405 cd gitdemo
406 git init
407 touch README .gitignore
408 git commit -m "firat submit"
409 git add README
410 git commit -m "firat submit"
411 git branch
412 git branch testing
413 git branch
414 ls
415 echo "find me" > test.txt
416 git add .
417 git commit -m "add text.txt"
418 ls
419 git checkout testing
420 ls
421 git checkout master
422 ls
423 git checkout -b newtest
424 git rm test.txt
425 ls
426 touch text.php
427 git add .
428 git commit -am "removed test.txt、add text.php"
429 ls
430 git checkout master
431 ls
432 git branch
433 git branch -d testing
434 git branch
435 ls
436 git merge newtest
437 ls
438 git branch
439 git branch -d newtest
440 git branch
441 history
参考网站:
1、Git官网:git-branch简介2、Git 分支管理