Git:如何推送仅对某些文件进行的更改?

时间:2013-04-10 22:11:22

标签: git git-rebase cherry-pick

我最近遇到了一个问题,我需要选择一些文件来推送到使用git的远程分支。 我的具体用例是每次提交只创建/修改一个文件,我需要以编程方式推送所选文件(处于最新状态)。我做了一些研究,发现接近我需要做的2个技巧:

  1. 我可以使用cherry-pick选择某个提交到新分支并将该分支合并到远程主服务器中。
  2. 我可以使用rebase -i重新排序提交,我假设我可以重新排序,以便与这些选定文件相关的提交都在前面,我可以推送该列表中的最后一次提交。
  3. 对于樱桃挑选它有点令人困惑。我可以创建一个没有所有脏提交的新分支,并选择文件提交到该分支。但是,如果文件已经存在于分支中,它总是会引发我必须手动修复的冲突,这并不理想。

    对于rebase -i,从我读过的内容我需要转到一个交互式编辑器,我需要手动重新排序提交,之后我可以执行git push origin来将所有内容应用到commit-SHA(重新订购)。不太理想,因为我必须做手工工作。

    总的来说,我认为rebase更接近我需要的东西,但我找不到一个简单的方法来编程。任何人都可以提出一些可以完成我任务的git类比操作吗?

1 个答案:

答案 0 :(得分:1)

我想我找到了解决这个问题的方法:cherry-pick --strategy=recursive -Xtheirs <commit-SHA>

在递归合并策略中指定'他们的'选项会强制冲突自动解决正在合并的版本。这将忽略所有冲突警告但是抓住提交中的任何内容。

我想我现在只想知道为什么在选择修改当前分支中现有文件的提交时,即使只添加一行,cherry-pick也会产生冲突警告。