18

我有一个文件夹 - 'Repos' - 其中包含我感兴趣的 repos。这些是从 bitbucket 克隆的,但我猜 github 也可能是一个来源。

Repos
    - music-app
    - elephant-site
    - node-demo

是否有一个 git 命令,我可以使用哪些步骤遍历 Repos 中的每个文件夹并查看服务器上是否有新的提交,并下载新的东西?如果本地有新的提交,则上传这些。

4

7 回答 7

31

试试这个:

cd repos
find . -maxdepth 1 -type d -exec sh -c '(cd {} && git pull)' ';'
于 2013-03-28T23:53:50.093 回答
6

对于 Windows,这应该通过命令提示符为您完成:

cd c:\repos
for /d %a in (*.*) do cd c:\repos\%a && git pull

返回 GitHub 客户端后,您应该会看到更新。

于 2016-05-09T15:19:10.350 回答
6

对于 Windows,我在 .cmd 文件中使用下面的内容。它可以很容易地扩展到做更多的事情或其他事情:

for /d %%i in (*) do (
  pushd "%%i"
  git pull
  popd
)
于 2018-06-25T04:50:08.097 回答
3

gitfox 是一个在所有 subrepo 上执行命令的工具

npm 安装 gitfox -g

g 拉

于 2017-01-13T07:01:26.377 回答
3

使用 powershell,您可以这样做:

Get-ChildItem -Recurse -Depth 2 -Force | 
Where-Object { $_.Mode -match "h" -and $_.FullName -like "*\.git" } |
ForEach-Object {
  cd $_.FullName
  cd ../
  git pull
  cd ../
}

这将进入每个目录并查找一个.git文件夹,然后git pull在每个文件夹中运行。

于 2021-05-12T07:53:49.733 回答
0

要维护多个 repos,您可以使用 git submodule。

用于git submodule add将存储库添加为子模块并用于git submodule foreach git pull更新存储库。

这种方法就像你有一个超级项目,里面有几个 git 项目。

于 2013-03-28T23:56:57.393 回答
0

我所拥有的是一个 scriptlet,它执行以下操作:

for d in *
cd $d
git pull
cd ..

(是的,它有一些额外的花里胡哨,因为我有一些hgrepos,还有一些我在 git 中从 SVN 上游管理的。)

于 2013-03-30T03:05:42.120 回答