gpt4 book ai didi

git - 使用 Git 部分挑选提交

转载 作者:IT王子 更新时间:2023-10-29 01:10:06 26 4
gpt4 key购买 nike

我在 2 个不同的分支上工作:发布开发

我注意到我仍然需要将提交给 release 分支的一些更改集成回 development 分支。

问题是我不需要所有的提交,只需要某些文件中的一些大块头,所以一个简单的

git cherry-pick bc66559

不成功。

当我做一个

git show bc66559

我可以看到差异,但真的不知道将其部分应用到我当前工作树的好方法。

最佳答案

你在这里想要的核心是git add -p ( -p--patch 的同义词)。这提供了一种添加内容的交互式方式,让您决定每个大块是否应该进入,甚至可以让您在必要时手动编辑补丁。

与 cherry-pick 结合使用:

git cherry-pick -n <commit> # get your patch, but don't commit (-n = --no-commit)
git reset # unstage the changes from the cherry-picked commit
git add -p # make all your choices (add the changes you do want)
git commit # make the commit!

(感谢 Tim Henigan 提醒我 git-cherry-pick 有一个 --no-commit 选项,感谢 Felix Rabe 指出你需要 git reset 。如果你只想留下一些东西提交,您可以使用 git reset <path>... 取消暂存这些文件。)

您可以提供到 add -p 的特定路径如有必要。如果您从补丁开始,您可以替换 cherry-pickapply .


如果你真的想git cherry-pick -p <commit> (该选项不存在),您可以使用

git checkout -p <commit>

这会将当前提交与您指定的提交进行比较,并允许您单独应用该差异中的 block 。如果您正在 pull 入的提交在您不感兴趣的部分提交中存在 merge 冲突,则此选项可能更有用。(但是请注意,checkoutcherry-pick 不同:checkout 尝试应用<commit> 的全部内容,而 cherry-pick 应用指定提交与其父项的差异。这意味着 checkout 可以应用的不仅仅是该提交,这可能比您想要的更多。)

关于git - 使用 Git 部分挑选提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1526044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com