为什么要有分支呢,有分支的话让多人可以进行更高效的开发。

查看分支,分支一览表

$ git branch
* master
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)

只有这一个分支,再master前面有个*号,表示当前所在的分支。

创建分支,切换分支 git checkout -b

#创建并切换分支
$ git checkout -b feature-A
Switched to a new branch 'feature-A'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ #或者执行下面的连续两条是同样的效果
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git branch feature-A
fatal: A branch named 'feature-A' already exists.
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git checkout feature-A
Already on 'feature-A'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git branch
* feature-Amaster
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ #如果在分支 feature-A下进行如上述master的操作,那么称为培育分支,来实际操作下$ vi READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git add READM.md
warning: LF will be replaced by CRLF in READM.md.
The file will have its original line endings in your working directory.
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git commit  -m "Add feature-A"
[feature-A warning: LF will be replaced by CRLF in READM.md.
The file will have its original line endings in your working directory.
1eff5aa] Add feature-A
warning: LF will be replaced by CRLF in READM.md.
The file will have its original line endings in your working directory.1 file changed, 2 insertions(+)
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ #修改分支feature-A算是完成了,看下master分支是否受到影响了
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git che
checkout      cherry        cherry-pick
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git che
checkout      cherry        cherry-pick
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git checkout master
Switched to branch 'master'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$ cat READM.md
hello world !
#get some diff
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#重新切换为feature-A
$ git checkout feature-A
Switched to branch 'feature-A'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ cat READM.md
hello world !
#get some diff-feature-A
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$

特性分支

特性分支的概念是为了集中实现单一特性,除此之外不进行任何作业的分支,再日常开发中,往往会创建数个特性分支,同时在此之外保留一个随时可以发布软件的稳定分支,一般是master。

针对某个特性分支,一般为了实现某个功能,除此之外不进行任何作业,即便在开发过程中发现了bug,也需要创建新的分支,在新分支中进行修正。

主干分支

一般配置在正式环境中,需要tag标签,同时管理多个版本发布,所以主干分支也有多个。

git merge 合并分支

Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ #切换到主干分支
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-A)
$ git checkout master
Switched to branch 'master'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$ git checkout master
Already on 'master'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#多次切换会提示
$ git checkout master
Already on 'master'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#用这个命令进行合并,执行完成后会弹出一个文本要求你进行编辑,若不需要直接进行保存即可,保存完毕后弹出下面的提示
$ git merge --no-ff feature-A
Merge made by the 'recursive' strategy.READM.md | 2 ++1 file changed, 2 insertions(+)
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$

以图表形式查看分支

$ #以图表形式查看分支
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$ git log --graph
*   commit bc39e02e659481efad23e28cc893da33e4ad2283
|\  Merge: 478c9d6 1eff5aa
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 18:37:04 2016 +0800
| |
| |     Merge branch 'feature-A'
| |
| * commit 1eff5aac5583332f40846edfffaee45e86c18d18
|/  Author: Thinker young <x695@qq.com>
|   Date:   Wed Mar 9 20:46:18 2016 +0800
|
|       Add feature-A
|
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
|     Add index
|
* commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ffAuthor: Thinker young <x695@qq.com>Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$

回溯历史版本

