Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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_Version Control - Fatal编程技术网

获取git中对分支的提交数

获取git中对分支的提交数,git,version-control,Git,Version Control,假设我从master创建了一个名为foo的分支,在处理它的同时,我执行了大量本地提交。我现在已经完成了分支,希望将其合并回主分支,但我不想在合并回分支时将所有提交压缩为一个提交,我知道可以使用: #from master branch git merge --squash foo 我仍然希望能够压缩一些提交,以便只将重要的提交推送到源存储库。现在,如果我知道自创建分支以来所做的提交数量,这很容易。我所要做的就是: #assuming I did 20 commits #while in the

假设我从master创建了一个名为foo的分支,在处理它的同时,我执行了大量本地提交。我现在已经完成了分支,希望将其合并回主分支,但我不想在合并回分支时将所有提交压缩为一个提交,我知道可以使用:

#from master branch
git merge --squash foo
我仍然希望能够压缩一些提交,以便只将重要的提交推送到源存储库。现在,如果我知道自创建分支以来所做的提交数量,这很容易。我所要做的就是:

#assuming I did 20 commits
#while in the foo branch
git rebase -i HEAD~20
然后我就可以挤压我想要的东西。问题是我通常不会记录我向分支机构提交的次数,因此如果我不知道该次数(大多数情况下我也不知道),我不知道该怎么办。一般来说,我只需要在分支完成并且准备合并回master时挤压,所以我想知道是否有方法获得自创建分支以来提交的数量?

我只想

git rebase -i origin/master
或者,无论您从何处分支,因此生成的历史记录都将显示在我从更高版本开始的版本中,并且向后合并可能会很快(这更容易处理,特别是因为您正在将实际历史记录重写为逻辑变更集)。但是如果你想保持相同的基点,你可以这样做

git rebase -i $(git merge-base HEAD origin/master)

(或者你从其他地方分支出来的任何东西)。

正如Jan所说的
git rebase-i master
可能就是你所需要的一切。从这里,您可以挤压选定的提交、对其重新排序、更改提交消息或忽略单个提交


有一个方便的工具可以显示其中的一些操作。

第一位是正确的,但在第二种情况下,更改仍将应用于磁头顶部。您需要使用
--on
来指定要重新应用它们的点。