我有几个分支,其中存放着我想不时应用于工作副本的某些提交。最初我尝试了 cherry-picking,但我不想在目标分支中留下该提交。
所以我执行了 cherry-pick
+ reset HEAD~1 --soft
是否有像 cherry-picking 一样仅针对工作副本的更简单的方法?
我有几个分支,其中存放着我想不时应用于工作副本的某些提交。最初我尝试了 cherry-picking,但我不想在目标分支中留下该提交。
所以我执行了 cherry-pick
+ reset HEAD~1 --soft
是否有像 cherry-picking 一样仅针对工作副本的更简单的方法?
使用带有“-n”标志的樱桃拣选,该标志表示“无提交”
请参阅:http://git-scm.com/docs/git-cherry-pick
git cherry-pick -n <HASH>
取消已暂存的更改
git reset
-n
将提交内容带到了暂存区。要将其从暂存区移除,需要使用 git reset HEAD
。 - Vishnu N Kgit reset
即可。 - Krishna如果您正在使用终端
git cherry-pick -n <HASH>
如果您使用的是Intellij Idea。Settings -> Version Control -> git
untick commit automatically on cherry-pick
如果您只是想将提交中所做的所有更改应用于您的工作目录,您也可以使用apply
而不是cherry-pick
:
git show <commit> | git apply
这将会应用在<commit>中所做的更改,但不会将它们添加到暂存区或创建提交。
git stash pop
将所有内容都弹出到暂存区(即使我在暂存区和工作区有不同的更改),我使用一个临时分支创建了一个假的存储区,其中包含两个提交(暂存区和工作区)。在切换回主分支后,使用git cherry-pick --no-commit <暂存区哈希值>
将暂存区的提交返回到暂存区非常容易,但是如果没有这个技巧,将工作区的提交正确地返回到工作树将不容易:git show <工作区哈希值> | git apply
。 - undefined只需要运行:
$ git cherry-pick --no-commit <HASH>
error: server/metadata/metadata-preui-prod.xml: No such file or directory
现在我这样做:
git checkout SHA -- server/metadata && git reset -- server/metadata
git show SHA -- file1.txt file2.txt | git apply -
如果你想要选取SHA版本中所有的文件变更可以使用以下命令:
git show SHA | git apply -
参考链接:如何只选取特定文件的git cherry-pick变更?
如果不打开控制台,在Visual Studio 2019中解决此问题,可以转到“Git存储库”窗口,右键单击Git提交历史记录,然后在要选择的提交上执行樱桃拣选操作。这将提交樱桃拣选。但是,然后我右键单击下面的提交,并执行“重置 -> 保留更改(--mixed)”,这将重置提交,但保留未提交的更改。
git cherry-pick HEAD..<AwesomeBranch> -n
进行挑选并将它们应用到当前分支上,但不会自动提交。 - schoetbi