如何将现有目录链接到现有git repo

use*_*648 3 git

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

/foo
    file1.txt
    file2.txt
Run Code Online (Sandbox Code Playgroud)

和我自己的仓库,该仓库已经有多个分支机构,包括

https://my-fake-repo
Run Code Online (Sandbox Code Playgroud)

我想将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
Run Code Online (Sandbox Code Playgroud)

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

Sto*_*ica 5

我想要相当于签出https:// my-fake-repo,删除内容并将文件从/ foo粘贴到其中。

一种简单的实现方法是,通过在的本地克隆中进行操作,假装好像存储库/foo工作树一样my-fake-repo

GIT_WORK_TREE=/foo git diff
Run Code Online (Sandbox Code Playgroud)

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

这个技巧也将与所有其他Git命令一起使用。因此请小心,因为如果您运行修改工作树的命令(例如checkoutreset),它们将修改的内容/foo

但是我想知道这是否真的是您与/fooGit存储库一起使用的最终方法。您还提到了“链接”到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
Run Code Online (Sandbox Code Playgroud)