我如何在git中找到origin / master的位置,以及如何更改它?
我是Git新手。 我最近将一个Rails项目从Subversion移到了Git。 我在这里跟着教程:http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/
我也使用unfuddle.com来存储我的代码。 我在列车上的Mac笔记本电脑上进行了更改,然后在使用以下命令建立网络连接时将它们推开:
git push unfuddle master
我使用Capistrano进行部署,并使用主分支从unfuddle存储库中提取代码。
最近,我在笔记本上运行“git status”时发现了以下消息:
# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)
我对此感到困惑。 我认为我的笔记本电脑是原产地......但不知道我最初从Subversion提取或推到Unfuddle的事实是什么导致该消息出现。 我怎么能够:
我的Mac正在运行Git版本1.6.0.1。
当我按照dbr的建议运行git remote show origin
,我得到以下结果:
~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin
fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
当我按照Aristotle Pagaltzis的建议运行git remote -v
,我得到以下结果:
~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v
origin /Users/brian/Projects/GeekFor/gf/.git
unfuddle git@spilth.unfuddle.com:spilth/geekfor.git
现在,有趣的是,我正在geekfor
目录中处理我的项目,但它说我的起源是gf
目录中的本地机器。 我相信gf
是将我的项目从Subversion转换为Git时使用的临时目录,并且可能是我推动解压的地方。 然后我相信我从一堆新鲜的副本中检出了geekfor
目录。
所以看起来我应该遵循dbr的建议做:
git remote rm origin
git remote add origin git@spilth.unfuddle.com:spilth/geekfor.git
1.
找出Git认为'origin / master'正在使用git-remote
git remote show origin
..它会返回像.. ..
* remote origin
URL: me@remote.example.com:~/something.git
Remote branch merged with 'git pull' while on branch master
master
Tracked remote branch
master
远程基本上是到远程存储库的链接。 当你做...
git remote add unfuddle me@unfuddle.com/myrepo.git
git push unfuddle
..git会将更改推送到您添加的地址。 它就像一个书签,用于远程存储库。
当你运行git status
,它会检查远程是否缺少提交(与本地存储库相比),如果是,则提交多少提交。 如果您将所有更改推送到“源”,两者都将同步,因此您不会得到该消息。
2.
如果它在别的地方,我怎么把我的笔记本电脑变成'origin / master'?
这样做没有意义。 说“起源”更名为“笔记本电脑” - 你永远不想从你的笔记本电脑做git push laptop
电脑。
如果你想删除远程的来源,你做..
git remote rm origin
这不会删除任何东西(根据文件内容/修订历史记录)。 这将停止“你的分支在......之前”消息,因为它不再将你的存储库与远程数据库进行比较(因为它已经不存在了!)
有一点要记住的是,没有什么特殊的origin
,它只是一个默认名称的Git使用。
当你做git push
或git pull
类的事情时,Git会默认使用origin
。 所以,如果你有一个遥控器使用了很多(在你的情况下是Unfuddle),我会建议添加unfuddle作为“原点”:
git remote rm origin
git remote add origin git@subdomain.unfuddle.com:subdomain/abbreviation.git
或者使用set-url在一个命令中执行上述操作:
git remote set-url origin git@subdomain.unfuddle.com:subdomain/abbreviation.git
然后你可以简单地做git push
或者git pull
来更新,而不是git push unfuddle master
我来到这个问题寻找一个关于什么信息“你的分支在......前面”的解释,在git的总体方案中的解释。 这里没有答案,但是因为当你搜索短语“你的分支早于'origin / master'”时,这个问题目前出现在Google的顶部,而且我已经知道了这个消息的真正含义,我想我会在这里发布信息。
所以,作为一个git新手,我可以看到我需要的答案是一个明显的新手答案。 具体来说,“你的分支在......前面”的意思是你有一些文件你已经添加并提交到你的本地仓库,但从未推到原点。 至少对我而言,“git diff”没有显示出任何区别,这个消息的意图进一步被混淆了。 直到我运行“git diff origin / master”时才被告知我的本地存储库和远程主服务器存在差异。
所以,要清楚:
“你的分支在......之前” =>你需要推送给远程主人。 运行“git diff origin / master”以查看本地存储库与远程主存储库之间的区别。
希望这有助于其他新手。
(另外,我认识到配置的细微之处可能会使这个解决方案部分失效,例如主控制器实际上可能不是“远程”的事实,并且“起源”是可以通过约定等使用的可重新配置名称。但是新手可以不关心这种事情,我们希望得到简单而直接的答案,一旦我们解决了紧迫的问题,我们可以在稍后阅读有关细节。)
伯爵
我有一个类似于这个问题的地方,那就是我的工作目录在ahead of origin by X commits
是ahead of origin by X commits
但是git pull
导致了Everything up-to-date
。 我确实设法通过遵循这个建议来解决它。 我在这里发布此信息,以防其他人遇到类似问题。
基本修正如下:
$ git push {remote} {localbranch}:{remotebranch}
括号中的单词应该用远程名称,本地分行名称和远程分行名称替换。 例如
$ git push origin master:master
链接地址: http://www.djcxy.com/p/539.html
上一篇: How can I find the location of origin/master in git, and how do I change it?