#查看下版本信息
$ git log --graph
*   commit bc39e02e659481efad23e28cc893da33e4ad2283
|\  Merge: 478c9d6 1eff5aa
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 18:37:04 2016 +0800
| |
| |     Merge branch 'feature-A'
| |
| * commit 1eff5aac5583332f40846edfffaee45e86c18d18
|/  Author: Thinker young <x695@qq.com>
|   Date:   Wed Mar 9 20:46:18 2016 +0800
|
|       Add feature-A
|
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
|     Add index
|
* commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ffAuthor: Thinker young <x695@qq.com>Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#回退到创建feature-A之前的版本
$ git reset --hard 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
HEAD is now at 478c9d6 Add index
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#查看日志,回退成功
$ git log --graph
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
|     Add index
|
* commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ffAuthor: Thinker young <x695@qq.com>Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#如果我后悔了,想撤销刚才的操作,那么可以看下整个仓库的日志,找到当时的哈希值,再次进行回退即可
$ git reflog
478c9d6 HEAD@{0}: reset: moving to 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
bc39e02 HEAD@{1}: merge feature-A: Merge made by the 'recursive' strategy.
478c9d6 HEAD@{2}: checkout: moving from master to master
478c9d6 HEAD@{3}: checkout: moving from master to master
478c9d6 HEAD@{4}: checkout: moving from feature-A to master
1eff5aa HEAD@{5}: checkout: moving from master to feature-A
478c9d6 HEAD@{6}: checkout: moving from feature-A to master
1eff5aa HEAD@{7}: checkout: moving from master to feature-A
478c9d6 HEAD@{8}: checkout: moving from feature-A to master
1eff5aa HEAD@{9}: commit: Add feature-A
478c9d6 HEAD@{10}: checkout: moving from feature-A to feature-A
478c9d6 HEAD@{11}: checkout: moving from master to feature-A
478c9d6 HEAD@{12}: commit: Add index
05791aa HEAD@{13}: commit (initial): Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$ git reset --hard bc39e02
HEAD is now at bc39e02 Merge branch 'feature-A'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#回退成功,查看版本历史
$ git log --graph
*   commit bc39e02e659481efad23e28cc893da33e4ad2283
|\  Merge: 478c9d6 1eff5aa
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 18:37:04 2016 +0800
| |
| |     Merge branch 'feature-A'
| |
| * commit 1eff5aac5583332f40846edfffaee45e86c18d18
|/  Author: Thinker young <x695@qq.com>
|   Date:   Wed Mar 9 20:46:18 2016 +0800
|
|       Add feature-A
|
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
|     Add index
|
* commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ffAuthor: Thinker young <x695@qq.com>Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$

复杂点的版本回溯

  1. 先将版本回退到创建分支A之前的状态,接着创建分支feature-B,修改README.md文件,在原来修改feature-A的位置,然后直接提交修改。
  2. 将版本回溯合并分支A之后的状态,然后将B提交,会产生冲突,解决冲突。
#创建分支B
$ git branch feature-B
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$ git checkout feature-B
Switched to branch 'feature-B'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
$ ls
READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
$ vi READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
$ cat READM.md
hello world !
#get some diff-feature-B
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
$ #看下日志
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
$ git log
commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
Author: Thinker young <x695@qq.com>
Date:   Wed Mar 9 20:29:28 2016 +0800Add index
commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ff
Author: Thinker young <x695@qq.com>
Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
$ # 进行提交:先添加,再提交,永远都是这个样子
$ git add READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
$ git commit
[feature-B f6937f8] Fix B1 file changed, 2 insertions(+)
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
$ git log
commit f6937f8dc33977d589a26d7a50c8c35d2eb0138f
Author: Thinker young <x695@qq.com>
Date:   Fri Mar 11 19:42:55 2016 +0800Fix B
commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
Author: Thinker young <x695@qq.com>
Date:   Wed Mar 9 20:29:28 2016 +0800Add index
commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ff
Author: Thinker young <x695@qq.com>
Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
#看下仓库更改历史
$ git reflog
f6937f8 HEAD@{0}: commit: Fix B
478c9d6 HEAD@{1}: checkout: moving from master to feature-B
478c9d6 HEAD@{2}: reset: moving to 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
bc39e02 HEAD@{3}: reset: moving to bc39e02
478c9d6 HEAD@{4}: reset: moving to 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
bc39e02 HEAD@{5}: reset: moving to bc39e02
478c9d6 HEAD@{6}: reset: moving to 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
bc39e02 HEAD@{7}: merge feature-A: Merge made by the 'recursive' strategy.
478c9d6 HEAD@{8}: checkout: moving from master to master
478c9d6 HEAD@{9}: checkout: moving from master to master
478c9d6 HEAD@{10}: checkout: moving from feature-A to master
1eff5aa HEAD@{11}: checkout: moving from master to feature-A
478c9d6 HEAD@{12}: checkout: moving from feature-A to master
1eff5aa HEAD@{13}: checkout: moving from master to feature-A
478c9d6 HEAD@{14}: checkout: moving from feature-A to master
1eff5aa HEAD@{15}: commit: Add feature-A
478c9d6 HEAD@{16}: checkout: moving from feature-A to feature-A
478c9d6 HEAD@{17}: checkout: moving from master to feature-A
478c9d6 HEAD@{18}: commit: Add index
05791aa HEAD@{19}: commit (initial): Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-B)
#切换到主分支,进行回滚,这里的操作只是影响master分支,对分支B里面的改动没有任何影响,分支B还是分支B,不会影响到master分支
$ git checkout -
Switched to branch 'master'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#master分支回滚到合并A分支之后的状态
$ git reset --hard bc39e02
HEAD is now at bc39e02 Merge branch 'feature-A'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#看下日志
$ git log --graph
*   commit bc39e02e659481efad23e28cc893da33e4ad2283
|\  Merge: 478c9d6 1eff5aa
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 18:37:04 2016 +0800
| |
| |     Merge branch 'feature-A'
| |
| * commit 1eff5aac5583332f40846edfffaee45e86c18d18
|/  Author: Thinker young <x695@qq.com>
|   Date:   Wed Mar 9 20:46:18 2016 +0800
|
|       Add feature-A
|
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
|     Add index
|
* commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ffAuthor: Thinker young <x695@qq.com>Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#在尝试合并分支B前,看下分支的情况
$ git branchfeature-Afeature-B
* master
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#目前git的回退只是针对某个版本绘图,创建的分支不会丢失
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)#合并分支B,提示有冲突,无法进行自动合并
$ git merge --no-ff feature-B
Auto-merging READM.md
CONFLICT (content): Merge conflict in READM.md
Automatic merge failed; fix conflicts and then commit the result.
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master|MERGING)
$ cat READM.md
hello world !
#get some diff
<<<<<<< HEAD-feature-A
=======-feature-B
>>>>>>> feature-B
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master|MERGING)
$
#进行消除冲突,直接vi编辑这个文件
$ vi READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master|MERGING)
$ cat READM.md
hello world !
#get some diff-feature-A-feature-B
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master|MERGING)
$ #再次提交
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master|MERGING)
$ git add READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master|MERGING)
$ git commit -m "fix confict"
[master 43b9aec] fix confict
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
#查看下日志
$ git log --graph
*   commit 43b9aeca122aaeac48565751af1d57a5c435ac77
|\  Merge: bc39e02 f6937f8
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 20:01:46 2016 +0800
| |
| |     fix confict
| |
| * commit f6937f8dc33977d589a26d7a50c8c35d2eb0138f
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 19:42:55 2016 +0800
| |
| |     Fix B
| |
* |   commit bc39e02e659481efad23e28cc893da33e4ad2283
|\ \  Merge: 478c9d6 1eff5aa
| |/  Author: Thinker young <x695@qq.com>
|/|   Date:   Fri Mar 11 18:37:04 2016 +0800
| |
| |       Merge branch 'feature-A'
| |
| * commit 1eff5aac5583332f40846edfffaee45e86c18d18
|/  Author: Thinker young <x695@qq.com>
|   Date:   Wed Mar 9 20:46:18 2016 +0800
|
|       Add feature-A
|
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
|     Add index
|
* commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ffAuthor: Thinker young <x695@qq.com>Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)

