我正在从 ClearCase 迁移到 Git,遇到两个问题:
我团队的某个人将他的一个分支 push “origin/master”分支并搞砸了该分支。我有一个本地 repo “master”,我想将它完全推送到我的分支机构。我该怎么做?
我的电脑上有两个分支 - 我想知道它们之间的区别,并制作一个脚本,人们可以从不同的计算机运行并重新应用所有更改(删除、插入和修改)。
(关于 2 的评论)非常重要:这两个分支是这样创建的: 这两个分支 - 一个比另一个更高级 - 也就是说,它包含另一个没有的更改,另一个没有第一个没有的版本。
也就是说,它不是 fork 。希望这可以简化事情。
最佳答案
(1)
git push -f origin master
-f
用你的覆盖远程分支。
(2)
这将获取 branch1
和 branch2
之间的提交 ID。
git log --pretty=format:%h branch1..branch2
然后您可以通过执行 git checkout abc123
转到每个。
顺便说一句,你想用#2 做什么?有许多非常棒的内置 git 功能,例如 git bisect
,它们可能会解决您的问题。
编辑:
(A) 如果你想保留提交历史,你应该创建一个补丁
git format-patch branch1..branch2 --stdout > my_patch.patch
这将包含 branch1
和 branch2
之间所有更改的补丁。然后应用它
git am < my_patch.patch
(B) 如果您只想要更改,而不需要提交,
git diff branch1..branch2 > my_patch..patch
然后
git apply < my_patch
关于git - Clearcase 到 Git 的迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20627405/