git mv 文件夹,然后将新文件从功能分支合并到修改后的路径,删除其历史记录?
Does git mv folder and merge afterward new file from feature branch to the modified path, deletes its history?
我有以下情况:
合并前的主要分支机构:
│ └── dir1
│ │ └── python1
│ │ │ └── test1.py
│ └── dir2
│ │ └── python2
│ │ │ └── test2.py
│ └── dir3
│ │ └── python3
│ │ │ └── test3.py
合并后的主要分支机构:
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
合并前的特性分支(test4.py
history has 10 commits in history):
│ └── dir1
│ │ └── python1
│ │ │ └── test4.py
从功能分支合并后的主分支(使用 git merge -s ort
并解决不存在的 test4.py
上的冲突):
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ │ └── test4.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
问题是 test4.py
的所有历史记录都被删除了...知道为什么会发生以及是否可以避免?
如果合并从您的目标树中删除 dir1/python1/test4.py
,则您合并的分支会删除该文件。但我现在看到它只是移动了它。如果您想查看该文件的历史记录,
gitk --follow -- dir2/python1/test4.py
如果它还没有变得面目全非,我会给你看。你可以尝试添加 -M50
如果它有很大的变化,并且 --full-history
来检查最终对主线没有任何影响的祖先,以防你想看到被放弃的变化或否则最终与 Git 已经向您展示的变化相同..
git blame
总是运行 --follow
(这通常是人们想要的,但还没有人教过它任何选项 not 来做到这一点),但你必须寻找一个有它的提交。
如果一个文件不只是被移动而是被删除了,如果它现在不存在,git log -1 --pretty=%h -- path/to/that/test4.py
将找到删除它的提交,在那个末尾添加一个 ^
一个的输出,这是它被删除之前的最后一次提交。
我有以下情况:
合并前的主要分支机构:
│ └── dir1
│ │ └── python1
│ │ │ └── test1.py
│ └── dir2
│ │ └── python2
│ │ │ └── test2.py
│ └── dir3
│ │ └── python3
│ │ │ └── test3.py
合并后的主要分支机构:
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
合并前的特性分支(test4.py
history has 10 commits in history):
│ └── dir1
│ │ └── python1
│ │ │ └── test4.py
从功能分支合并后的主分支(使用 git merge -s ort
并解决不存在的 test4.py
上的冲突):
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ │ └── test4.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
问题是 test4.py
的所有历史记录都被删除了...知道为什么会发生以及是否可以避免?
如果合并从您的目标树中删除 dir1/python1/test4.py
,则您合并的分支会删除该文件。但我现在看到它只是移动了它。如果您想查看该文件的历史记录,
gitk --follow -- dir2/python1/test4.py
如果它还没有变得面目全非,我会给你看。你可以尝试添加 -M50
如果它有很大的变化,并且 --full-history
来检查最终对主线没有任何影响的祖先,以防你想看到被放弃的变化或否则最终与 Git 已经向您展示的变化相同..
git blame
总是运行 --follow
(这通常是人们想要的,但还没有人教过它任何选项 not 来做到这一点),但你必须寻找一个有它的提交。
如果一个文件不只是被移动而是被删除了,如果它现在不存在,git log -1 --pretty=%h -- path/to/that/test4.py
将找到删除它的提交,在那个末尾添加一个 ^
一个的输出,这是它被删除之前的最后一次提交。