Git分支管理及操作基础(1)

242 阅读3分钟

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 分支管理