我有一个文件夹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还不存在,所以它不起作用...
我想要相当于签出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命令一起使用。因此请小心,因为如果您运行修改工作树的命令(例如checkout或reset),它们将修改的内容/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)