我是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的帮助页面上了解到,这个问题似乎分为两部分:
通过git-rebase,提交B、C将被取消,myworkingbranch将返回到缓存中的A。在此期间,在B中删除的文件如何?它们会被修复吗?我认为不会,因为如果会的话就没有问题了。
如果删除的文件没有恢复,当我从上游/主应用提交A'时,其中包含对已删除文件的更改,则存在冲突。每次重新调整基准时,都需要手动解决冲突。由于可能有数百个这样的文件,这太可怕了。
Qestion:当应用包含对在myworking branches中删除的文件的更改的上游/主提交时,是否有一种优雅的git rebase方法,可以自动省略引用这些删除文件的更改?在我上面提到的问题的两个部分中?
我确实发现,对于gitmerge,我可以使用.gitattribute
文件来省略上游分支中的某些文件。它对git rebase有效吗?我想不会,因为如果我通过提交添加那些.gitattribute
文件,比如说,在myworkingbranch中的D,那么当git-rebase时,状态a将在缓存中,而不是D,它再次不包含.gitattribute
文件,并且在a’上打补丁时会发生冲突
提前感谢您的帮助。
您可以激活git rerere
,并记住冲突解决一次。
随后的重新基准不会因为同样的冲突而停止。
在此期间,在
B
中删除的文件如何?它们会被修复吗?我认为不会,因为如果会的话就没有问题了。
是的,通过签出新的基础(A'
)开始重新基础:文件将恢复到索引中
然后应用B
和C
。