修改提交信息 git commit –amend

修改注释,上面了将注释修改成 fix conflict ,实际是fix-B的合并,解决合并时发生的冲突只是过程之一,标记不对,需要重新修改


$ git commit --amend
[master 0158cdf] Merage branch feature-BDate: Fri Mar 11 20:01:46 2016 +0800
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$ git log --graph
*   commit 0158cdfa04a60005b146786017a0d95b985afa84
|\  Merge: bc39e02 f6937f8
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 20:01:46 2016 +0800
| |
| |     Merage branch feature-B
| |
| * commit f6937f8dc33977d589a26d7a50c8c35d2eb0138f
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 19:42:55 2016 +0800
| |
| |     Fix B
| |
* |   commit bc39e02e659481efad23e28cc893da33e4ad2283
|\ \  Merge: 478c9d6 1eff5aa
| |/  Author: Thinker young <x695@qq.com>
|/|   Date:   Fri Mar 11 18:37:04 2016 +0800
| |
| |       Merge branch 'feature-A'
| |
| * commit 1eff5aac5583332f40846edfffaee45e86c18d18
|/  Author: Thinker young <x695@qq.com>
|   Date:   Wed Mar 9 20:46:18 2016 +0800
|
|       Add feature-A
|
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
|     Add index
|
* commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ffAuthor: Thinker young <x695@qq.com>Date:   Wed Mar 9 20:06:28 2016 +0800
:

git rebase -i 压缩历史

在合并特性分支之前,如果发现已经提交的内容有拼写错误,先提交一个修改,将这个修改应用到前一个有错误的提交中,压缩成一个历史记录。

