GIT 更新子树 : how can I update my subtree?

标签 git github

我们有一些类似的 repo 协议(protocol):

站点 1:

  • 图书馆:

站点 2:

  • 图书馆:

库:

如您所见,lib 在两个站点中共享。现在当我使用

[master] git fetch lib

没有任何反应。 之后我使用:

[master] git merge --squash -s subtree --no-commit lib

然后它开始删除属于该站点的大量文件。

如果我尝试这样做: 从共享库远程更新库子项目 http://www.codeproject.com/Articles/562950/GitplusSubtreeplusMergeplus-e2-80-93TheplusQuickpl

[master] git checkout lib
Checking out files: 100% (4521/4521), done.
Switched to branch 'lib'
[lib] git pull
Already up-to-date.

然后直接checkout到master,然后运行命令:

git merge --squash -s subtree --no-commit lib

这只是从我的站点中删除了整个加载的文件,并在 lib.. 的子文件夹中留下了一些类似的文件。 为什么这不只是将 lib 更新为正确的版本?并留下网站的文件?

重置后我确实恢复了我的项目

git reset --hard origin/master

如何更新库?

有一个远程分支设置。

$ git remote -v
lib     https://github.com/***/lib.git (fetch)
lib     https://github.com/***/lib.git (push)

最佳答案

考虑到您已经在应用程序中设置了子树(git remote add subtree_name git@github.com:user/subtree_proj.git),您必须:

1-子树 split

git subtree split -P lib -b new_branch_to_split 其中 lib 是你的子树项目的路径,new_branch_to_split 将只包含你的lib 代码并将被推送到您的 lib 存储库。

2-子树推送

git push subtree_name new_branch_to_split:original_subtree_branch(即master)

git push subtree_name new_branch_to_split:master

3-始终删除临时分支

git branch -D new_branch_to_split

4- pull 使用子树项目的其他项目中的更改

git subtree pull -P lib subtree_name original_subtree_branch(即master)

关于GIT 更新子树 : how can I update my subtree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661894/

相关文章:

Github 上显示我一直关闭的问题数量

git - Mac : SSH doesn't work anymore without changing something

git-remote-https 坏了

git - 如果我是一个孤独的开发者,我有什么理由应该在 Git 的一个分支之外工作吗?

git - gradle - gradle-git 上的 getWorkingBranch 错误

c - 是否有一个程序(或 sed 脚本)可以从 C 文件中删除一个函数?

android - 存储库中的 Flutter 文件夹

github - 将拉取请求标记为准备好审查

c# - 从源代码管理将 Web 角色部署到 azure

linux - git push 两步验证失败的解决方法(linux)