主持人注意:鉴于此问题已经发布了67个答案(其中一些已删除),请考虑在发布另一个问题之前是否提供任何新内容.
git pull和之间有什么区别git fetch?
如何将本地分支重置为远程存储库中的分支?
我做了:
git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)
但当我跑一个git status,
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: java/com/mycompany/TestContacts.java
modified: java/com/mycompany/TestParser.java
Run Code Online (Sandbox Code Playgroud)
你能告诉我为什么我有这些'修改'?我没有碰过这些文件?如果我这样做,我想删除它们.
这实际上是怎么产生的?
我现在正在自己的一个回购工作,所以这是我的工作流程:
然后,当我这样做时,git status它告诉我我的分支是由X提交提前(可能与我提交的提交数量相同).是因为当您推送代码时它实际上并不更新本地缓存的文件(在.git文件夹中)?git pull似乎'修复'这个奇怪的消息,但我仍然好奇它为什么会发生,也许我使用git错了?
包括在消息中打印的分支
我当地的分公司领先于大师
你在哪里推/拉当前分支
我正在推送GitHub并拉到我当时正在处理的任何一台计算机上,我的本地副本总是完全是最新的,因为我是唯一一个正在处理它的人.
它实际上并没有检查远程仓库
这就是我的想法,我想我会确保我对它的理解是正确的.
你传递一些额外的论据吗?
不是我能看到的,也许我的结尾有一些有趣的配置?
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud) 我很难理解git-fetch的细微差别.我知道做一个fetch,将远程refs提取到本地跟踪分支.
我有几个问题:
是否有可能本地跟踪分支不存在?如果是,那么它会自动创建吗?
如果我执行fetch并指定非跟踪分支作为目标,会发生什么?
git-fetch的手册页指定:
git-fetch <options> <repository> <refspec>
Run Code Online (Sandbox Code Playgroud)我如何使用refspec从远程主站获取内容到其远程跟踪分支?我相信如果我现在的HEAD在主人身上并且我跑了,这可能是可能的
git fetch origin master
但是,我可以使用<+?src:dest>refspec来实现同样的目的吗?我认为这将有助于我更好地理解这些概念.
还有一个问题:
我的.git/config文件有以下行用于获取(仅显示相关行):
fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
有人可以解释这条线的确切含义吗?
首先,我知道一些措辞相似的问题,例如:
其中没有一个(AFAICT)的答案与我的问题版本相符.
我的情况是:
$ git status
# On branch stable
nothing to commit (working directory clean)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 857 commits.
Run Code Online (Sandbox Code Playgroud)
在现有的问题中,接受和赞成的答案大多同意它意味着字面上的意思......我领先,我需要将我的新提交推送到origin/master.
我知道实际情况恰恰相反,我的本地master分支是在远程origin/master控制器后面,实际上我需要git pull origin master在本地做一些工作之前.(或者可能只是git fetch origin?)
我的问题是......是否有一些理由说明这些信息的措辞Your branch is ahead of 'origin/master' by 857 commits.是否真的有意义?
因为我现在理解它的方式与消息所说的相反('我的分支' 在原点/主人之后).
或者它的确意味着:"远程主分支的HEAD领先于您的本地原点/主跟踪分支"?
更新 FWIW我在一个由六个其他开发人员组成的团队中工作.我们每天都会多次拉,提,推等等没有问题.我这里没有错误...我只是想了解为什么Git用这种方式说出它的信息 - 措辞本身是否被错误选择,或者是否有一些Git的基本概念导致他们这样说出来而且我不理解.
这里有更多信息 …