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

15

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

/foo
    file1.txt
    file2.txt

以及我自己的仓库,其中已经有几个分支,包括主分支

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

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


这个的目的只是为了得到一个差异吗?如果是这样的话:https://dev59.com/yHI-5IYBdhLWcg3wkJIA#7945988 - Blorgbeard
不,我想将本地目录链接到分支,但不一定要覆盖分支。 - user3715648
3个回答

16
我想要相当于检出 https://my-fake-repo,删除其中的内容,并将 /foo 中的文件粘贴到里面的操作。为了实现这个目的,一种简单的方法是在本地克隆的 my-fake-repo 中假装 /foo 是该仓库的工作树。下面是具体操作:
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

1

不确定您如何进入此用例。但另一种方法是将远程克隆到一个新文件夹/foo2,然后将/foo复制到/foo2。然后,如果有任何更改,您可以查看这些更改,并正常进行以丢弃/提交差异。


-1

另一种方法是在文件夹folderB中克隆您的存储库,然后将folderB/.git复制到folderA中。

最后,在folderA内执行git status应列出所需更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接