不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
当前回答
我更喜欢更方便、更安全的方式。
# 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
其他回答
当我基于分支a创建一个分支时遇到了这个问题
git checkout -b a
然后我将分支a的起始流设置为分支B的原点
git branch -u origin/B
然后我得到了上面的错误消息。
对我来说,解决这个问题的一个方法是,
删除分支a 创建一个新的分支b
git checkout -b b origin/B
在我的例子中,这里是我所做的导致分歧的消息:我做了git push,但后来做了git commit——amend,以向commit消息中添加一些东西。然后我又做了另一次提交。
所以在我的例子中,这仅仅意味着原点/主节点已经过时了。因为我知道没有其他人在触摸原点/master,修复是微不足道的:git push -f(其中-f表示力)
Git重置——soft origin/my_remote_tracking_branch
This way you will not loose your local changes
我相信这应该对我有帮助:
git reset --hard origin/master
但事实并非如此。不知怎的,我得到了同样的消息&当我从远程分支中提取更改时,冲突就发生了。因为我确定我根本不需要我现有的本地分支&我只需要一个远程主分支的副本,因此我想出了这个解决方案:
签出到一个新的分支,例如,git Checkout -b placeholder-branch。注意:该分支可以稍后删除。 git分支-D master,我这样做是因为我确定我的本地分支被搞砸了&我不需要这个。我需要远程实例的新副本。 Git签出-跟踪原点/master &你完成了;现在你可以使用git branch -D删除占位符分支
在我的情况下,我得到这个消息时,我按X。1从分支B提交到它的远程跟踪分支remote_B。然后在我的本地存储库,我做了更改,并将其修改为相同的提交ie。X ver.2。
现在我们在远程repo上提交xver1,并提交xver。2在本地。 然后git会警告你
您的本地分支和remote_分别有1个和1个不同的提交
要解决这个问题,你有两个选择:
1.从远程跟踪分支提取变更。
git reset --hard HEAD
git checkout --track remoteRepoName/branch_name
2.强制将修改后的提交推到远程回购。 (仅建议在推X ver1提交后远程回购没有被任何人拉)
git push -f remote_repo_name remote_branch_name