如何将现有目录链接到现有的git存储库

ovfsdjhp  于 2023-03-28  发布在  Git
关注(0)|答案(3)|浏览(128)

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

/foo
    file1.txt
    file2.txt

还有我自己的repo,它已经有几个分支了,包括master

https://my-fake-repo

我想把foo链接到https://my-fake-repo的master,这样如果我运行'git diff',我就会看到/foo和https://my-fake-repo的master之间的区别。
我想要相当于 checkout 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

但是师父还不存在,所以不起作用...

huus2vyu

huus2vyu1#

我需要的是相当于检出https://my-fake-repo、删除内容并将文件从/foo粘贴到其中的操作。
一个简单的方法是 * 假装 * /foo是仓库的 * 工作树 *,方法是在my-fake-repo的本地克隆中这样做:

GIT_WORK_TREE=/foo git diff

这将有效地将/foo的内容与存储库的内容进行比较。在/foo中但不在存储库中的内容将显示为已添加,不在/foo中但存在于存储库中的内容将显示为已删除。依此类推。
这个技巧也适用于所有其他Git命令。所以要小心,因为如果你运行修改工作树的命令(例如checkoutreset),它们将修改/foo的内容。
但我想知道这是否真的是你使用/foo和Git仓库的最终方式。你还提到了“链接”到Git仓库。仓库之间交互的正确方式是使用远程。你可以将/foo转换为Git仓库,将my-fake-repo注册为远程,然后在两个仓库之间使用普通的Git操作。而不会导致像这篇文章顶部那样的诡计。

cd /foo
git init
git add --all
git commit -m 'Add files'
git remote add origin https://my-fake-repo
git fetch origin
git diff origin/master
bjp0bcyl

bjp0bcyl2#

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

iqjalb3h

iqjalb3h3#

另一种方法是将存储库克隆到文件夹folderB中,然后将folderB/.git复制到folderA中。
最后,folderA中的git status应该列出所需的更改。

相关问题