Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git重定基址交互在快进可用时不挤压_Git - Fatal编程技术网

Git重定基址交互在快进可用时不挤压

Git重定基址交互在快进可用时不挤压,git,Git,我有一个来自master的分支,有三个更改,希望将其重新设置为master。例如: $git checkout master $git branch dev && git checkout dev $<do 3 commits> $git checkout master $git rebase dev -i 但这真的很痛苦,我必须知道有多少人承诺为头部~X部位挤压 脚注: 这对我来说很重要的原因是,gerrit将对这个压缩的变更集进行审查。如果它们是分开的,那就不可

我有一个来自master的分支,有三个更改,希望将其重新设置为master。例如:

$git checkout master
$git branch dev && git checkout dev
$<do 3 commits>
$git checkout master
$git rebase dev -i
但这真的很痛苦,我必须知道有多少人承诺为头部~X部位挤压

脚注:
这对我来说很重要的原因是,gerrit将对这个压缩的变更集进行审查。如果它们是分开的,那就不可能进行审查。

我不太清楚你为什么要做你问题中的一些事情,例如,在你提交之前,你不是真的要
$git branch dev&&git checkout dev
?对于您的版本,您只是在
master
上创建它们。(顺便说一句,如果我是对的,您可以使用
git checkout-b dev
作为快捷方式。)

您刚刚获得noop的原因是,
git rebase
尝试重新应用当前分支中不在作为
参数提供的分支中的所有提交。因此,当您在
master
上执行
git rebase-i dev
时,
master
中没有不在
dev
上的提交。基本上,你想反过来做。我会这样做:

git checkout dev
git rebase -i master
[... change to 'squash' all but the first of the actions ...]
然后,您的开发分支将只有一个压缩提交,如果您愿意,您可以将其合并到master中

或者,您可以使用git merge--squash:

git checkout master
git merge --squash dev
git commit -m "The changes from dev squashed into one commit"

然后,
master
将有一个新的提交,它表示将
dev
合并到master中并压缩为一个提交的结果,并且该新提交将只有一个父级,而不是合并提交。

这里的关键实际上是使用
master
作为重基的基础,而不是一些特别命名的提交。即使师父已经走得太远了,你们也知道你们可能想要压扁的一切都是从那个时候开始的。(还有,
merge--squash
是否仍然自动提交?@Jefromi:在我最近使用的所有git版本中,
git merge--squash
只是阶段性地进行更改。以前不是这样吗?在提交中添加的文档引入了
git merge--squash
(7d0c68871a8),文档中还说“不要实际提交”。那就没关系了!它可能会创建一个模板消息?这可能就是我所想的。是的,你是对的,结账时有个打字错误。现在更正。为结帐干杯-b提示-git的新功能!
git checkout master
git merge --squash dev
git commit -m "The changes from dev squashed into one commit"