如何将现有目录链接到现有git仓库

时间:2017-08-08 20:40:59

标签: git

我有一个文件夹foo,没有任何git集成

/foo
    file1.txt
    file2.txt

和我自己的回购,已经有几个分支,包括主

https://my-fake-repo

我想将foo链接到https://my-fake-repo的主人,这样如果我然后运行'git diff',我会看到/ foo和https://my-fake-repo的主人之间的区别。

我希望等同于检出https://my-fake-repo,删除内容,并将/ foo中的文件粘贴到其中。我希望我能用一些Git命令做到这一点,但我对Git不够熟悉,而且我的研究失败了。我试图做类似的事情:

cd /foo
git init
git remote add origin https://my-fake-repo
git branch master --set-upstream-to origin/master

但是主人还不存在,所以它不起作用......

2 个答案:

答案 0 :(得分:4)

  

我希望相当于检出https://my-fake-repo,删除内容,并将/ foo中的文件粘贴到其中。

实现这一目标的一种简单方法是假装,好像/foo是存储库的工作树,通过在{的本地克隆中执行此操作{1}}:

my-fake-repo

这将有效地将GIT_WORK_TREE=/foo git diff 的内容与存储库的内容进行比较。 /foo但未在回购中的内容将显示为已添加, 不在/foo但存在于回购中的内容将显示为已删除。等等。

这个技巧也适用于所有其他Git命令。 所以要小心, 因为如果您运行修改工作树的命令(例如/foocheckout), 他们将修改reset

的内容

但是我想知道这是否真的是你使用/foo和Git存储库的最终方式。 您还提到了“链接”到Git存储库。 存储库之间交互的正确方法是使用遥控器。 您可以将/foo转换为Git存储库, 将/foo注册为遥控器, 然后在两个repos之间使用正常的Git操作, 没有导致像这篇文章顶部的技巧。

my-fake-repo

答案 1 :(得分:0)

不确定您如何进入此用例。但是另一种方法是简单地将远程克隆到一个新文件夹/ foo2,然后将/ foo复制到/ foo2。然后,您可以查看所做的更改(如果有),然后正常进行以放弃/提交差异。