首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅对某些文件进行git-cherry-pick更改?

如何仅对某些文件进行git-cherry-pick更改?
EN

Stack Overflow用户
提问于 2011-04-19 21:22:54
回答 14查看 315.9K关注 0票数 717

如果我想要合并到一个Git分支中,在一个特定的提交中只对一些文件进行了更改,其中包括对多个文件的更改,那么如何实现呢?

假设名为stuff的Git提交对文件ABCD进行了更改,但我只想合并stuff对文件AB的更改。这听起来像是git cherry-pick的工作,但<代码>D9只知道如何合并整个提交,而不是文件的子集。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2011-04-19 22:04:57

我会用cherry-pick -n (--no-commit)来做这件事,它允许你在提交之前检查(和修改)结果:

代码语言:javascript
复制
git cherry-pick -n <commit>

# unstage modifications you don't want to keep, and remove the
# modifications from the work tree as well.
# this does work recursively!
git checkout HEAD <path>

# commit; the message will have been stored for you by cherry-pick
git commit

如果绝大多数修改都是您不想要的,而不是签出单独的路径(中间步骤),您可以将所有内容重置回来,然后添加您想要的内容:

代码语言:javascript
复制
# unstage everything
git reset HEAD

# stage the modifications you do want
git add <path>

# make the work tree match the index
# (do this from the top level of the repo)
git checkout .
票数 850
EN

Stack Overflow用户

发布于 2015-04-22 13:12:34

其他方法对我不起作用,因为提交对许多其他文件有很多更改和冲突。我想到的很简单

代码语言:javascript
复制
git show SHA -- file1.txt file2.txt | git apply -

它实际上不会提交文件或为您执行add,因此您可能需要继续使用

代码语言:javascript
复制
git add file1.txt file2.txt
git commit -c SHA

或者,如果您想跳过添加操作,可以使用git apply--cached参数

代码语言:javascript
复制
git show SHA -- file1.txt file2.txt | git apply --cached -

您也可以对整个目录执行相同的操作

代码语言:javascript
复制
git show SHA -- dir1 dir2 | git apply -
票数 190
EN

Stack Overflow用户

发布于 2016-03-02 17:14:10

我通常使用-p标志和其他分支的git结账,我发现这比我遇到的大多数其他方法更容易和更细粒度。

原则上的

代码语言:javascript
复制
git checkout <other_branch_name> <files/to/grab in/list/separated/by/spaces> -p

示例:

代码语言:javascript
复制
git checkout mybranch config/important.yml app/models/important.rb -p

然后你会看到一个对话框,询问你想要在"blobs“中做哪些更改,这对每一段连续的代码更改都很有效,然后你可以对每一段代码发出y (是)、n (否)等信号。

-ppatch选项适用于git中的各种命令,包括git stash save -p,它允许您选择要从当前工作中隐藏的内容

有时,当我完成了大量工作,并且希望将其分离出来,并使用git add -p在更多基于主题的提交中提交时,我有时会使用此技术,并为每次提交选择我想要的内容:)

票数 126
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5717026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档