标签: git-rerere

启用git rerere有什么缺点吗?

我已经阅读了关于git的rerere功能的各种内容,我正在考虑启用它.但我没有看到有人提到使用它时可能出现的任何问题.我必须假设有一个缺点,或者它可能默认启用.那么启用rerere有什么缺点吗?哪些潜在的问题会导致不会发生?

git merge git-rerere

97
推荐指数
3
解决办法
1万
查看次数

rebase - 如果rerere解决所有冲突,则自动继续

Git rerere提供了在rebase期间重用以前的冲突解决方案,甚至可以通过设置来解析已解析的文件rerere.autoupdate = True(如另一个问题中所详述).但是,即使解决了所有冲突并且所有文件都已暂存,我仍然必须运行git rebase --continue以继续rebase操作.

如果已解决所有冲突并暂停所有更改,我该如何自动继续rerere

git git-rebase git-rerere

25
推荐指数
2
解决办法
998
查看次数

撤消在rebase中完成的git rerere解析

好的,所以我真的很喜欢git rerere命令.虽然,我还没有真正使用它,除了让它自动神奇地记录我的冲突并为我解决它们.但是,我确实搞砸了我的冲突解决方案中的一个很大的rebase(使用最新版本重新定义了一个非常陈旧的功能分支).

feature -> a - b - c - d

release -> e - f - g - h

rebase/feature -> e - f - g - h - a' - b' - c' - d'
Run Code Online (Sandbox Code Playgroud)

所以,比方说b'有一个不正确的合并(感谢我!),我想重新录制它.我该怎么办?我已经看过在Rerere Your Boat中提到的git checkout --conflict选项,但是我不太清楚它是如何工作的,如果它适用于这里.也许我必须检查合并冲突状态并在我正确解决此冲突后运行git rerere?

通常情况下,我只会提交rebase分支的提示,但这是一个扔掉.我只是提前处理冲突,因此当我与该功能团队同步时,我们将所需的时间最小化.合理?

git git-rebase git-rerere

24
推荐指数
1
解决办法
8830
查看次数

共享rerere缓存

我见过人们建议所有开发人员在他们的机器上设置符号链接C:\project\.git\rr-cache到共享文件夹\\server\rr-cache.

但是,如果可以的话,通过将文件夹包含在git存储库中来共享文件夹似乎更方便.我见过人们提到这个解决方案,但实际上并不是这样做的.

有任何想法吗?

git version-control git-merge merge-conflict-resolution git-rerere

20
推荐指数
2
解决办法
4441
查看次数

让git rerere自动将文件标记为已解决?

我正在使用git rerere,它很有用,但有一个问题:当它自动解析文件时,它不会将其标记为已解析(例如使用git add).因此,如果我运行'git mergetool',它会打开文件,好像它仍然存在所有冲突.

到目前为止,我已经制作了一个我可以调用的小shell脚本,它扫描所有标记为冲突标记冲突的文件(例如>>>>>>>),如果没有,则调用git-add.

有没有更好的方法呢?我错过了git rerere的一些旗帜?

git merge conflict git-rerere

18
推荐指数
1
解决办法
1983
查看次数

我是否必须提交合并以使git-rerere记录我的冲突解决方案?

我正在使用git-rerere它的预期目的,在这些分支开发时逐步记录两个分支(主分支和主题分支)之间的冲突解决方案,而不会创建不必要的合并提交.然而,即使在阅读了git-rerere manpage后,我还不清楚rerere何时实际记录了我的冲突解决方案.我检测和解决新合并冲突的标准工作流程是git merge master从主题分支,解决冲突,然后暂存所有文件并提交合并git commit -m "Finished test merge",然后撤消合并使用git reset --hard HEAD^,只留下存储的记录分辨率git-rerere.

然而,这似乎有点傻.创建一个提交,然后撤消它只是为了记录分辨率?在阅读了联机帮助页后git-rerere,我仍然不清楚它何时记录我的决议.仅仅暂存冲突的文件是否足够,或者在解决冲突后我是否真的需要创建合并提交,就像我一直在做的那样?

