我有一个目录/amp
中RepoA
和RepoB
(与/放大器的内容填充最初).我想将/amp
RepoA中的任何更改镜像 到RepoB.
可能吗 ?
PS:RepoA包含许多其他目录.我只想镜像/ amp dir.而RepoB只会有/ amp内容而不是其他内容.
您可以使用git子模块,第一步是从您的目录创建一个存储库/amp
,然后将其用作其他存储库中的子模块.
要创建/amp
存储库,您可以:
$ cd /path/to/amp $ git init $ git add . $ git commit -m "First commit"
现在让我们假设您将使用github,您可以通过以下方式发布您的仓库:
$ git remote add origin git@github.com:/amp.git $ git push -u origin master
现在repoA
,repoB
您将需要将新的amp
repo 添加为子模块,这可以通过执行以下操作来完成:
$ cd /path/to/repoA $ git submodule add -b master git@github.com:/amp ampMirror
回购相同 repoB
$ cd /path/to/repoB $ git submodule add -b master git@github.com:/amp ampMirror $ git commit -m "added appMirror submodule"
请注意,这个名字我给到目录中repoA
,并repoB
是ampMirror
,但它可以是任何你想要的,实际上你可以通过只使用使用相同的名称:
git submodule add -b master git@github.com:/amp
目录结构如下所示:
repo(A/B) ??? .git/ ??? .gitmodules <-- created after adding the submodule ??? foo ??? ampMirror ??? .git/ <-- repo to keep/track changes for app (need to git pull) ??? foo
现在,每次amp
对您的仓库进行更改时,您都需要更新"拉"存储库中的更改,例如:
$ cd /path/to/repoB $ cd appMirror $ git pull $ cd .. <--- get back to your project root $ git commit -am "update submodule"
如果有多个子模块,另一种方法是这样做并变得有用:
$ cd /path/to/repo(A/B) $ git submodule foreach git pull origin master $ git commit -am "updated submodules"
我希望这可以帮助你提供一个更好的主意.