爱博体育app手机版SourceTree 使用

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

爱博体育app手机版,本身的操作历史如下:首先,在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

左上的爱博体育app手机版 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

 

意思是:

暌违首席推行官464855 f
从未有过什么可交付的,工作目录是根本的

不会变动。

始于情形:

爱博体育app手机版 2

 

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

爱博体育app手机版 3

也正是 “2 master 分层” 提交代码的景观。

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

 

爱博体育app手机版 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个:

 爱博体育app手机版 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.撤废提交

参见资料:撤回提交 

相关文章