我正在使用Git的子树命令将几个库拉入项目中.
如果我然后以正常方式克隆项目,我最终得到了我需要的所有代码,但是我丢失了子树关系 - 在克隆中,每个库都没有远程,并且没有-push分支的任何一方.
重建这种连接的最佳方法是什么?
这样做是否足够
git remote add <lib> <remote-url>
git fetch <lib>
Run Code Online (Sandbox Code Playgroud)
如果我是第一次添加该库,我将遵循以下内容:
git subtree add -P <local/lib> --squash "<lib>/master"
Run Code Online (Sandbox Code Playgroud)
当本地目录已经存在时,这不起作用,当然,当您克隆已经添加了库的项目时,它将会发生.
在这种情况下还有什么应该做的,以确保后续的git子树合并和git子树分割命令到预期的东西?
小智 9
我有类似的问题
这是我最初创建子树的方法
git remote add -f sub_project url_to_remote_repository/project.git
git merge -s ours --no-commit sub_project/master
git read-tree --prefix=sub/project/ -u sub_project/master
git commit -m "Added subtree merged in sub/project"
Run Code Online (Sandbox Code Playgroud)
并且从"项目"回购中获得更改,我正在做
git pull -s subtree sub_project master
Run Code Online (Sandbox Code Playgroud)
现在,我将我的本地存储库推送到github,并从另一台机器上克隆了我的github存储库.此时,我在子/项目中得到了所有预期的文件......所以这很好.但不再是遥远的,与子/项目的关系.所以我做了以下几点
git remote add -f sub_project url_to_remote_repository/project.git
git merge -s ours --no-commit --squash sub_project/master
git pull -s subtree sub_project master
Run Code Online (Sandbox Code Playgroud)
这很好.现在,我可以像以前一样从该克隆的存储库中管理子树
git pull -s subtree sub_project master
Run Code Online (Sandbox Code Playgroud)
注意:
1)在我们的项目中,在我们使用git子模块之前,这对我们的用户来说真的不好.这就是我们切换到git的子树系统的原因.
2)在Windows机器上执行这些操作(使用git版本1.7.9.msysgit.0)时,我遇到了一些奇怪的错误,并且在linux上成功完成了相同的操作.所以现在,要操纵子树,我经常使用linux(如果我有任何错误,我在linux上尝试相同).
希望这可以提供帮助.
我过去重新创建这种关系的方法是进行子树合并。
git pull -s subtree <lib> master
Run Code Online (Sandbox Code Playgroud)
即使没有任何东西可以合并/拉动,它也应该简单地返回而不做任何事情。请随意添加--squash到上面的拉取中,这样您就不会拉取任何远程历史记录。
| 归档时间: |
|
| 查看次数: |
4705 次 |
| 最近记录: |