我可以'git cherry-pick <sha>'并让'git log foo..bar'认出它吗?



背景:我有两个分支,master和stable,在master上有许多提交,但这些提交并不稳定。我想从中挑选一些提交到stable,然后能够使用git log --merges-only stable..master来查看剩下的内容。

然而,如果我只是挑选,git会将它们视为两次提交,因此"git-log"命令没有帮助。例如:

# create a repo
mkdir cherry
cd cherry
git init
# add a commit on master
touch foo.txt
git add foo.txt
git commit -a -m 'commit 1'
# create a stable branch
git checkout -b stable
# add two more commits to master
git checkout master
touch bar.txt
git add bar.txt
git commit -m 'commit 2'
touch baz.txt
git add baz.txt
git commit -m 'commit 3'
# cherry-pick just one of those commits to stable
git checkout stable
git cherry-pick master

然后,我希望能够看到哪些提交是未来在master上挑选的候选者,最好使用git log,但它并不能真正回答我的问题:

> git log stable..master --pretty=oneline --no-merges
01550adab8993ceb1eec7bbc7a0e3de3550d63fc commit 3
8a3ea27aa50c887b603296bb9d4a36ccbfa35311 commit 2

然而,关于git cherry:的TIL

>  git cherry stable master
+ 8a3ea27aa50c887b603296bb9d4a36ccbfa35311
- 01550adab8993ceb1eec7bbc7a0e3de3550d63fc

其中以"+"为前缀的条目是将来挑选樱桃的候选者。

git cherry命令就是为此目的而设计的。

在您精心挑选了所有想要的提交后,尝试对master重新设置稳定的基础:

git checkout stable
git rebase master

我不确定它是否会对您有所帮助,但您可能想看看我缺少的git脚本。它模仿Bazaar的bzr missing命令。它将向您显示分支上的额外提交,然后是其他分支中缺少的提交。它考虑了樱桃采摘。

例如:

$ git missing master
You have 1 extra revisions
--------------------------
0db6b7c Call SetupSource for .zsh files.
You have 1 missing revisions
----------------------------
70f9f42 Add clojure snippets.

相关内容

  • 没有找到相关文章

最新更新