假设我已经添加了一个名为“foo”的新远程仓库,并使用主分支拉取了一个子树,进行了合并压缩操作。
但这种方式不太干净。为什么不直接使用已经有分支参数的 "git subtree pull" 呢?(无需 rm/commit/add)?
当我在本地测试时,我发现子目录 (./foo) 之间没有任何区别。为什么每个人都推荐添加更复杂的变更集和提交的方法(删除并重新添加)?也许我错过了一些边缘情况?
$ git remote add -f foo some-repo.git
$ git subtree add --prefix=foo --squash foo master
根据我所阅读的文章(这里和这里等),这似乎是切换分支的常见方法。在这种情况下,要切换到 "bar" 分支:
$ git rm -r foo
rm 'foo/file'.
...
$ git commit -m "Delete foo on branch 'master' to switch to branch 'bar'."
1350 files changed, 144703 deletions(-)
delete mode 100644 foo/file
...
$ git subtree add --prefix=foo --squash foo bar
git fetch foo master
From some-repo.git
* branch master -> FETCH_HEAD
Added dir 'foo'
但这种方式不太干净。为什么不直接使用已经有分支参数的 "git subtree pull" 呢?(无需 rm/commit/add)?
$ git subtree pull --prefix=foo --squash foo bar
From some-repo.git
* branch master -> FETCH_HEAD
Merge made by the 'recursive' strategy.
foo/file | 2 ++
... smaller changeset output ...
3 files changed, 41 insertions(+)
...
当我在本地测试时,我发现子目录 (./foo) 之间没有任何区别。为什么每个人都推荐添加更复杂的变更集和提交的方法(删除并重新添加)?也许我错过了一些边缘情况?