是否可以在git中重新设置特定文件的基数?

mer*_*011 4 git rebase

这与合并时的问题类似,除了我尝试将分支A重新建立到分支B的基础上,而不是将分支B合并到分支A中。

使用git checkout和结合使用git commit单个文件,可以在分支A中获得类似的效果,但是对历史记录的影响与重新设置的效果不同。

是否可以仅对特定文件进行基准调整,以便将来所有的基准调整都不需要接触这些文件,而无需重新基准所有文件的历史记录?

kos*_*tix 5

有点。您可能要进行交互式变基,并在文本编辑器中显示变基脚本后,将所有操作从“选择”更改为“编辑”,然后保存并退出。现在将开始重新设置基准,并且它将在每次提交后停止,从而使您能够:

  1. 删除您不感兴趣的文件中的更改。

    这是可以做到的

    git reset <reference_commit> -- pathname
    
    Run Code Online (Sandbox Code Playgroud)

    其中的<reference_commit>是提交的名称,其中包含您不希望修改基准的文件。

  2. 通过运行应用这些更改git commit --amend -C HEAD

  3. 运行git rebase --continue
  4. 冲洗,重复。

任何时候git rebase应用下一次被重新调整为基础的提交时,您可能会遇到冲突,而不仅仅是编辑已记录的提交的机会。这与正常编辑没有太大区别,您只需要更加注意索引的当前状态即可。

无论如何,您想做的事对我来说很奇怪:通常,重新定基是“将本地更改转发到更新的基础之上(上游代码)”,这意味着您的更改是否不能与更新一起使用上游(以及为什么还要保持某些文件不被更新?),重新定基毫无意义-仅仅是因为您不会重新定基,而是会做其他事情,这以后可能会给您带来麻烦。