当前位置:  开发笔记 > 运维 > 正文

如何在git中找到origin/master的位置,如何更改?

如何解决《如何在git中找到origin/master的位置,如何更改?》经验,为你挑选了5个好方法。

我是一个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进行部署,并使用master分支从unfuddle存储库中提取代码.

最近,当我在笔记本电脑上运行"git status"时,我注意到以下消息:

# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)

我很困惑为什么.我以为我的笔记本电脑是原产地...但不知道我最初是从Subversion拉出来还是推送到Unfuddle,这是导致消息显示的原因.我怎么能够:

    找出Git认为'起源/主人'的位置?

    如果它在其他地方,我如何将我的笔记本电脑变成'原产地/主人'?

    得到这条消息就消失了.这让我觉得Git对某事不满意.

我的mac正在运行Git版本1.6.0.1.


当我git remote show origin按照dbr的建议运行时,我得到以下内容:

~/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

当我git remote -v按照Aristotle Pagaltzis的建议跑步时,我得到以下信息:

~/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时使用的临时目录,也可能是我推动它解开的地方.然后我相信我检查了从unfuddle到geekfor目录的新副本.

所以看起来我应该遵循dbr的建议并做:

git remote rm origin
git remote add origin git@spilth.unfuddle.com:spilth/geekfor.git

Earl Jenkins.. 285

我来到这个问题寻找关于"你的分支在......前面"的信息的解释,意思是,在git的一般方案中.这里没有答案,但是当你搜索"你的分支领先于'origin/master'"这个短语时,这个问题目前显示在谷歌的顶端,我已经弄明白了这个消息的真正含义,我以为我会在这里发布信息.

所以,作为一个git新手,我可以看到我需要的答案是一个明显的新手答案.具体来说,"你的分支在......前面"的短语意味着你已经添加并提交到本地存储库的文件,但从未推送到原点.这个消息的意图进一步模糊了这样一个事实:"git diff",至少对我而言,没有显示出任何差异.直到我运行"git diff origin/master"时才被告知我的本地存储库和远程主服务器之间存在差异.

所以,要明确:


"你的分支领先于......" =>你需要推送到远程主机.运行"git diff origin/master"以查看本地存储库与远程主存储库之间的差异.


希望这有助于其他新手.

(另外,我认识到存在可能部分地使该解决方案无效的配置细微之处,例如主设备实际上可能不是"远程"的事实,并且"origin"是约定所使用的可重新配置的名称等.但是新手做的不关心那种事情.我们想要简单明了的答案.一旦我们解决了紧迫的问题,我们可以稍后阅读细微之处.)

伯爵



1> Earl Jenkins..:

我来到这个问题寻找关于"你的分支在......前面"的信息的解释,意思是,在git的一般方案中.这里没有答案,但是当你搜索"你的分支领先于'origin/master'"这个短语时,这个问题目前显示在谷歌的顶端,我已经弄明白了这个消息的真正含义,我以为我会在这里发布信息.

所以,作为一个git新手,我可以看到我需要的答案是一个明显的新手答案.具体来说,"你的分支在......前面"的短语意味着你已经添加并提交到本地存储库的文件,但从未推送到原点.这个消息的意图进一步模糊了这样一个事实:"git diff",至少对我而言,没有显示出任何差异.直到我运行"git diff origin/master"时才被告知我的本地存储库和远程主服务器之间存在差异.

所以,要明确:


"你的分支领先于......" =>你需要推送到远程主机.运行"git diff origin/master"以查看本地存储库与远程主存储库之间的差异.


希望这有助于其他新手.

(另外,我认识到存在可能部分地使该解决方案无效的配置细微之处,例如主设备实际上可能不是"远程"的事实,并且"origin"是约定所使用的可重新配置的名称等.但是新手做的不关心那种事情.我们想要简单明了的答案.一旦我们解决了紧迫的问题,我们可以稍后阅读细微之处.)

伯爵


如果你在`git pull remote branch`之后遇到这个错误,你也可能需要运行`git fetch`.你的裁判可能已经过时了.`git fetch`解决了这个问题.
@Earl不会'git diff --cached origin/master`在这里是更好的指令,因为它说明了下一次推送的结果是什么?你上面突出显示的命令也显示了未提交和未提交的文件(我想,我也是一个git新手)

2> dbr..:

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,它会检查远程是否缺少提交(与本地存储库相比),如果是,则检查提交的数量.如果您将所有更改推送到"origin",则两者都将同步,因此您将不会收到该消息.

2. 如果它在其他地方,我如何将我的笔记本电脑变成'原产地/主人'?

这样做没有意义.说"起源"被重命名为"笔记本电脑" - 你永远不想用git push laptop你的笔记本电脑做.

如果你想删除原始遥控器,你可以..

git remote rm origin

这不会删除任何内容(就文件内容/修订历史而言).这将停止"你的分支正前方......"消息,因为它将不再将你的存储库与遥控器进行比较(因为它已经消失了!)

要记住的一件事是没有什么特别之处origin,它只是git使用的默认名称.

origin当你做像git push或做的事情时,Git 默认使用git pull.所以,如果你有一个遥控器,你会使用很多(在你的情况下是Unfuddle),我建议你将unfuddle添加为"origin":

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 pushgit pull更新,而不是git push unfuddle master


我不明白为什么人们会重新提问.它改变了问题的含义,它使得现有的答案毫无意义,并且它不会让其他人知道问题提问者需要更多的信息,因为他们的问题可能稍微"不正确".
删除远程源是_exactly_我​​需要什么,因为它指向一个不再存在的本地存储库,而不是unfuddle存储库.
但是生气和痛苦要容易得多.:-)但我明白你的观点.
斯图:重写是件好事!如果他们没有明确的话,那么获得无法解决实际问题的答案毫无意义.

3> Mims H. Wrig..:

我有一个类似于我的工作目录的问题,ahead of origin by X commitsgit pull结果是Everything up-to-date.我确实通过遵循这个建议来解决它.我在这里张贴这个,以防它有其他类似问题.

基本修复如下:

$ git push {remote} {localbranch}:{remotebranch}

括号中的单词应替换为您的远程名称,本地分支名称和远程分支名称.例如

$ git push origin master:master



4> chim..:

有时原始主文件(origin/master)的本地缓存版本与真正的原始主文件之间存在差异.

如果你运行git remote update它将使用origin/master重新同步源master

看到这个问题的公认答案

git pull origin master和git pull origin/master之间的差异



5> Aristotle Pa..:

我以为我的笔记本电脑是起源......

这有点荒谬:origin指的是默认的远程存储库 - 您通常从其中获取/拉取其他人的更改.

我怎么能够:

    git remote -v会告诉你什么origin是; origin/master是你的"书签",为最后已知状态master的分支origin库,和你自己master是一个跟踪分支的origin/master.这应该是应有的.

    你没有.至少将存储库作为自身的默认远程存储库是没有意义的.

    事实并非如此.它只是告诉你,你已经在本地进行了那么多的提交,这些提交不在远程存储库中(根据该存储库的最后已知状态).


在你的笔记本电脑上的*另一个*存储库中指向`origin`非常有意义.然而,指向存储库*的"原点"*本身并不是:无论你运行`git push`还是`git pull`都没有任何区别,因为无论如何存储库总是与它自己完全同步.这是错误的,有点同义反复.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有