【问题标题】:Git merge conflict issue. git rebase or git pull --rebase?Git 合并冲突问题。 git rebase 还是 git pull --rebase?
【发布时间】:2018-07-09 21:37:15
【问题描述】:

我自己在做一个项目,遇到了合并冲突错误。这就是发生的事情。

  • 首先,我为项目创建了一个存储库
  • 我一直在单独更新 repo,没有任何合作者
  • 我一直在通过 git add 更新更改。 -> git commit -> git push origin master。
  • 只有一个分支,主人。 (origin/master.) 该项目仅存在于存储库和我的机器中。

几天前,我尝试进行常规更新,但遇到了合并冲突错误。我认为这是因为我已将 readme.md 和其他内容添加到存储库(在 github 中)并在本地提交了一些更改,但没有将其推送到存储库。仍然不清楚为什么会这样。

我想要做的是,机器中的代码(本地更改)是最新的。我不关心回购中发生的变化,因为它已经过时了。 只想使用本地提交的更改更新存储库

我正在对此进行研究,似乎 git rebasegit pull --rebase 是可能的选择。在这种情况下,哪一个更适合我?那些甚至适合我吗?

谢谢

【问题讨论】:

  • 如果你只是想用你在本地拥有的更新存储库,并准备丢失在服务器上所做的更改,而不是在本地,你需要做的是推送,而不是拉取。 git push --force。我已经警告过你了。希望您仔细阅读此评论。
  • @JBNizet 谢谢你的回复。是的,服务器中所做的更改很小,可以丢失。我想我可以使用git push --force。但是我也想知道当我需要保留在服务器中所做的更改时应该怎么做,并在发生合并冲突时更新我的​​本地更改。对我的情况来说并不完全必要,但知道会非常有用。
  • 我会 git fetch,然后 git rebase -i upstream/master。但最重要的是,我不会使用github直接在服务器上进行更改,也不会直接在master上工作,而是在分支中工作。

标签: git github


【解决方案1】:

你需要做一个

git fetch

首先,因为您已经远程更新了 readme.me。一旦您获取远程更改,您的 git 状态将显示您的分支已经分歧。为了解决这个问题,你做一个

git rebase

此命令将在远程更改之上运行您当前的本地提交,而无需创建合并提交。现在,如果您再次查看 git status,您将看到您的分支(本地)在远程之前是 X 次提交。 在这个阶段,您可以执行 git push 到远程 master 即 origin/master 或任何其他分支。希望这会有所帮助。

如果您根本不关心远程更改并想覆盖远程更改,请执行

git push -f

【讨论】:

    【解决方案2】:

    在您的情况下,您需要使用远程 repo 分支更新本地分支。您应该使用git pull --rebase 这样做,因为它将您的本地更改应用到远程更改之上。检查此SO answer 解释git pull --rebasegit rebase 之间的区别

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 2011-12-16
      • 2018-10-14
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多