Git:当工作分支中有被删除的文件时,如何使*Git-rebase upstream/master*工作



我是GIT的新手,有一个问题可能很愚蠢,但到目前为止,我搜索到的还没有提到这一点的帖子。情况如下:

A                A'
upstream/master-+---+----+----+-----+
|
myworkingbranch     +---+---+---
A   B   C 

我在a点分叉回购,然后做出自己的承诺B、C,。。。同时,原始回购承诺为A'。一般来说,通过应用git-rebase,我可以制作B、C、。。。基于A'而不是基于A。然而,在提交B时,我删除了一些文件,这些文件仍保留在A'中。然后,每次我执行git-rebase时,它都会抱怨已删除/已删除文件上的冲突,这意味着我需要通过mergetool或其他方法手动解决冲突。

我从github的帮助页面上了解到,这个问题似乎分为两部分:

  1. 通过git-rebase,提交B、C将被取消,myworkingbranch将返回到缓存中的A。在此期间,在B中删除的文件如何?它们会被修复吗?我认为不会,因为如果会的话就没有问题了。

  2. 如果删除的文件没有恢复,当我从上游/主应用提交A'时,其中包含对已删除文件的更改,则存在冲突。每次重新调整基准时,都需要手动解决冲突。由于可能有数百个这样的文件,这太可怕了。

Qestion:当应用包含对在myworking branches中删除的文件的更改的上游/主提交时,是否有一种优雅的git rebase方法,可以自动省略引用这些删除文件的更改?在我上面提到的问题的两个部分中?

我确实发现,对于gitmerge,我可以使用.gitattribute文件来省略上游分支中的某些文件。它对git rebase有效吗?我想不会,因为如果我通过提交添加那些.gitattribute文件,比如说,在myworkingbranch中的D,那么当git-rebase时,状态a将在缓存中,而不是D,它再次不包含.gitattribute文件,并且在a’上打补丁时会发生冲突

提前感谢您的帮助。

您可以激活git rerere,并记住冲突解决一次

随后的重新基准不会因为同样的冲突而停止。


在此期间,在B中删除的文件如何?它们会被修复吗?我认为不会,因为如果会的话就没有问题了。

是的,通过签出新的基础(A')开始重新基础:文件将恢复到索引中
然后应用BC

最新更新