我最近遇到了一个问题,同时解决了git pull之后的冲突。 我无法正确解决冲突,因为我对git很新。 我跟随分支机构:
我正在进行分期分支。 在git pull之前我已经提交了我的代码,所以我决定恢复我在尝试解决冲突时想要做的所有事情。
所以我做了git log并做了git checkout [shaofmylastcommit]
。现在我得到了我的代码,所以其他开发人员的代码是冲突的原因,他给了我他替换为我的文件,并将我的代码添加到我更换文件之前我复制了。
现在我再次提交了我的代码,但是当我尝试git push时,它给了我一个错误,说你处于独立的头部,我不明白。所以我想我需要再次在我的分支上推送代码,所以我做了git checkout staging
但现在我所有的改变都消失了,这吓坏了我。但我得到了一个说法"这是一个很好的时机来保持对新分支的更改,因为你试图切换分支"或类似的东西。所以我完全做了,我得到了一个名为" promotion"。
的新分支现在我做了git checkout promotion
并得到了我的更改(感谢上帝!p!)......
但现在我有了这个新的分支,我应该在分支机构工作" staging"所以我应该怎么做,如果我将来遇到类似的问题该怎么办,我猜我没有必要创建一个新的分支我可以推动这些变化从分支" staging",但是我处于一个独立的头上,我不知道什么意思是exaclty。
答案 0 :(得分:0)
如果您已检出正确的提交,并查看正确的内容,但错误的分支,则可以将暂存分支重置为该提交:
git checkout staging
git reset --hard <yourCommit>
但是,如果git push
需要--force
,那可能不是一个好主意。
另一种方法是:
将暂存分支重置为origin / staging(这样,只需推送在该分支上完成的任何新提交,不使用--force)
git checkout staging
git reset --hard origin/staging
在该分支上重播您的提交(或两次提交):
git cherry-pick <one-commit>
git cherry-pick <second-commit>
然后你可以正常推动。