结帐远程分支

时间:2015-10-28 23:37:28

标签: git

我有一个远程git存储库,它与本地计算机上的无版本文件夹具有相同的文件。我想将git跟踪添加到我的本地文件夹,以便我可以在远程仓库中提取更改。我的本地文件夹与遥控器有一些差别,我不想丢失,但在其他方面是相同的。

到目前为止,我已经完成了:

cd /my/local/copy/
git init
git remote add origin [path to remote repo]
git fetch origin master

这很好用,现在我的本地文件夹引用了远程仓库。我现在的问题是本地文件夹没有检出分支。如果我尝试签出远程分支,git会拒绝,因为所有文件夹的内容都会被覆盖。如果我git checkout -b master,它告诉我它已经“切换到新分支'主人'”。好的,现在我只需要跟踪远程分支,我就是金色的。 git branch -u origin/master应该做到这一点。 Git回答说,“致命:分支'主人'不存在”。它是在谈论起源/主人,还是我的新本地主人? git branch -u origin/master2 - 我希望这会失败,但它会告诉我哪个主git意味着什么。 Git再次回应,“致命:分支'主人'不存在”。它正在谈论我当地的分支机构,它刚刚告诉我我已经成功检查过。

认为我的问题是本地master分支尚未正式创建。一旦我提交,它就会存在,但我不想在我添加远程跟踪之前提交。当然,我可能是错的,也可能是别的。

如何从这一点到我的本地master跟踪origin/master的位置,而不会隐藏或移动所有本地文件或丢失我的本地差异?

2 个答案:

答案 0 :(得分:3)

可以做你想做的事情(通过稍微偷偷摸摸地操纵git背后的东西,就像它一样)但是这样做更难。使用Dan Lowe's method要好得多。

那就是说,这里的方法(我省略了初始cd只是为了避免命名目录);你已经在那里了:

$ git init
$ git remote add origin <url>

(此时确保origin.fetch设置为默认+refs/heads/master:refs/remotes/origin/master,然后:)

$ git fetch origin         # don't list any branches

几乎你做了什么;关键的区别在于,这将获取所有其分支,并将它们放在您自己的存储库中的origin/*名称空间下。因此,您现在可以参考origin/master。 (使用额外的master参数,我认为即使是最新的git fetch也没有创建新的 origin/master,它只会在存在的情况下更新它。它不会取得任何其他分支机构,尽管这还不是特别重要。)

无论如何,你现在有一个未出生的分支master&#34; (因为git init如何建立一个新的空库。您的第一个新提交将是根提交,使您的新分支master。虽然可以从那里继续,但我认为这将是不必要的困难。

相反,现在我认为您应该创建一个本地分支master(作为&#34;真正的分支&#34;而不是未出生的分支)引用与其master相同的提交ID :

$ git branch master origin/master

这应该在给定提交时创建本地master(1)(即upstream/master(2)为&#34;跟踪&#34; origin/master(因为此类新分支的默认值为--track)。

你仍然有一个空索引,所以现在是时候填充它了。我认为最简单的方法是使用您当前的工作树。但是,我认为您可能也想要他们的.gitignore文件,所以至少要获得任何顶级文件(有更复杂的方法来查找子目录忽略,这可能也很好,但是让我们一起去吧:

$ git show master:.gitignore

如果这会产生任何结果,请重复输出重定向:

$ git show master:.gitignore > .gitignore

现在,对git add所有事情来说,它可能是最安全的:

$ git add .

现在你的索引/登台区域已经填满,足以使用git status来取得进展(检查由于.gitignore文件丢失而不应该进行的分阶段的事情,实例;并检查丢失的,明显删除的文件。)

答案 1 :(得分:1)

根据您有多少差异,克隆repo然后将本地版本复制到克隆上可能更简单,然后解决差异并提交它。

.doIf(session => session("bodyString").as[String].equals("<SwitchEvent/>")) { myChain }

这是假设您的声明,即repo具有“与本地计算机上的无版本文件夹相同的文件”,当然是准确的。