3

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

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

我在 A 点 fork 一个 repo,然后做出我自己的提交 B,C,...同时,原始 repo 提交了它的提交 A'。通常,通过应用 git rebase,我可以基于 A' 而不是基于 A 来制作 B、C、...。但是,在提交 B 中,我删除了一些文件,这些文件仍保留在 A' 中。然后,每次我执行 git rebase 时,它​​都会抱怨删除/删除文件的冲突,这意味着我需要通过 mergetool 或其他方式手动解决冲突。

我从 github 的帮助页面中得知,这个问题似乎分为两部分:

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

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

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

我确实发现对于 git merge,我可以使用.gitattributefile 来省略上游分支中的某些文件。它适用于 git rebase 吗?我想这不会是因为,如果我.gitattribute通过提交添加这些文件,比如在 myworkingbranch 中添加 D,那么当 git rebase 时,状态 A 将在缓存中,而不是 D,它再次不包含任何.gitattribute文件,并且在修补 A 期间会发生冲突'

在此先感谢您的帮助。

4

1 回答 1

2

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

随后的变基不会因相同的冲突而停止。


在此期间,删除的文件如何B?他们会恢复吗?我认为不是,因为如果它会,那么就不会有问题。

是的,rebase 从检出新基 ( A') 开始:文件在索引中恢复。
然后它适用BC

于 2012-11-14T17:44:48.760 回答