主持人注意:鉴于此问题已经发布了67个答案(其中一些已删除),请考虑在发布另一个问题之前是否提供任何新内容.
git pull和之间有什么区别git fetch?
跑步时我得到以下内容 git status
Your branch is ahead of 'origin/master' by 3 commits.
Run Code Online (Sandbox Code Playgroud)
我已经阅读了其他一些帖子,修复此问题的方法是运行,git pull --rebase但究竟什么是rebase,我会丢失数据还是这种与master同步的简单方法?
首先,通过3次提交得到"你的分支在原点/主人之前",然后我的应用程序恢复到早期更改的早期时间.
我怎样才能得到过去11个小时里所做的事情?
首先,我知道一些措辞相似的问题,例如:
其中没有一个(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的基本概念导致他们这样说出来而且我不理解.
这里有更多信息 …
所以情况如下:
$ git status #On
branch master
#你的分支在[x]提交之前位于'origin/master'之前.
#
关于SO的问题已有几个问题,但似乎没有一个问题专门针对我所拥有的场景类型.其中一个问题的答案最接近,但没有详细说明.
我会直接引用它:
如果在执行"git pull remote branch"后收到此消息,请尝试使用"git fetch"进行跟进.
Fetch似乎更新了远程分支的本地表示,当你执行"git pull remote branch"时不一定会发生这种情况.
这个提示确实有效.但"不一定会发生吗?" 为什么不?我需要了解这一点.什么拉不做?
我不想接管这个问题,所以这是我的详细情景:
涉及三台电脑.我开发的Mac,git repo(即origin/master)所在的家庭服务器以及从该服务器获取的Webfaction帐户.
我提交并且git push origin master仅在Mac上提交.作为正常工作流程的一部分,在Webfaction上运行的唯一命令是git pull origin master(作为Fabric部署脚本的一部分).我不修改那里的代码.我是一个独立的开发者,所以其他任何人都没有.
我偶尔会登录Webfaction并检查一些事情,包括a git status.不可避免地,我总是得到"你的分支在前面......"的信息.跑步git fetch使消息消失.
我将要添加git fetch到Fabric脚本来完成这个问题,但我想知道为什么需要这样做,特别是在源/主的只拉式克隆上.虽然我每天都使用基本功能,但我并不熟悉Git,所以我们将非常感谢新手友好的解释.
按要求更新,相关位来自config:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@[server_address]:[path/to/repo.git]
[branch "master"]
remote = origin
merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud) 我刚刚意识到我错误地从子目录运行了'git init'命令,然后在我项目的根目录下创建了一个主仓库.
这是一个错误,所以我运行'rm -fr'
嵌套目录'.git'上的命令(删除)不在项目的根目录中 - 认为这可以解决我的问题(我有多错)
现在的问题是,当我将项目推送到GitHub时,嵌套文件夹会变灰,就像它被忽略一样.
有没有办法撤消我所做的事情?或者我只需要重新开始?我是新手,并且正在尝试完成一个示例应用程序教程,但我看似破坏的目录对于生产环境中的部署至关重要.