相关疑难解决方法(0)

git merge:将更改应用于移动到其他文件的代码

我正在尝试一个非常强大的git合并策略.我遇到的一个问题是我对我的分支中的某些代码进行了一些更改,但我的同事将该代码移动到其分支中的新文件中.所以当我这样做时git merge my_branch his_branch,git没有注意到新文件中的代码与旧文件中的代码相同,因此我没有任何更改.

将更改再次应用于新文件中的代码的最简单方法是什么.我不会有太多问题找出需要重新应用的提交(我可以使用git log --stat).但据我所知,没有办法让git将更改重新应用到新文件中.我现在看到的最简单的事情是手动重新应用更改,这看起来不是一个好主意.

我知道git可以识别blob,而不是文件,所以肯定必须有一种方法可以告诉它,"从这个提交应用这个确切的代码更改,除了它不是它现在在这个新文件中的位置".

git

114
推荐指数
3
解决办法
4万
查看次数

为什么git不会尝试将更改合并到重命名的文件?

假设我有一个文件

  1. 在master中修改
  2. 在功能分支中修改
  3. 在功能分支中重命名

当我尝试从master合并到功能分支时,合并失败

CONFLICT(修改/删除):在HEAD中删除X并在origin/master中修改.X的版本原点/主人在树中留下.

我知道存在冲突,但为什么不尝试合并更改并将冲突标记放在文件中?以前的答案似乎暗示它应该.我得到的是该文件的两个不同版本,我必须手动找出差异,并从主版本到我的版本逐行更改端口.

重现步骤:

git init
touch a
git add a
git commit -m 'initial import'

git checkout -b feature1
echo feature1 > a
git add a
git commit -m feature1
git mv a b
git commit -m feature1

git checkout master
echo bugfix > a
git add a
git commit -m bugfix

git checkout feature1 
git merge master 
Run Code Online (Sandbox Code Playgroud)

git merge

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

禁用Git重命名检测

  1. 我有一个文件, foo.txt
  2. 创建并签出分支'branch_A'
  3. git mv foo.txt bar.txt其次git add -Agit commit -m "renamed foo.txt"
  4. 结账大师, git checkout master
  5. 删除foo.txt并提交.
  6. 现在合并branch_A, git merge branch_A

有了这个,我得到一个合并冲突(重命名/删除).

CONFLICT (rename/delete): Rename foo.txt->bar.txt in branch_A and deleted in HEAD
Run Code Online (Sandbox Code Playgroud)

这是有道理的,也是我所期待的.但是,我想知道git merge是否有办法检测重命名,而是将它们视为添加/删除.在这种情况下,我希望git能够检测到foo.txt已被删除,只需添加bar.txt即可.没有冲突.

我尝试过使用-X rename-threshold,但它对我没用.我已经尝试过阈值0和120(高于100的数字).我错过了什么?

谢谢!

PS我也遇到了error: refusing to lose untracked file at...错误.这是什么意思?

git merge rename

9
推荐指数
2
解决办法
8490
查看次数

Git可以合并“使用” git blame -C找到的信息吗?

读完这个问题后,我想到了这个问题:Git真的可以跟踪单个功能从一个文件到另一个文件的移动吗?如果是这样,怎么办?

这是worfklow:

“很久以前”,我们将一个大文件拆分为folder/file.py许多文件:folder1/file.pyfolder2/file.py依此类推。

git blame -C当我们查看时folder2/file.py,正确显示了该代码的历史记录,我们看到一些提交是在拆分之前进行的。

问题是我们继续维护仍然具有的旧版本代码,folder/file.py当我们将修补程序合并回“当前”版本时,git继续重新创建该文件夹folder,并且看不到folder/file.py应将所做的修补程序合并到其中folder1/file.pyfolder2/file.py取决于此代码块现在位于何处。

我快速看了一下,git help merge但没有发现任何东西。

git git-merge branching-and-merging

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

标签 统计

git ×4

merge ×2

branching-and-merging ×1

git-merge ×1

rename ×1