【问题标题】:git - Why reset --hard seems to be always neededgit - 为什么 reset --hard 似乎总是需要
【发布时间】:2015-08-23 22:33:41
【问题描述】:

当在同一个 git 项目的两个工作站上工作时(比如一个在办公室,一个在家里),在从一个提交/推送并尝试从另一个(比如第二天)拉取之后,分支似乎总是之后不同步

git pull --all

需要here提出的解决方案。

这是为什么呢? (我从来没有像上面帖子中暗示的那样强制推送)。

【问题讨论】:

  • 当您说“不同步”时,您是什么意思?你能举个例子吗?
  • 远程与本地分支(跟踪远程!)中的内容不同。本地没有合并git pull --all之后的改动。例如,我在远程看到目录(通过 github 或 bbucket 的 web 访问它时),而我在本地看不到。这些更改是在我以前的工作站工作时提交的(例如前一天)。
  • 嗯,这很奇怪。您确定您的本地人正在跟踪远程?当您执行git branch -vv 时,它是否将其显示为跟踪?你的两台机器上都会发生这种情况吗?

标签: git sync reset pull


【解决方案1】:

处理 git 存储库因一些悬空头或强制推送而损坏的最安全方法是使用以下内容:

git fetch
git rebase origin/your_branch

git pull 默认获取然后合并而不是变基。

合并和变基之间的区别可以在这里找到: https://www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview

您现在应该做的是从您的两个工作站中删除 repo(显然是在提交并推送所有本地更改之后)。再次克隆它。为“your_origin_branch”创建一个本地跟踪分支。并按照上述程序进行更改。

【讨论】:

  • 小补充:如果你从一个工作站获取你的更改,你也可以git pull --ff --ff-only to "pull && merge --ff-only`。当然,这只有在没有(未发布)当前分支上本地仓库中的更改。
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 2018-01-13
  • 2014-08-25
  • 2019-09-05
  • 2011-04-01
相关资源
最近更新 更多