【问题标题】:"git fetch" doesn't update commit history in "git log"“git fetch”不会更新“git log”中的提交历史
【发布时间】:2020-12-18 13:38:57
【问题描述】:

我是 git 工作流程的新手,并且正在关注有关“git fetch”的在线教程。以下是执行的步骤:

  1. “git pull”从远程仓库同步文件和历史记录
  2. 同一用户 在线执行了新的提交
  3. “git remote show origin”显示本地分支与远程仓库“过时”
  4. 执行“git fetch”是为了同步元数据而不是本地文件

对于教程--> git fetch 之后,当使用“git log”查看提交历史时,会显示最后一次执行的提交以及是谁做的

对我来说 --> 使用“git log”时在“git fetch”之后,它不显示最后执行的提交

我尝试了“git pull”,然后提交历史记录和本地文件都得到了更新。 我在这里做错了吗(或)“git fetch”不应该更新日志历史记录

【问题讨论】:

    标签: git git-commit git-log git-fetch


    【解决方案1】:

    您需要执行git pull,或将远程跟踪分支与您的本地分支合并。假设您的本地分支被命名为local,您可以这样做:

    # from local
    git pull origin local
    

    # from local
    git fetch origin
    git merge origin/local
    

    只执行git fetch 的问题在于它更新了远程跟踪(本地)分支origin/local,但没有实际上对您的local 分支执行任何操作。要将local 更新为最新工作,您需要git pull(第一个选项),它与origin/local 合并,或者只是与origin/local 进行显式合并(第二个选项)。

    【讨论】:

    • 我在这里有一点疑问。当您如上所述执行“git pull”时(如果远程在提交之前),我的本地编辑文件会发生什么?我会保留更改(或)远程文件会替换我的本地文件吗?
    • 视情况而定。在早期版本的 Git 中,您永远无法做到这一点,并且您会收到警告说您的本地更改将被覆盖。在更高版本的 Git 中,有时拉取是可能的,有时则不是。执行git pull 时始终拥有干净的工作目录/阶段的最佳实践。
    • 我刚刚发现在“git pull”的情况下“本地更改永远不会被覆盖”。仅当清除 git 状态并且没有合并冲突时才会发生覆盖。如果 Online Repo 中的新提交(例如新文件添加(或)文件更改)与本地的上次提交不冲突,则始终保留本地更改,并且在任何冲突的情况下,它不允许我们执行“git pull”。感谢您的帮助
    【解决方案2】:

    是的,您已经与远程同步数据,但没有更改您的头部提交,所以如果您想检查远程提交日志,您应该使用git log origin/master,其中origin 是远程名称,master 是分支的名称你想展示。
    如果你想从远程将你的提交更改为最新的,你应该使用git pull 而不是git fetch

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 2011-10-08
      • 2013-03-24
      • 2011-01-19
      • 1970-01-01
      • 2023-01-30
      • 2013-01-23
      相关资源
      最近更新 更多