我有一个文件夹 foo,没有任何 git 集成
/foo
file1.txt
file2.txt
和我自己的仓库,已经有几个分支,包括 master
https://my-fake-repo
我想将 foo 链接到 https://my-fake-repo 的 master , 这样如果我然后运行 'git diff', 我会看到/foo 和 https://my-fake-repo 之间的区别的主人。
我想要相当于 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
但是master还不存在,所以不能用...
最佳答案
I want the equivalent of checking out https://my-fake-repo, deleting the contents, and pasting the files from /foo into it.
实现这一点的一个简单方法是假装好像/foo
是存储库的工作树,方法是在my-fake-repo
的本地克隆:
GIT_WORK_TREE=/foo git diff
这将有效地将 /foo
的内容与存储库的内容进行比较。
/foo
但不在 repo 中的内容将显示为已添加,
不在 /foo
中但存在于 repo 中的内容将显示为已删除。等等。
这个技巧也适用于所有其他 Git 命令。
所以要小心,
因为如果您运行修改工作树的命令(例如 checkout
或 reset
),
他们将修改/foo
的内容。
但我想知道这是否真的是您使用 /foo
和 Git 存储库的最终方式。
您还提到了“链接”到 Git 存储库。
在存储库之间进行交互的正确方法是使用 Remote 。
您可以将 /foo
转换为 Git 存储库,
将 my-fake-repo
注册为 Remote ,
然后在两个 repos 之间使用正常的 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
关于git - 如何将现有目录链接到现有的 git repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45577675/