rebase的广泛用法,分支然后右击

1.去除分支

git rebase 命令
git rebase是一个要命管用的通令,但或许熟知它的人可比少。上面介绍一下git
rebase的常见用法。

新建一个分段 A 后,要想把 A 分支删除掉,只需跳到另一个分层上去,选中 A
分支然后右击,在弹出的菜单栏中当选 【删除 A 分支】即可;

git rebase branch

俺们在作分支合并的时候最常用的就是merge操作,不过进行merge之后,会生出一个新的commit,例如:Merge
branch
‘branch-1’。那些commit把多个branch合并到一头并作了一次新的提交。然则,尽管应用rebase的话就会防止那么些问题。大家来看一个例证,上边是自家分别用merge和rebase之后的git
log。

* 5eaa8f8 (HEAD -> master) commit 8
* fdadab0 commit 7
* 690e761 (branch-2) commit 10
* f8bcb41 commit 9
*   a1e3e91 Merge branch 'branch-1'
|\  
| * da2448e (branch-1) commit 6
| * c4ef94a commit 5
* | c70cc70 commit 4
* | 31fde3f commit 3
|/  
* faf3890 commit 2
* 0f1f7a8 commit 1

自身的操作历史如下:首先,在master创制进行了两回提交(commit 1, commit
2)-> checkout新的道岔branch 1 -> 在master上开展一回提交(commit
3, commit 4)-> 在branch 1上展开五遍提交(commit 5, commit 6)->
checkout到master,执行git merge
branch-1。然后merge完毕后便发生了a1e3e91 Merge branch 'branch-1'本条提交。

随后大家演示rebase,checkout 新支行branch 2 ->
在master上开展三遍提交(commit 7,commit 8)-> checkout到branch
2上,举办一遍提交(commit 9, commit 10)-> checkout到master执行git
rebase branch-2。这时大家来看主干分支,并从未发生多余的交付。

git rebase
branch-2命令执行的时候会把”master”(即当前支行)分支里的每个提交(commit)撤销掉,并且把它们临时保存为补丁patch(这几个补丁放到”.git/rebase”目录中),然后把”master”分支更新到新型的”branch-2″分支,最终把保存的那几个补丁应用到”master”分支上。这么些新应用的commit将会是新的commit,commit号会变。上例中commit
7,commit
8的commit号已经变了(原有的commit号分别是:cc4df2d,c86a6da)。

 

git pull –rebase

当大家从远程拉代码的时候即便采纳:git pull
–rebase,则会以rebase的法门举办翻新,而不是默许的merge。

2.在分层下建一个文件夹

git rebase –interactive

git rebase用来修补commit,比如修改某次提交,修改commit
message,squash。该命令可以简写为git rebase
-i。执行该命令以前须求当前branch已经设定过upstream,使用git branch --set-upstream-to=<remote>/<branch>可以设定upstream。执行rebase
-i命令后的并行如下,我早已指向commit做了改动:

GNU nano 2.5.3                    File: /home/focusj/3stone/diamond/.git/rebase-merge/git-rebase-todo                                                

pick c4a4b5d test
squash c4a4b6d test
drop c4a4b7d test

# Rebase 0df8fd7..c4a4b5d onto 0df8fd7 (1 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
                                                                 [ Read 20 lines ]
^G Get Help     ^O Write Out    ^W Where Is     ^K Cut Text     ^J Justify      ^C Cur Pos      ^Y Prev Page    M-\ First Line  M-W WhereIs Next
^X Exit         ^R Read File    ^\ Replace      ^U Uncut Text   ^T To Spell     ^_ Go To Line   ^V Next Page    M-/ Last Line   M-] To Bracket

上面说下多少个command的用途:
p:保留当前commit,不做处理。
r:修改commit message。
e:修改这几个commit作的改动。比如某个commit漏掉了何等布置,想要再交付新的公文;
或者去除一些不行代码,等等都足以用那些命令。
s:保留这么些commit的修改,但是把它合并到前一个commit中。
d:删除commit。
我们运用命令,只需求把命令放到mouge commit前面保存退出既能生效。


write on 2017-1-3

左上的图片 1然后弹出选框,在【新支行】处建一个
Develop 的文本夹,在 Delvelop 文件夹下新建一个 feature
分支可以在【新支行】的栏目输入:Develop/feature ,即可;

 

3.集合后的复原

例如:你在此时此刻的 A 分支的 a 节点,不过你鼠标放在 B 分支的一个 b
节点上,在 B 分支的 b 节点上右击,选中【合并】,会将 B
分支节点上的情节统一到 A 分支上,形成一个在 A 分支上的新节点 c。

