我有一个master的分支,有三个变化,我想把它改回master。例如:
$git checkout master
$git branch dev && git checkout dev
$<do 3 commits>
$git checkout master
$git rebase dev -i
通常情况下,-i会给我3个提交,并允许我挤压。然而,在这种情况下,它只是"noop“,当rebase完成时,我看到三个提交移到了master。我猜想在这里,由于祖先没有分叉,快进是可能的,所以这就是发生的事情。但我想要压碎提交。
我尝试使用-- no -ff,但它
当我对之前几次提交的更改有了修复时,我总是连续运行两次rebase。是否有可能在一个步骤中完成此工作流程?假设我有4个新的提交。
* (master) D
* C
* B
* A
* Base
我在B中发现了一个bug,所以我创建了一个分支并修复了它。
* (master) D
* C
| * (fix) Fix.
|/
* B
* A
* Base
接下来,我运行git rebase --onto fix B D将C和D移到B上。
* (master) D'
* C'
* (fix) Fix.
* B
* A
* Base
最后,我运行git rebase --i fix
如何从以下位置获取信息:
master: A - B - C - D -------------- F - G - H
\ / \
feature: A' - B' - C' D' - F' - G'
至:
master: A - B - C - D -------------- F - G - H
\ / \
feature: A&
我有一个SVN分支的问题。我用git checkout -t -b stable svn/stable对它进行了检查。然后我与git rebase master进行了合并。之后,我尝试使用git svn dcommit将合并更改提交到远程分支
但现在看来,Git将更改推到了主干而不是分支中:(
git status告诉我:
# On branch stable
# Your branch and 'svn/stable' have diverged,
# and have 218 and 52 different commit(s) each, respectively.
#
假设我有一个git历史,如下所示:
-- A -- B -- C -- D --
\ /
-----E-----
有没有一种相对快速的方法来将B和C压缩成一个提交?
我希望我的最终历史是这样的:
-- A -- BC' -- D' --
\ /
----E----
使用普通的rebasing来压缩B和C很容易--它似乎让新的提交取代了B和C成为祖先或D,这很麻烦。
签出一个指向D的分支,运行git rebase -i master (A的前身),并选择压缩C,我得到的历史记录如下:
A -- BC
我有自己的develop分支从团队的master分支复制而来,我编写了一些代码在develop分支上开发一些特性,而master分支也是由其他团队成员开发的。
现在,我完成了我的模块,并希望将其merge到master分支,但我将git设置如下:
$ git config --global merge.ff only
现在,当我尝试merge时,它会给出
fatal: Not possible to fast-forward, aborting.
那么,我应该在Terminal中执行哪些命令来成功地实现merge,并且日志中没有丑陋的合并信息。
请讲清楚,非常感谢。
更新:我不知道为什么人们投
我无法在git中进行正确的分支合并。例如,我有两个分支:
C - D - E my_branch
/
A - B - F - G - K *master
现在我上主播了。在"git merge my_branch“之后,我在master上得到了类似这样的结果:
A - B - C - D - F - G - K - E - M *master
(M - merge commit)但我不这么认为:
A - B - F - G - K - M
这一点很重要,因为在my_branch中,我经常只为自己做不可编译的提交;我不想把它们推到maste
我使用以下命令从master创建新分支:
git checkout -b testbranch
我向它提交了20个提交。
现在我想压缩这20个提交。我是这样做的:
git rebase -i HEAD~20
如果我不知道提交了多少次怎么办?有没有办法这样做:
git rebase -i all on this branch