$ #创建一个分支C
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (master)
$ git checkout -b feature-C
Switched to a new branch 'feature-C'
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)$ vi READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ cat READM.md
hello world !
#get some diff-feature-A-feature-B-frature-C
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
#多了两行,一个空行,一个有字行
$ git diff
diff --git a/READM.md b/READM.md
index d4c4875..04a5e98 100644
--- a/READM.md
+++ b/READM.md
@@ -3,3 +3,5 @@ hello world !-feature-A-feature-B
+       -frature-C
+
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ # 直接提交
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git commit -a
[feature-C 20f95ff] Add feature-C1 file changed, 2 insertions(+)
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
#删除空行,再次提交
$ vi READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git commit -a
[feature-C 8cb86a8] delete null row on feature-C1 file changed, 1 deletion(-)
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git diff
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ cat READM.md
hello world !
#get some diff-feature-A-feature-B-frature-C
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git diff
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
#再次修改,修正错误单词
$ vi READM.md
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git diff
diff --git a/READM.md b/READM.md
index dc2def4..8531ab0 100644
--- a/READM.md
+++ b/READM.md
@@ -3,4 +3,4 @@ hello world !-feature-A-feature-B
-       -frature-C
+       -feature-C
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
#此类的修改叫做typp
$ git commit -am "Fix typo"
[feature-C 9c73c7c] Fix typo1 file changed, 1 insertion(+), 1 deletion(-)
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git diff
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ #现在修改了三次(1.首次创建2.删除空行3,修改拼写错误),那么我们将这三次的修改历史弄成一次历史
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git log
commit 9c73c7c92d58c4fb005239edec00fe4b7eba5e75
Author: Thinker young <x695@qq.com>
Date:   Fri Mar 11 20:24:40 2016 +0800Fix typo
commit 8cb86a88a1d95dea0d17a58a7870d5219322ec2a
Author: Thinker young <x695@qq.com>
Date:   Fri Mar 11 20:19:25 2016 +0800delete null row on feature-C
commit 20f95ff9e1aa9bb727991cae274826ea0f9aa13d
Author: Thinker young <x695@qq.com>
Date:   Fri Mar 11 20:18:43 2016 +0800Add feature-C
commit 0158cdfa04a60005b146786017a0d95b985afa84
Merge: bc39e02 f6937f8
Author: Thinker young <x695@qq.com>
Date:   Fri Mar 11 20:01:46 2016 +0800Merage branch feature-B
commit f6937f8dc33977d589a26d7a50c8c35d2eb0138f
Author: Thinker young <x695@qq.com>
Date:   Fri Mar 11 19:42:55 2016 +0800Fix B
commit bc39e02e659481efad23e28cc893da33e4ad2283
Merge: 478c9d6 1eff5aa
Author: Thinker young <x695@qq.com>
Date:   Fri Mar 11 18:37:04 2016 +0800Merge branch 'feature-A'
commit 1eff5aac5583332f40846edfffaee45e86c18d18
Author: Thinker young <x695@qq.com>
Date:   Wed Mar 9 20:46:18 2016 +0800Add feature-A
commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
Author: Thinker young <x695@qq.com>
Date:   Wed Mar 9 20:29:28 2016 +0800Add index
commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ff
Author: Thinker young <x695@qq.com>
Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git reflog
9c73c7c HEAD@{0}: commit: Fix typo
8cb86a8 HEAD@{1}: commit: delete null row on feature-C
20f95ff HEAD@{2}: commit: Add feature-C
0158cdf HEAD@{3}: checkout: moving from master to feature-C
0158cdf HEAD@{4}: commit (amend): Merage branch feature-B
87210d3 HEAD@{5}: commit (amend): Mer age branch feature-B
43b9aec HEAD@{6}: commit (merge): fix confict
bc39e02 HEAD@{7}: reset: moving to bc39e02
478c9d6 HEAD@{8}: checkout: moving from feature-B to master
f6937f8 HEAD@{9}: commit: Fix B
478c9d6 HEAD@{10}: checkout: moving from master to feature-B
478c9d6 HEAD@{11}: reset: moving to 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
bc39e02 HEAD@{12}: reset: moving to bc39e02
478c9d6 HEAD@{13}: reset: moving to 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
bc39e02 HEAD@{14}: reset: moving to bc39e02
478c9d6 HEAD@{15}: reset: moving to 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
bc39e02 HEAD@{16}: merge feature-A: Merge made by the 'recursive' strategy.
478c9d6 HEAD@{17}: checkout: moving from master to master
478c9d6 HEAD@{18}: checkout: moving from master to master
478c9d6 HEAD@{19}: checkout: moving from feature-A to master
1eff5aa HEAD@{20}: checkout: moving from master to feature-A
478c9d6 HEAD@{21}: checkout: moving from feature-A to master
1eff5aa HEAD@{22}: checkout: moving from master to feature-A
478c9d6 HEAD@{23}: checkout: moving from feature-A to master
1eff5aa HEAD@{24}: commit: Add feature-A
478c9d6 HEAD@{25}: checkout: moving from feature-A to feature-A
478c9d6 HEAD@{26}: checkout: moving from master to feature-A
478c9d6 HEAD@{27}: commit: Add index
05791aa HEAD@{28}: commit (initial): Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)#下面的这个命令弄错了#合并前两行:将最后一行得pick 改成f,这样的效果是相当于删除了单词拼写错误这个历史
$ git rebase -i HEAD~3
[detached HEAD 7cec57f] delete null row on feature-CDate: Fri Mar 11 20:19:25 2016 +08001 file changed, 1 insertion(+), 2 deletions(-)
Successfully rebased and updated refs/heads/feature-C.
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ git log --graph
* commit 7cec57f0d26fca208a5724d0a02d8181d2841a91
| Author: Thinker young <x695@qq.com>
| Date:   Fri Mar 11 20:19:25 2016 +0800
|
|     delete null row on feature-C
|
* commit 20f95ff9e1aa9bb727991cae274826ea0f9aa13d
| Author: Thinker young <x695@qq.com>
| Date:   Fri Mar 11 20:18:43 2016 +0800
|
|     Add feature-C
|
*   commit 0158cdfa04a60005b146786017a0d95b985afa84
|\  Merge: bc39e02 f6937f8
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 20:01:46 2016 +0800
| |
| |     Merage branch feature-B
| |
| * commit f6937f8dc33977d589a26d7a50c8c35d2eb0138f
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 19:42:55 2016 +0800
| |
| |     Fix B
| |
* |   commit bc39e02e659481efad23e28cc893da33e4ad2283
|\ \  Merge: 478c9d6 1eff5aa
| |/  Author: Thinker young <x695@qq.com>
|/|   Date:   Fri Mar 11 18:37:04 2016 +0800
| |
| |       Merge branch 'feature-A'
| |
| * commit 1eff5aac5583332f40846edfffaee45e86c18d18
|/  Author: Thinker young <x695@qq.com>
|   Date:   Wed Mar 9 20:46:18 2016 +0800
|
|       Add feature-A
|
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
|     Add index
|
* commit 05791aaa9acdcc8420ae8e61827ee1f41fbb45ffAuthor: Thinker young <x695@qq.com>Date:   Wed Mar 9 20:06:28 2016 +0800Frist commit
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)#依次,再处理就可以了
$ git rebase -i HEAD~2
[detached HEAD f9bdd4c] Add feature-CDate: Fri Mar 11 20:18:43 2016 +08001 file changed, 1 insertion(+)
Successfully rebased and updated refs/heads/feature-C.
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)$ git log --graph
* commit f9bdd4c3faaff82778a40e7beac165741d9c0aa4
| Author: Thinker young <x695@qq.com>
| Date:   Fri Mar 11 20:18:43 2016 +0800
|
|     Add feature-C
|
*   commit 0158cdfa04a60005b146786017a0d95b985afa84
|\  Merge: bc39e02 f6937f8
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 20:01:46 2016 +0800
| |
| |     Merage branch feature-B
| |
| * commit f6937f8dc33977d589a26d7a50c8c35d2eb0138f
| | Author: Thinker young <x695@qq.com>
| | Date:   Fri Mar 11 19:42:55 2016 +0800
| |
| |     Fix B
| |
* |   commit bc39e02e659481efad23e28cc893da33e4ad2283
|\ \  Merge: 478c9d6 1eff5aa
| |/  Author: Thinker young <x695@qq.com>
|/|   Date:   Fri Mar 11 18:37:04 2016 +0800
| |
| |       Merge branch 'feature-A'
| |
| * commit 1eff5aac5583332f40846edfffaee45e86c18d18
|/  Author: Thinker young <x695@qq.com>
|   Date:   Wed Mar 9 20:46:18 2016 +0800
|
|       Add feature-A
|
* commit 478c9d6a50b3d44e3c57d534b899242e2dbc2a8a
| Author: Thinker young <x695@qq.com>
| Date:   Wed Mar 9 20:29:28 2016 +0800
|
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)
$ cat READM.md
hello world !
#get some diff-feature-A-feature-B-feature-C
Administrator@YOUNG-PC MINGW64 ~/HelloWorld (feature-C)#最后合并到master仓库

