我只想知道提交Git存储库的正确方法。假设我的本地更改了一些服务器版本也有变化的文件(存在明显的冲突)。我希望我必须首先拉出服务器更改。当一些冲突显示我必须手动解决冲突然后我将不得不提交并再次推送更改。请指教。我对流行保存的需要感到困惑。我需要在这种情况下弹出保存吗?
答案 0 :(得分:4)
这些是您的选择。首先提交您的更改。如果您不提交更改,Git将不允许您合并来自上游的更改(您将无法从服务器中看到新版本)。
获取,合并,然后(最终)推送。获取和合并与git pull
相同。
获取,变基,然后(最终)推送。获取和rebase与git pull --rebase
相同。
请记住,您尚未推送的任何内容,您可以在本地更改而不会产生任何后果。
请注意,如果您尚未将服务器的最新更改合并到本地存储库,push
将失败。听起来这正是你所希望的。也就是说,只要您避免使用push --force
。
答案 1 :(得分:1)
一些事情。
在进行git推送之前,你总是需要做一个git pull。除非您的回购包含所有新工作,否则Git不会让您推动更改。
如果存在任何合并冲突,您可以简单地解决它们,然后在新提交中提交这些合并冲突。
那时你只是做一个git push。
如果你一直在做工作并且没有提交代码更改,这就是意见和问题的来源。很多人会在处理合并冲突之前做一个git stash,然后在最终git之后弹出一个git pop推。如果您不小心,最终可能会提交您不想要的新代码更改。但是,通过适当的测试,发布分支和开发实践,这不应该发生。
你的命令看起来应该是这样的。
git pull
# Manually resolve any conflicts, hopefully there are few
git add conflict_file
git commit -m "Fixed merge conflicts with my new devwork"
git push