当你误合并时,选中
a,b,c中的任意一个节点,选中导航栏中的【仓库】->【重置】,即可苏醒原样,像没发出同样。

 

4.将 xx
重置到这一次提交

master分支上有 a->b->c->d->e 5 个节点,现再在 e
节点,鼠标放在 d 节点上,右击鼠标出现弹框选中【将 master
重置到这一次提交】,会冒出在 d 提交的功底上内容
加上现在转变的内容,代码不会改变。固然你提交到 e 节点,但是鼠标放在 a
节点,右击鼠标出现弹框选中【将 master
重置到这一次提交】,也会将你的道岔回到 a 节点上,不过代码不变。

留意:假使此时你点击导航栏亩的【仓库】->【重置】会把您写的代码全清除掉,只有你眼前交由的一部分,慎重啊! 

 

5.提交回滚

有 “master 分支->1 master 拨出->2 master” 分支3个节点,提交后变为
“master 分支->1 master 分段->2 master 分段->3 master分支” 分支
4个节点,选中 “2 master 分支” 节点,将鼠标放在 “3 master”
节点然后右击选中【提交回滚】,会油然则生那种警告:

1 HEAD detached at 464855f
2 nothing to commit, working directory clean

 

意思是:

暌违COO464855 f
尚无怎么可交付的,工作目录是干净的

不会改变。

发轫景况:

图片 2

 

所以鼠标选中 ”3 master分支” 节点,然后右击选中【提交回滚】,代码会返回”2 master 分层” 提交的情状,变为:

图片 3

也就是 “2 master 支行” 提交代码的情景。

然后写一段与 “3 master分支” 一样的代码,再度命名分支名为 “3
master分支”,变为:

 

图片 4 

6.代码rebase(变基)

git
rebase用于把一个分段的改动合并到当下分支.

假设你现在在 master 分支上,已有 a, b,
c, d, e, f 多少个节点,在 b 节点新建一个分层为 mywork:

1 $ git checkout -b branch

 

在 branch 分支做一次提交:

1 $ git add .
2 
3 $ git commit -m "1 代码 branch"
4 
5 $ git add .
6 
7 $ git commit -m "2 代码 branch"

 

若果您想让”master”分支历史看起来像没有通过其他合并一样,你恐怕可以用 git
rebase,切换来 master:

//这几个命令会把你的”branch”分支里的每个提交(commit)撤废掉,并且把它们临时保存为补丁(patch)(那一个补丁放到”.git/rebase”目录中),然后把”branch”分支更新
为最新的”master”分支,最终把保存的这几个补丁应用到”master”分支上。

1 $ git checkout master
2 
3 $ git rebase branch

 

此时会有争执,解决争论后拔取:

1 $ git rebase --continue

 

接下来交到,中间会再度出现争辨,再度行使:

1 $ git rebase --continue

 

 就好了!

若中途弃 rebase,可以行使:

$ git rebase –aborkt

其余,我们在利用git pull命令的时候,可以拔取–rebase参数,即git pull
–rebase,那里代表把你的当地当前支行里的各种提交(commit)裁撤掉,并且把它们临时
保存为补丁(patch)(这个补丁放到”.git/rebase”目录中),然后把地面当前支行更新
为最新的”origin”分支,最终把保存的那几个补丁应用到当地当前支行上。

参见资料:rebase简介

 

7.往往交由的联结

1.先查看有多少次提交:

$ git log

可以见到下边有4个:

 图片 5

 

若对 4 个拓展付出合并,输入:

1 $ git rebase -i head~4

 

接下来会弹出一个 vim 编辑界面,会看到编辑界面分为两片段:

pick xxxx    XXXX

pick xxxx    XXXX

pick xxxx    XXXX

pick xxxx    XXXX

# . . . . .  . . . 

# . . . . .  . . . 

.

.

.

.

# . . . . .  . . . 

 带 # 的都是注释部分,把要统一的改为 【pick】改为 【s】或者
【squash】即可,然后点击 esc,再输入 :wq 即可,会跳入另一 vim
编辑界面,修改其中的交给 message,其中第二个提交 message
回作为数十次付出合并后的新的交由 message,如:

1 第一个message为:1.0 创建 master,//下面不修改也行
2 
3 第2个message为:1
4 
5 第3个message为:1
6 
7 第4个message为:1
8 
9 第5个message为:1

 

接下来,输入::wq ,退出编辑界面即可,相会到一个叫 【1.0 创设master】的分支节点,只剩它一个了。

 

8.撤回提交

参见资料:打消提交