我正在使用一个从feature-a分支而来的分支feature-b。feature-a有一些提交被压缩和合并,然后git push -f到远程,所以我不确定如何保存我的feature-b。
历史是这样的:
A - B - C (feature-a)
\
D (feature-b)
现在看起来像这样:
A' (feature-a `after squash`)
\
?
\
D (feature-b)
D的变化并不大,但我更感兴趣的是如何协调这种情况,因为它已经发生了。
我知道当历史记录被提交时,要避免git push -f和挤压。如果我分支了自
我是支部的主人。当我执行git rebase -i --root master时,我可以看到存储库中的每一次提交和重基。但是,当我执行git rebase -i master或git rebase -i origin/master时,我得到:
诺普
将fa2874e .4a271fe重新定位到fa2874e(1 TODO项目)
当我选择要重基的特定提交时,我可以重基,例如,git rebase -i d0738d9d076cc64565659920b8cf0405fa8f6f4e工作。
但在我从事过的其他项目中,我肯定* git rebase -i master工作时没有选择特定的提交
我们使用gerrit进行代码审查。在处理更大的问题时,我有时会向Gerrit发送几个相互依赖的提交。这里有一种这样的情况,其中a、b和c是等待Gerrit中的代码审查的提交:
c
|
b
|
a
|
origin/master
如果我得到一个关于a的评论,我需要修复代码审查者发现的任何问题,并为a、b和c进行新的提交(当b的依赖关系发生变化时,Gerrit永远不能处理冲突)。为了解决这个问题,我从我工作的地方(假设是主分支)签出了一个名为cr_fix的新分支,并执行了git重置--hard HEAD^^ (或使用提交a的id ),所以我的结果如下:
a
|
origin/master
我现在可
首先,我以master为基础:
A - B - C
\
D' - E'
然后,主服务器返回了几个提交,所以远程地看起来是这样的:
A - B
而在本地,我的开发分支仍然有C提交。这样做安全吗?
git pull origin master git rebase master
有些提交不会重复吗?返回的正确方法是什么?
A - B
\
D' - E'
git rebase经常用于某个分支的上下文中。例如,如果我想将feature分支的基础移动到master分支的顶部(基于最新的提交)--教程说:
git checkout feature
git rebase master
在像这样的教程之后,有很多问题。如何在不退房的情况下执行同样的动作。如何使用--onto选项执行相同的操作。--onto和rebase之间有什么区别。我可以传递一个范围的提交,或者它必须是一个完整的分支?等等。
我读过几次手册页,但仍然有很大的差距。
因此,的主要问题是:如何在不同的场景中解析arg,以及如何在我的头脑中解释/想象它们?例如:
git rebase ma
我有一段艰难的时间试图挤压这些过度的提交。当我运行git log --pretty=oneline时,以下项目按以下顺序出现:
e44e012 Merge branch 'branch A' of https://github.com/ into branch A 4176991 Commit D 767583f Commit C f5a4c21 Commit B 83bb8e1 Commit A
我想把它们压缩到一个提交中,然后去掉提交合并。当我运行git rebase -i HEAD~2时,出现了commit A-D,但没有显示commit merge。知道为什么吗?当我尝