git merge-conflict-resolution git-rerere

17
推荐指数
1
解决办法
950
查看次数

git rerere不会自动提交自动提交的合并解决方案

我正在尝试使用共享的rerere缓存来自动化一次性集成/测试分支.

我们的想法是,当推送分支时,rerere缓存应该是最新的,以便这些合并始终通过.但是,他们没有:

>>> git merge --no-ff invoicing
Staged 'analysisrequest.py' using previous resolution.
Staged '__init__.py' using previous resolution.
Auto-merging __init__.py
CONFLICT (content): Merge conflict in __init__.py
Auto-merging analysisrequest.py
CONFLICT (content): Merge conflict in analysisrequest.py
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)

在这一点上,rerere已经上演了它所记住的决议,并且不存在实际的冲突.我可以运行git commit,然后继续,但我的集成测试构建脚本会看到错误.我已经尝试添加--rerere-autoupdate到git merge命令,但没有任何改变.我已将repo配置为启用并自动应用rerere匹配.

我怎么能要求git merge使用我以前的分辨率并且如果它们足够的话可以继续而不失败?

git git-rerere

13
推荐指数
1
解决办法
1039
查看次数

使用Git重用冲突解决方案

我可以告诉Git重用现有合并提交中的冲突解决方案吗?在提交时我被禁用了.新的合并提交在合并的"我们的"一侧包含一些额外的提交(但是他们不应该在修改不同的文件集时引入新的冲突).


例如,请使用以下DAG:

m [master] Add new stuff
*
| o [old-master] Merge branch A (conflicts)
|/a [branch A]
n *
* *
*/
*
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的是将提交mm^分支old-master(然后使其成为新的主).我不想简单地合并masterold-master,因为它会创建一个新的合并提交(尽管没有冲突).我想oma作为父母重新创建提交.

新的DAG应该如下所示:

  p [old-master] Merge branch A (same conflict resolution as old commit o)
 /|
m | [master] Add new stuff
* |
| a [branch A]
n *
* *
*/
*
Run Code Online (Sandbox Code Playgroud)

我不介意使用rerere,如果我之后可以告诉它记录现有合并commit(o)的解析.

git merge merge-conflict-resolution git-rerere

8
推荐指数
1
解决办法
501
查看次数

当解决方案是删除冲突的文件时,有没有办法让git rerere工作?

这是交易.master有一个文件file1.我分支,并删除分支中的该文件.同时,我修改了master上的file1.繁荣,冲突.

当我将我的分支合并到master时,解决方法是删除该文件.我试图使用git rerere能够多次执行相同的分辨率,但正如您在下面看到的那样,当您删除文件时,它不会记录分辨率.

我没有具体找到这方面的文件,这只是一个限制rerere吗?

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? touch file1.txt

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git add . && git commit -m 'File1'
[master (root-commit) 95a807e] File1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file1.txt

 |system| brad-macbook-air in ~/tmp
± bb+ih |master ?| ? git checkout -b delete_file_1
Switched to a new branch 'delete_file_1'

 |system| brad-macbook-air in ~/tmp
± bb+ih |delete_file_1 ?| ? git …
Run Code Online (Sandbox Code Playgroud)

git git-rerere

8
推荐指数
1
解决办法
501
查看次数

什么是git-rerere以及它是如何工作的?

据我所知,通过保存冲突解决信息来实现项目同步非常有用,但我并不完全清楚如何使用和配置它.

我想配置我的持续集成(CI)环境.建议这样做吗?

请不要在另一个问题上标记副本:启用git rerere是否有任何缺点?.因为我的怀疑与"因此是否有任何不利因素"无关?它会导致哪些潜在的问题不会发生呢?

git version-control continuous-integration git-rerere

8
推荐指数
2
解决办法
2301
查看次数