不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
当前回答
Git重置——soft origin/my_remote_tracking_branch
This way you will not loose your local changes
其他回答
当我基于分支a创建一个分支时遇到了这个问题
git checkout -b a
然后我将分支a的起始流设置为分支B的原点
git branch -u origin/B
然后我得到了上面的错误消息。
对我来说,解决这个问题的一个方法是,
删除分支a 创建一个新的分支b
git checkout -b b origin/B
git pull --rebase origin/master
是一个在大多数情况下可以帮助您的命令。
编辑:从源/主节点中提取提交,并将您的更改应用于新提取的分支历史记录。
你可能会遇到这种情况,只需要从remote中获取1个历史记录:
$ git pull --depth=1
fatal: refusing to merge unrelated histories
$ git status
Your branch and 'origin/main' have diverged,
and have 1 and 1 different commits each, respectively.
根据上面的回答,会导致两个分支分流到不同的“线”,所以Git认为这是不相关的历史。
---a---b---main
\ \
x x x x diverged, cannot be merged anymore
\ \
---?---?---?---c(origin/main)
最后,简单的解决方案是:git重置-硬的origin/main,如果你不关心本地的变化,否则你将失去所有的工作。
或者尝试git pull——depth=2。
我有这个问题,即使在阅读了上面的回复后,我也不知道是什么导致了它。我的解决办法是做
git reset --hard origin/master
然后,这只是将我的(本地)master副本(我认为是搞砸了)重置到正确的点,由(远程)origin/master表示。
警告:您将丢失所有尚未推送到原点/主节点的更改。
我更喜欢更方便、更安全的方式。
# copying your commit(s) to separate branch
git checkout <last_sync_commit>
git checkout -b temp
git cherry-pick <last_local_commit>
git checkout master
git reset --soft HEAD~1 # or how many commits you have only on local machine
git stash # safer, can be avoided using hard resetting on the above line
git pull
git cherry-pick <last_local_commit>
# deleting temporary branch
git branch -D temp