我有一个文件夹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
但是师父还不存在,所以不起作用...
3条答案
按热度按时间huus2vyu1#
我需要的是相当于检出https://my-fake-repo、删除内容并将文件从/foo粘贴到其中的操作。
一个简单的方法是 * 假装 *
/foo
是仓库的 * 工作树 *,方法是在my-fake-repo
的本地克隆中这样做:这将有效地将
/foo
的内容与存储库的内容进行比较。在/foo
中但不在存储库中的内容将显示为已添加,不在/foo
中但存在于存储库中的内容将显示为已删除。依此类推。这个技巧也适用于所有其他Git命令。所以要小心,因为如果你运行修改工作树的命令(例如
checkout
或reset
),它们将修改/foo
的内容。但我想知道这是否真的是你使用
/foo
和Git仓库的最终方式。你还提到了“链接”到Git仓库。仓库之间交互的正确方式是使用远程。你可以将/foo
转换为Git仓库,将my-fake-repo
注册为远程,然后在两个仓库之间使用普通的Git操作。而不会导致像这篇文章顶部那样的诡计。bjp0bcyl2#
不确定您是如何进入此用例的。但另一种方法是简单地将遥控器克隆到一个新文件夹/foo 2,然后将/foo复制到/foo 2。然后您可以看到更改(如果有),并正常继续放弃/提交差异。
iqjalb3h3#
另一种方法是将存储库克隆到文件夹
folderB
中,然后将folderB/.git
复制到folderA
中。最后,
folderA
中的git status
应该列出所需的更改。