问题描述
对于一个回购(例如"test"),其文件夹结构为
For a repo (say "test"), that has the folder structure as
├──Project1
├──Project2
├──Project3
├── Project1
├── Project2
├── Project3
我可以只为project1设置一个远程URL吗?
Can I set a remote url for just project1 ?
推荐答案
否,是.也就是说,您可以设置,但是它不会做您想要的,无论可能是什么.
No and yes. That is, you can set this, but it will not do what you want, whatever that may be.
远程只是用作密钥的简称:
A remote is just a short name that acts as a key:
-
origin
=>remote.origin.url
,remote.origin.fetch
-
xyz
=>remote.xyz.url
,remote.xyz.fetch
origin
=>remote.origin.url
,remote.origin.fetch
xyz
=>remote.xyz.url
,remote.xyz.fetch
,依此类推.您可以将每个这样的键的 url 设置为您喜欢的任何内容:https://example.com/path/to/repo
或/local/path
或jellybeans
或任何您喜欢的东西,但是使用的东西值是git fetch
,git push
和git ls-remote
.这些都以给定的URL与另一个Git存储库联系,并来回传输 commits (不是文件),或者在git ls-remote
的情况下,告诉您可用的提交和分支名称.
and so on. You can set the url for each such key to anything you like: https://example.com/path/to/repo
or /local/path
or jellybeans
or whatever you like, but the things that use this value are git fetch
, git push
, and git ls-remote
. These all contact another Git repository at the given URL and transfer commits (not files) back and forth, or in the case of git ls-remote
, tell you what commits and branch names are available.
由于git fetch
和git push
传输了整个提交,文件随同提交一起使用,但是它们具有在提交中为它们赋予的名称
Since git fetch
and git push
transfer entire commits, files come along with the commits for the ride, but they have the names you gave them in the commits.
但是,您可以在Project1
中进行仅包含 个文件的提交.签出这样的提交将删除所有的Project2
和Project3
文件,然后签出一个包含所有文件的提交将带回所有和Project3
文件.但是,当您运行git push
或git fetch
时,您可能会发送和接收包含 all 文件的提交以及包含 only 文件,所以这可能不是一个好主意.
You can, however, make commits that contain only files in Project1
. Checking out such a commit will remove all the Project2
and Project3
files, and then checking out a commit that has all the files will bring back all the Project2
and Project3
files. But when you run git push
or git fetch
, you're likely to send and receive commits that contain all the files along with any commits that contain only the Project1
files, so that's probably not a great idea.
如果将每个项目存储在单独的Git存储库中,则可能会得到所需的内容.尽管我通常建议避免使用子模块,但是您可以将每个存储库都设为单个 superproject 的子模块,该子模块除了协调所有子模块外什么也不做;这个特定的路径是可行的.
If you store each project in a separate Git repository, that will probably get you what you want. Although I generally recommend avoiding submodules, you can make each of these repositories a submodule of a single superproject that does nothing but coordinate all the submodules; this particular path is workable.
这篇关于是否可以将git remote url设置到存储库中的子文件夹?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!