【问题标题】:Updating all repos in a folder?更新文件夹中的所有存储库?
【发布时间】:2013-03-19 14:52:01
【问题描述】:

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

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

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

【问题讨论】:

标签: git github bitbucket


【解决方案1】:

试试这个:

cd repos
find . -maxdepth 1 -type d -exec sh -c '(cd {} && git pull)' ';'

【讨论】:

  • 警告(可能很明显):这适用于 *nix 或 GitBash(可能还有 Mac?),但不适用于 Windows 命令行。
  • 我应该提到我在 Mac 上。 ls foreach 'git pull' 只返回“致命:不是 git 存储库(或任何父目录):.git”......我的 Repos 文件夹也需要是 git repo 吗?
  • @RuslanOsipov cannyboy 提到的错误仍然存​​在。您是否更新了原始答案?
  • 我会将其更改为:find . -maxdepth 1 -type d -exec sh -c '(cd {} && git checkout master && git pull)' ';',以防这些存储库中的任何一个尚未在主分支上。
  • 如何忽略.(当前目录)?
【解决方案2】:

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

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

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

【讨论】:

  • for /d %a in (*.*) do cd %CD%\%a && git pull 这个应该也可以工作,只是不需要使用%CD% insteard 指定一个空间路径
【解决方案3】:

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

for /d %%i in (*) do (
  pushd "%%i"
  git pull
  popd
)

【讨论】:

    【解决方案4】:

    使用 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

    【讨论】:

      【解决方案5】:

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

      npm install gitfox -g

      g 拉

      【讨论】:

        【解决方案6】:

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

        使用git submodule add 将repo 添加为子模块,并使用git submodule foreach git pull 更新repos。

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

        【讨论】:

        • 不是 git 子模块的工作方式。子模块更新将从历史记录中提取某些提交。你仍然需要git submodule foreach git pull 才能更新它们。
        • 你是对的。我错过了 git submodule foreach git pull 命令。
        【解决方案7】:

        我有一个 scriptlet,它执行以下操作:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多