【问题标题】:Sync local git repo with remote in one shot discarding local changes/commits一次性将本地 git repo 与远程同步,丢弃本地更改/提交
【发布时间】:2014-06-13 15:15:25
【问题描述】:

我不是 git 专家,所以这可能看起来像一个愚蠢的问题。

我有本地和远程存储库,我想将我的本地存储库与远程存储库同步。我有许多本地更改、隐藏的更改以及尚未推送到远程的少数提交。

一种方法可以是删除所有本地更改(使用git clean),从远程恢复提交,而不是fetch/pull。但我认为必须有一些单一的命令可以一次性完成所有这些。我尝试使用git reset --hard HEAD 然后git pull 但这给了我:

# Your branch and 'origin/master' have diverged,
# and have 1 and 9 different commits each, respectively.

也在查看this question,但没有帮助。

【问题讨论】:

  • 您可以使用 FractalSpace 在stackoverflow.com/questions/6373277/… 的答案中的步骤并将它们放入脚本中
  • 如果你想设置你的master分支和远程master分支一样,你可以试试“git reset --hard origin/master”

标签: git version-control


【解决方案1】:

如评论所述,git reset --hard origin/master 会将您的 master 重置为上游。

但是:您当前的 master(及其本地提交)将“丢失”(至少,不再可见)。

所以一步并不是最好的方法。

我会推荐类似的东西:

git checkout master
git fetch origin
git branch tmp
git reset --hard origin/master
git checkout tmp
git rebase master
git checkout master
git merge tmp
git branch -d tmp

这样,您就可以在更新后的 master 之上重新构建本地提交

x--x--x--x--x (master, origin/master)       x--x--x--x--x--y'--y' (tmp, master)
       \                                 =>
        y--y  (tmp)                           (after rebase+merge)

【讨论】:

    【解决方案2】:

    如果您总是想在远程创建一个新分支来镜像和跟踪您的本地分支(反之亦然),那么永久修复是:

    git config --global push.default current
    

    在执行 git clone 后,我总是使用此命令配置本地 git。虽然在本地-远程分支出现“Git fatal: The current branch has no upstream branch”错误时可以随时应用。

    希望这会有所帮助。多平安。 :)

    【讨论】:

      【解决方案3】:
      git fetch -[options]
      

      结帐:

      git fetch --help
      

      你可以使用的功能

      【讨论】:

      • 您的评论没有真正的帮助
      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2019-07-14
      • 2021-07-03
      相关资源
      最近更新 更多