TLDR:我可以查看作为git子模块的分叉存储库的分支吗?现在它似乎只是检查父repo的分支,即使它与我的所有分叉repo的最近提交分离HEAD。
我添加了一个名为TheLibrary
的开源库,我将其添加为git子模块。然后我需要修改库并将其用作git子模块,所以我在github上分叉它,添加了一个新的分支modifications
并在那里进行了修改。然后我更新了项目的.gitmodules
文件以包含我的分叉库的URL,如下所示:
[submodule "libs/TheLibrary"]
path = libs/TheLibrary
url = https://github.com/myUsername/TheLibrary.git
branch = modifications
然后我在终端做了git submodule sync
,结果是:
Synchronizing submodule url for 'libs/TheLibrary'
然后我进入了终端上的libs/TheLibrary
目录,当我做git fetch
时,它给了我来自父回购的分支(master,feature / FeatureA)。但是,我的分叉存储库应该只有这些分支:(主,修改)。
当我git remote -v
时,它给出了这个结果:
origin https://github.com/myUsername/TheLibrary.git (fetch)
origin https://github.com/myUsername/TheLibrary.git (push)
当我git branch
时,它有:
* (HEAD detached at a1b2c3def)
feature/featureA
master
但是,feature / featureA只是我在父存储库上执行的pull请求。我的分叉存储库应该有我添加的modifications
分支。
当我执行git log
时,它会显示来自modifications
分支的所有最近提交。
如何查看modifications
分支,以便继续向分叉库添加更改,并将其推送到远程仓库?目的是我希望它仍然能够将来自父repo的更新合并到我们自己的更改中。这甚至可能吗?谢谢!
答案 0 :(得分:0)
TLDR:我无法更新现有模块以使其正常工作。我必须使用-b
标志运行此命令并且它有效:
git submodule add -b modifications https://github.com/myUsername/TheLibrary.git
强>
因此,手动修改现有的子模块似乎无法正常工作,即使我删除了整个库文件夹(libs/TheLibrary
)并召回了git submodule init
和git submodule update
(其中) - 克隆它)。
但是当我这样做时:
git submodule add -b modifications https://github.com/myUsername/TheLibrary.git
它错误地将它放在当前文件夹中(我想我应该把正确的路径作为最后一个参数),但当我进去看看它是否检查出正确的分支时(我做了{{1}它说:
git status
这意味着它有效!为了更好的衡量,我做On branch modifications
Your branch is up-to-date with 'origin/modifications'.
nothing to commit, working directory clean
以确定它是否有正确的分支:
git branch
它确实做到了!所以我认为总是需要这样做,使用带有 master
* modifications
标志的命令,而不是我尝试手动更新子模块的方式。
注意:即使有效,它也会在-b
中添加:
.gitmodules
即使它与我之前输入的完全相同(除了不同的路径),它之前也没有用过。运行命令时可能会发生一些其他的幕后事件,我想手动修改这几个文件是不够的。
注2:当我最终得到正确的文件夹时,我得到了这个git错误:
[submodule "TheLibrary"]
path = TheLibrary
url = https://github.com/TheLibrary/TheLibrary.git
branch = modifications
所以我使用A git directory for 'libs/TheLibrary' is found locally with remote(s):
origin https://github.com/myUsername/TheLibrary.git
If you want to reuse this local git directory instead of cloning again from
https://github.com/myUsername/TheLibrary.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.
选项运行此命令并验证它是否有效:
--force