【问题标题】:Git pull merge fetchGit拉合并获取
【发布时间】:2013-10-02 11:31:22
【问题描述】:

我正在尝试解决 Git 的问题。我正在使用 TortoiseGit。

基本上我检查了主分支并且没有进行任何更改,现在我想更新我的本地存储库。

据我了解,有几个命令:

获取:从远程分支下载信息

合并:将所述信息合并到本地分支中

拉动:结合以上操作

但是,有一些我看不懂的地方:

  • 当我检查修改时,它显示我修改了很多文件(我没有修改)。我不知何故认为这些变化与远程分支的变化有关
  • 当我执行 fetch 时,它会正确获取远程信息,如果我随后执行合并,它会显示“已经是最新的”,但是,如果我执行 pull(据说结合了两者),我会收到一条错误消息,说我的本地修改将被合并覆盖。这让我感到惊讶,因为我没有进行任何本地修改。这可能与前一点有关,但我看不到如何。

我是否误解了 Git 的基础知识,或者谁能向我解释这种行为?

【问题讨论】:

  • 让我感到奇怪的是我没有接触任何文件。然而,我确实执行了一次 fetch 。目前我拥有最新版本的代码,但只有在我进行了还原然后拉取之后。上述更改是如何在我的本地存储库中出现的?
  • 会不会是行尾从unix改成了windows,反之亦然?

标签: git merge fetch pull


【解决方案1】:

可能有很多事情可以被视为改变。首先实际上相当于git pull

git fetch
git merge FETCH_HEAD

现在,在您完成此操作后,您可能想要执行git diff FETCH_HEAD 以了解 Git 认为哪些差异。您可能希望将 FETCH_HEAD 替换为对用户更友好的内容,例如 origin/master

可能是行尾,也可能只是文件的修改时间,无论哪种方式,如果你想摆脱你的“修改”,你可以做git reset --hard这将重置所有工作树文件恢复到它们在 HEAD 中的内容,大概您现在可以进行拉取。

或者,您可以直接重置为最新的 git reset --hard FETCH_HEAD(或例如 origin/master)。

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2021-10-12
    • 2016-11-13
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多