我对Git很陌生,虽然理解其概念,但不认为我能很好地实践。
我被要求在分支uitest
上工作,但由于我可能没有正确地完成推送、提交和拉取,我已经让分支产生了分歧。
由于我是新手,并且我也不想把其他开发人员的代码覆盖成我的代码或更改,因为我的代码或更改只是为了试用Git并学习它如何运作,所以如果需要,我愿意放弃我的更改,因为我有一份所有需要重新做的东西的备份。
$ git status
# On branch uitest
# Your branch and 'origin/uitest' have diverged,
# and have 47 and 6 different commits each, respectively.
#
nothing to commit (working directory clean)
我该如何“取消合并”?放弃我的更改并从最新的更改中拉取最新的更改,然后继续工作而不会干扰其他人的工作。
此外,由于我是新手,请在您的回答中稍微详细说明,因为它可能对我没有多少意义。
git reset --hard origin/uitest
对我十分有帮助 :) 谢谢。我能在这里问个傻问题吗?我通常都是这样做的,你能帮我规划一个工作流程以避免这样的问题吗?我想打开文件,在本地进行更改直到我满意为止,然后当我觉得一切都正常时,我想要推送所有的更改... 我的意思是,我应该按什么顺序进行 push、pull、commit、add 等操作呢?我并不完全理解这些命令,因为我是新手,但我非常兴奋和有兴趣学习(GUI 综合症 [笑])。 - Valgit pull
,但我个人不喜欢这种解决方案。我倾向于使用rebase工作流程。所以我会执行git fetch --all
,git rebase @{u}
,测试,然后git push
。第一个命令从远程获取最新的数据,第二个命令将我的更改重新定位到最近的上游提交之上,然后我进行测试,最后推送我的更改。如果有新的内容出现,我会重新开始这个过程。我也经常在单独的分支上进行工作,然后在主分支上执行git fetch --all
,git merge --ff-only @{u}
,然后合并分支,测试并推送。这是我最常用的方法。 - John Szakmeister