Git概念:什么是分支相关推荐

  1. git常用命令及分支简介

    1.git基本命令 1)git add 将想要快照的内容写入缓存区 2)git status -s "AM" 状态的意思是,这个文件在我们将它添加到缓存之后又有改动 3)git c ...

  2. Git指令2 - 操作分支

    Git指令2 - 操作分支 Git简单基本操作指令集合 Git分支 分支作用: 多人协作开发,防止相互干扰,提高协同开发的体验 初始化本地仓库时,默认创建了master主分支 主分支:作用 用来保存和 ...

  3. GIT项目管理工具(part10)--分支管理

    本系列BLOG为鄙人学习GIT时的学习笔记.前一个知识点引出后一个知识点,后一个例子接着前一个例子. 文章目录 分支管理 1.查看分支情况 2.创建分支 3.切换工作分支 4.合并分支 5.删除分支 ...

  4. git 怎么备份本地分支_git 入门教程之协同开发

    前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协同开发的基础,也是代码备份的 ...

  5. Git学习系列(五)分支管理详解

    分支管理在咱们实际工作中经常用到,因此掌握分支对于咱们从事移动开发并且使用到了Git这样的分布式版本管理工具来说是很有必要的.比如当你饿了的时候,甲帮你做饭,一帮你烧菜: 当然你也可以自己做饭烧菜.但 ...

  6. 史上最全“Git插件+码云+分支” 使用步骤详解

    版本控制也就那么回事!!! 史上最全"Git插件+码云+分支" 使用步骤详解 1.准备Git: 1.1 下载Git到本地: 首先在华为镜像云里面搜索"Git-For-Wi ...

  7. git概念、原理、使用

    git和Github 概念 Git --- 版本控制工具(命令). 工具介绍官方网站:http://git-scm.com 工具下载地址:http://git-scm.com/download/ gi ...

  8. Git概念及工作原理总结

    Git是分布式版本控制系统.Github和华为等均使用Git作为代码管理工具.之前在工作中比较常用到的是克隆.代码提交拉取.解决回合冲突.代码回滚等.在实际的工作中,可能回合时冲突及版本回退的情况较多 ...

  9. GIT如何查看本地分支与远程分支的关联配置(git branch --set-upstream)

    为什么80%的码农都做不了架构师?>>>    git本地新建一个分支后,必须要做远程分支关联.如果没有关联, git 会在下面的操作中提示你显示的添加关联.关联目的是如果在本地分支 ...

  10. git创建与合并分支

    创建与合并分支 在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分 支,即master分支.HEAD严格来 ...

