在git pull
之后,我不想丢失一些信息,所以我之前做了git fetch
。 git fetch
之后,在哪里可以阅读新的修改? 我转到了FETCH_HEAD
文件,但仅此而已。
$ git pull
remote: fatal: object 21f3981dd35fccd28febabd96f27241eea856c50 is corrupted
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header
有什么想法为什么会失败吗?
当我运行git --bare fsck-objects --full
时,我只看到悬挂的链接,但没有断开的链接。 同样git gc
也无济于事。 当我重新克隆或从另一个克隆中拉出时,看不到此错误。
我想知道我的本地仓库是否是最新的(如果不是,理想情况下,我想查看更改)。
如果不进行git fetch
或git pull
怎么办?
我很难理解git-fetch的细微差别。 我知道执行<+?src:dest>
会将远程参考提取到本地跟踪分支中。
我有几个问题:
本地跟踪分支是否可能不存在? 如果是这样,它将自动创建吗?
如果我执行<+?src:dest>
并将非跟踪分支指定为目的地,将会发生什么?
git-fetch的手册页指定:
<+?src:dest>
我将如何使用refspec将内容从我的远程主服务器获取到其远程跟踪分支? 我相信,如果我当前的HEAD处于主人状态并且我跑步
<+?src:dest>
但是,我可以使用<+?src:dest>
refspec来实现同一目的吗? 我认为这将帮助我更好地理解概念。
还有一个问题:
我的.git / config文件具有以下用于提取的行(仅显示相关行):
fetch = +refs/heads/*:refs/remotes/origin/*
有人可以解释一下这行的确切含义吗?
我设置了一个远程存储库,可以将新的更改推送到该存储库,但是我无法从中获取,我总是收到(而不是神秘的)错误消息:
fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly
这是什么意思? 我应该怎么做才能启用提取功能?
(请注意,此远程存储库仅用作备份存储库,因此它几乎应该是我的本地存储库的精确副本。我真的不明白为什么我可以推送到该存储库但不能从中获取...)
我的配置看起来像:
[remote "origin"]
url = ssh://blablablah
fetch = +refs/*:refs/*
mirror = true
我在git中设置了一些远程跟踪分支,但是一旦用“git fetch&#39;”更新它们,我似乎永远无法将它们合并到本地分支中。
例如,假设我有一个名为&#39; an-other-branch&#39;的远程分支。 我在本地设置为跟踪分支使用
git branch --track an-other-branch origin/an-other-branch
到现在为止还挺好。 但是如果该分支得到更新(通常是我移动机器并从该机器提交),并且我想在原始机器上更新它,我在使用fetch / merge时遇到了麻烦:
git fetch origin an-other-branch
git merge origin/an-other-branch
每当我这样做,我都会得到一个已经最新的&#39; 消息,没有任何合并。
但是,一个
git pull origin an-other-branch
总是像你期望的那样更新它。
另外,运行git diff
git diff origin/an-other-branch
表明存在差异,所以我认为我的语法错了。
我究竟做错了什么?
编辑[2010-04-09]:我已经检查了几次,我绝对不会在另一个分支上。 如果我的git fetch&#39; 然后是一个&#39; git merge&#39; (如上所示)与git pull完全相同的东西? 我将得到一些显示git状态等结果的工作流程。
这个问题在这里已有答案:
我从GitHub的回购中分得一杯羹。 我想从另一个用户的分支中获取分支代码。
我必须将此用户的整个仓库克隆到单独的本地仓库,还是可以执行类似git checkout link_to_the_other_users_branch
的操作?
我正在开发一个Git分支,它有一些破坏的测试,我想从另一个已经修复的分支中提取(合并更改,而不仅仅是覆盖)这些测试。
我知道我能做到
git pull origin that_other_branch
但这将尝试合并许多其他文件,因为我尚未准备好。
是否可以从另一个分支中提取和合并指定的文件(而不是所有内容)?
这不仅仅是对一个文件的Git pull请求的重复,因为该问题的所有答案都是如何将本地更改的文件还原到存储库版本,而不更改任何分支。
FETCH_HEAD
说:
在默认模式下,git pull是git fetch的简写,后跟git merge FETCH_HEAD。
这是什么FETCH_HEAD
,以及git pull
中实际合并的内容是什么?
有没有办法只从远程Git仓库检索一个特定的提交而不在我的PC上克隆它? 远程仓库的结构与我的结构完全相同,因此不会有任何冲突,但我不知道如何做到这一点,我不想克隆那个庞大的存储库。
我是git的新手,有什么办法吗?
在我的分支上,我在.gitignore中有一些文件
在不同的分支上,这些文件不是。
我想将不同的分支合并到我的,我不在乎这些文件是否不再被忽略。
不幸的是我明白了:
合并将覆盖以下未跟踪的工作树文件
如何修改我的pull命令来覆盖这些文件,而不必自己查找,移动或删除这些文件?
另一个问题说git pull
就像是git fetch
+ git rebase
。
但是git pull
VS git fetch
+ git rebase
之间的区别是什么?
如何在git pull
上强制覆盖本地文件?
场景如下:
这是我得到的错误:
error: Untracked working tree file 'public/images/icon.gif' would be overwritten by merge
如何强制Git覆盖它们? 这个人是设计师 - 通常我会手动解决所有冲突,因此服务器具有他们只需要在他们的计算机上更新的最新版本。
我的同事和我在同一个存储库上工作,我们将它分成两个分支,每个分支在技术上用于不同的项目,但它们有相似之处,因此我们有时希望从分支机构返回给* master。
但是,我有分支机构。 我的问题是,我的同事怎么能专门拉那个分支? 回购的-b checkout
似乎没有在他本地为他创建分支,虽然我可以看到他们在推动我的结束后生活在一起。
此外,当我最初创建分支时,我做了-b checkout
。不确定这是否有太大区别?
iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
git fetch origin discover
git checkout discover
这些是我运行的命令。 但它绝对不起作用。 我希望能够检查该分支,然后推送并提交来自各个协作者或工作站的分支更改。
主持人注意:鉴于此问题已经发布了67个答案(其中一些已删除),请考虑在发布另一个问题之前是否提供任何新内容。
git pull
和git fetch
之间有什么区别?