假设我有两个存储库,我经常与之交互。例如,repo1
和repo2
。假设我刚刚提交并推送了对 repo1 的更改,但现在我在 repo2 中还有工作要做。
在幕后,git 是如何意识到我不再与 repo1 交互而是现在与 repo2 交互的?(是否像导航到 repo2 的本地分支所在的目录一样简单?)我是否需要使用某种命令行语言来告诉 git 我正在将焦点转移到 repo2?
默认情况下,Git 会根据调用它的目录对存储库执行自动发现。执行自动发现时,它会在当前目录中查找是否有.git
文件夹或 gitlink,如果没有,则对父目录重复该过程,依此类推,直到它到达文件系统的根目录或挂载点。如果找到存储库,它将包含相应.git
条目的目录设置为工作树的根目录,并将.git
文件夹设置为 git 目录。
您可以通过使用-C
必须位于命令名称(例如,git -C DIR status
)之前的标志来选择让自动发现工作基于不同的目录,您还可以使用命令行选项或环境变量显式指定目录。当您想操作子模块或其他存储库但不想更改目录时,这些会很有用。
但是,这些大多是不寻常的情况,大多数情况下,Git 会根据当前目录来确定存储库。因此,将焦点转移到 repo2 就像更改到 repo2 中的某个目录一样简单。在 Unix 上,它就像cd ~/checkouts/repo2
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句