【问题标题】:Git Fetch/Pull confusionGit Fetch/Pull混淆
【发布时间】:2016-09-20 22:30:51
【问题描述】:

我是 git 的新手,目前正在尝试各种组合来理解 git。

我有一个名为“dev”的分支的存储库。现在最初我将我的本地与远程同步。然后我直接从 Github 换了遥控器。

如果我现在使用

git fetch origin dev:dev

然后我收到一个错误

fatal: Refusing to fetch into current branch refs/heads/dev of non-bare repository

但是,以下拉取命令可以正常工作

git pull origin dev

在 Stackoverflow 的一个回答中提到,提取后合并等同于 git pull。

如果是这样,那么为什么会出现这种差异?

问题链接:understanding git fetch then merge

PS:cmets 下面的链接建议的答案是正确的。但是我想知道

git fetch origin 

从包括当前分支在内的所有分支中获取。那为什么只在

的情况下执行检查
git fetch origin master:master

我无法理解此验证背后的原因。 任何帮助表示赞赏。

谢谢

【问题讨论】:

  • 其实pullfetch+merge的快捷方式。但是dev:dev 参数是其中的关键。请看一下这个答案:stackoverflow.com/a/32561463/2104879
  • 嗨 Mertyildiran,感谢您帮助我。你建议的答案是正确的。

标签: git github dvcs


【解决方案1】:

致命:拒绝获取非裸存储库的当前分支 refs/heads/dev

此错误通常意味着您正在获取一个没有远程分支的分支。我在这里做了一些假设,您希望从origin 存储库中获取并将最新更改从dev 合并到您的本地分支。如果是这种情况,那么您想尝试以下方法:

git fetch origin
git merge origin/dev

【讨论】:

  • 如果 fetch 只从远程分支下载更改并更新存储库数据,但保持本地分支不变,如果工作目录不会显示/反映更改,那么获取的意义何在?我的问题最初是我如何查看其他人所做的更改然后决定是否要将它们合并到我的工作目录中(即尝试其他人的更改以确保它不会破坏我的工作)但我仍然困惑如何做到这一点。我是否应该只进行 pul 和实验/探索,如果有问题,进行硬重置?
猜你喜欢
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 2011-11-02
  • 2018-03-05
  • 2020-07-27
  • 2017-11-26
  • 2022-06-14
  • 2012-05-13
相关资源
最近更新 更多