SourceTree 使用

1.去除分支

git rebase 命令
git rebase是二个不行政管理用的通令,但或然熟习它的人可比少。上面介绍一下git
rebase的大规模用法。

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

git rebase branch

咱俩在作分支合并的时候最常用的就是merge操作,可是实施merge之后,会时有发生叁个新的commit,例如:Merge
branch
‘branch-1’。那么些commit把多个branch合并到一同并作了三遍新的交付。可是,假如采用rebase的话就会幸免这些题材。咱们来看2个事例,上边是本人分别用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.在分层下建3个文书夹

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” 分支二个节点,提交后变为
“master 分支->1 master 分段->2 master 分段->3 master分支” 分支
6个节点,选中 “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 节点新建3个分支为 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

能够看来下边有五个:

 图片 5

 

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

1 $ git rebase -i head~4

 

接下来会弹出3个 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】的支行节点,只剩它3个了。

 

8.注销提交

参见资料:注销提交 

相关文章