我有一个文件夹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
但是主人还不存在,所以它不起作用......
答案 0 :(得分:4)
我希望相当于检出https://my-fake-repo,删除内容,并将/ foo中的文件粘贴到其中。
实现这一目标的一种简单方法是假装,好像/foo
是存储库的工作树,通过在{的本地克隆中执行此操作{1}}:
my-fake-repo
这将有效地将GIT_WORK_TREE=/foo git diff
的内容与存储库的内容进行比较。
/foo
但未在回购中的内容将显示为已添加,
不在/foo
但存在于回购中的内容将显示为已删除。等等。
这个技巧也适用于所有其他Git命令。
所以要小心,
因为如果您运行修改工作树的命令(例如/foo
或checkout
),
他们将修改reset
。
但是我想知道这是否真的是你使用/foo
和Git存储库的最终方式。
您还提到了“链接”到Git存储库。
存储库之间交互的正确方法是使用遥控器。
您可以将/foo
转换为Git存储库,
将/foo
注册为遥控器,
然后在两个repos之间使用正常的Git操作,
没有导致像这篇文章顶部的技巧。
my-fake-repo
答案 1 :(得分:0)
不确定您如何进入此用例。但是另一种方法是简单地将远程克隆到一个新文件夹/ foo2,然后将/ foo复制到/ foo2。然后,您可以查看所做的更改(如果有),然后正常进行以放弃/提交差异。