将代码签入分离的头
checking in code to a detached head
我有一个项目有一个子模块,它是一个分离的头(它是这样设计的)。现在我必须对分离头中的文件进行一些更改。以下是我所做的。
当我在分离头路径中时( /user/project/base ((d4b9ede...))
git add testFile.py
git commit -m "made some change in this file"
git checkout -b temp
git checkout master
git pull
git merge temp
git branch -d temp
git push
之后,当我打开我的 gitlab 项目时,我可以看到在远程服务器中所做的更改。但是当我克隆同一个项目时,我似乎看不到对该文件所做的更改。我在这里做错了什么?
子模块确实是 "designed that way":超级项目列出了子项目中所有内容的提交 ID,因此检查超级项目可以让每个子项目在其特定的提交 ID 上都有一个分离的 HEAD。
这就是您看不到更改的原因:您的子项目在其 master
分支上有一个新提交,但您的超级项目 不使用该分支(位于至少,不是以任何直接的方式。
这意味着在您做出并提交并推送了对某些子模块的一些更改之后,您必须还,分别移动到您的superproject 并告诉 git 这个单独的东西——超级项目——现在应该通过它的(新)提交 ID 引用子项目中的新提交。
自从我上次这样做 (git 1.5/1.6) 以来,这似乎已经发生了变化,所以旧方法 - cd
到超级项目并仔细 git add
子模块,确保不要在路径名中使用尾部斜杠,即使自动完成 真的希望 在那里有那个 /
不再是唯一的方法(尽管毫无疑问它仍然作品)。这些天你也可以使用 git submodule update --remote
,也可以使用可选的 --no-fetch
。这确实需要您首先推送子模块更新(并使用记录在超级项目中的分支设置,其 .git/config
或 .gitmodules
,默认为 master
——这是 master
分支,或其他一些分支,终于重新进入图片)。
更新超级项目使其知道新的提交 ID 后,您必须提交到超级项目并推送它。
Pro Git book and this blog posting 都有关于子模块的附加信息。我个人仍然尽量避免使用子模块;他们的 "sobmodules" 昵称在 git 1.6 天时非常合适,并且可能仍然是,基于该博客 post(最近于 2016 年 1 月中旬更新)。
我有一个项目有一个子模块,它是一个分离的头(它是这样设计的)。现在我必须对分离头中的文件进行一些更改。以下是我所做的。
当我在分离头路径中时( /user/project/base ((d4b9ede...))
git add testFile.py
git commit -m "made some change in this file"
git checkout -b temp
git checkout master
git pull
git merge temp
git branch -d temp
git push
之后,当我打开我的 gitlab 项目时,我可以看到在远程服务器中所做的更改。但是当我克隆同一个项目时,我似乎看不到对该文件所做的更改。我在这里做错了什么?
子模块确实是 "designed that way":超级项目列出了子项目中所有内容的提交 ID,因此检查超级项目可以让每个子项目在其特定的提交 ID 上都有一个分离的 HEAD。
这就是您看不到更改的原因:您的子项目在其 master
分支上有一个新提交,但您的超级项目 不使用该分支(位于至少,不是以任何直接的方式。
这意味着在您做出并提交并推送了对某些子模块的一些更改之后,您必须还,分别移动到您的superproject 并告诉 git 这个单独的东西——超级项目——现在应该通过它的(新)提交 ID 引用子项目中的新提交。
自从我上次这样做 (git 1.5/1.6) 以来,这似乎已经发生了变化,所以旧方法 - cd
到超级项目并仔细 git add
子模块,确保不要在路径名中使用尾部斜杠,即使自动完成 真的希望 在那里有那个 /
不再是唯一的方法(尽管毫无疑问它仍然作品)。这些天你也可以使用 git submodule update --remote
,也可以使用可选的 --no-fetch
。这确实需要您首先推送子模块更新(并使用记录在超级项目中的分支设置,其 .git/config
或 .gitmodules
,默认为 master
——这是 master
分支,或其他一些分支,终于重新进入图片)。
更新超级项目使其知道新的提交 ID 后,您必须提交到超级项目并推送它。
Pro Git book and this blog posting 都有关于子模块的附加信息。我个人仍然尽量避免使用子模块;他们的 "sobmodules" 昵称在 git 1.6 天时非常合适,并且可能仍然是,基于该博客 post(最近于 2016 年 1 月中旬更新)。