我不想犯任何事。我只想从不同的分支中获取所有文件并用这些文件替换我正在处理的所有当前文件,而它根本不会更改我当前的分支,本质上就像合并,但不创建该合并状态。
最终结果将与检出不同的分支、复制文件、然后返回到原始分支并粘贴在它们之上的结果相同。
编辑:我尝试将分支合并到工作树中,使其处于合并状态,然后执行 git reset originalbranch,这几乎奏效了,但它留下了所有冲突文件以及差异注释...
EDIT2:刚刚意识到我在 SU 而不是 SO ......
pha*_*zei 11
这似乎可以解决问题:
git merge otherbranch --no-commit --no-ff -X theirs
git reset currentbranch
Run Code Online (Sandbox Code Playgroud)
需要“-X theirs”,因为“--strategy=theirs”不是有效的策略。
“--no-commit --no-ff”防止合并只将文件留在工作树中
重置取消合并状态,但保留文件。
最终结果将与检出不同的分支、复制文件、然后返回到原始分支并粘贴在它们之上的结果相同。
这正是checkout. 我们倾向于认为checkout仅用于让分支工作,但它也可以用于替换当前分支中的文件。假设你想currentbranch用otherbranch(例如复制otherbranch的所有文件并将它们粘贴到currentbrach)的内容替换的内容,那么
git checkout currentbranch
git checkout otherbranch .
Run Code Online (Sandbox Code Playgroud)
该命令说从 otherbranch 检出所有文件 (.) 并将它们放在 currentbranch 之上。请注意,与复制/粘贴类比不同,这还将删除 currentbranch 中其他分支中不存在的任何文件。缺点是您将丢失otherbranch 的所有提交历史记录。
以下序列将:
git diff currentbranch otherbranch不会显示任何变化 git checkout otherbranch
git checkout -b temp-merge-other
git merge currentbranch -s ours
git checkout currentbranch
git merge temp-merge-other --no-ff
git diff otherbranch # no difference
git log # commit history from dev is included
git branch -D temp-merge-other
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17333 次 |
| 最近记录: |