小编Nic*_*tro的帖子

Git:手动合并未检测到的重命名中的更改

此问题使用 Git 2.7.0.windows.1,因此某些 git 命令可能已过时。

如果我的git merge命令没有检测到重命名的文件,我如何告诉 git 手动合并两个本应是单个文件的文件中的更改,而不需要重新开始合并并使用较低的重命名阈值?

复制步骤:

git init
echo "//Hello world!" > hw.h
git add . && git commit -m "Initial commit"
git checkout -b someBranch
mv hw.h hw.hpp
echo "//Foobar" > hw.hpp
git add . && git commit -m "Change hw to HPP & change content"
git checkout master
echo "//Boofar" > hw.h
git add . && git commit -m "Change content of hw"
git merge -X rename-threshold=100% someBranch
Run Code Online (Sandbox Code Playgroud)

您将遇到合并冲突,但不会出现冲突的块。也就是说,您应该得到的唯一冲突/错误是:

CONFLICT (modify/delete): …
Run Code Online (Sandbox Code Playgroud)

git merge file-rename git-merge

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

`git rebase` 在底层是如何工作的?

我最近开始使用 git 树和临时索引文件来构建提交,而无需修改我的工作目录,目的是自动化一些任务。最终目标是有效地重新设置某个分支(例如feature/x_y_z在 之上main),但不修改工作目录来执行此操作。显然,我仍然想检测冲突,并且绝对不是破坏性的更改main(就像使用git commit-tree)。我通读了这本书“Git Internals”一章,它对树、blob、索引等很有教育意义——但没有明确解释 rebase 是如何工作的。

(旁白:这样做的动机是1)它的方式更快,2)我想使开发人员能够揭开序幕测试设置一些提交/支,迅速,消费最新规范的更改,而不是他们的重挫工作目录)。

为此,git rebase引擎盖下是如何工作的?它使用哪些管道命令?它如何分析树以检测冲突?指向有用资源的链接和/或对这些内容的直接解释将非常有帮助。

git git-rebase git-plumbing

0
推荐指数
1
解决办法
311
查看次数

标签 统计

git ×2

file-rename ×1

git-merge ×1

git-plumbing ×1

git-rebase ×1

merge ×1