最新文章

  1. css游戏代码_介绍CSSBattle-第一个CSS代码搜寻游戏
  2. EXCEL中SUMIF函数介绍
  3. java api中最常用的五个包_java 5 个常用的api包
  4. 深入react技术栈(9):表单
  5. centos安装mysql初始化没有密码_centos 6 初次安装mysql 的密码初始化登陆问题
  6. spring源码解析bean定义五ContextNamespaceHandler一
  7. Apache+tomcat集群
  8. 修改最新版谷歌浏览器编码方式
  9. 如何看出一个程序员的技术能力和水平?
  10. ORACLE RAC 一节点出现Suspending MMON slave action kewrmrfsa_ for 82800 seconds
  11. 萤石云视频Android SDK接口使用说明
  12. python将数值存入excel指定单元格
  13. swr_convert音频重采样介绍
  14. 等额本金贷款和等额本息贷款计算和比较
  15. document.forms[0].submit();和document.forms[0].action = ““;问题
  16. java 字节码操作图和JAVAssist库图
  17. 小小几张图,把深度学习讲透彻
  18. 交通灯管理系统分析(张孝祥老师)
  19. Iwebshop 详细介绍
  20. 不知道自己适合什么工作,对未来迷茫怎么办?

热门文章

  1. 现代 Web 开发的现状与未来
  2. 冬季12种食物减肥巧妙止饿
  3. 计算机专业如何写毕业论文-八大技巧
  4. 大学计算机系三年论文6000字,计算机论文6000字范文_计算机论文_计算机应用论文...
  5. 一、ECMAScript 6 简介
  6. php templete什么意思,PHP设计模式之模板方法模式定义与用法详解
  7. 湖南省第六届大学生计算机程序设计竞赛---弟弟的作业
  8. VIT ①Python based
  9. 中科深谷开源智能两轮平衡车
  10. DAC0832转换器