如何通过GIT/GITBASH获取多个项目的最新信息

如何通过GIT/GITBASH获取多个项目的最新信息,git,repository,git-bash,Git,Repository,Git Bash,我有多个项目在一个文件夹中,我想得到最新的 例如: C:\Projects\Project 1 C:\Projects\Project 2 C:\Projects\Project 3 通常我会打开Git Bash,直接指向一个项目(例如,cd C:\Projects\project 1),然后键入“Git pull”。 在此之后,在其他项目上重复 是否有一种更快/更短/更省时的方法来获取我所有项目的最新信息 另一种方法是在父项目回购中声明每个回购,如 你可以 这样,从父repo c:\Proj

我有多个项目在一个文件夹中,我想得到最新的

例如:

C:\Projects\Project 1
C:\Projects\Project 2
C:\Projects\Project 3
通常我会打开Git Bash,直接指向一个项目(例如,
cd C:\Projects\project 1
),然后键入“
Git pull
”。
在此之后,在其他项目上重复


是否有一种更快/更短/更省时的方法来获取我所有项目的最新信息

另一种方法是在父项目回购中声明每个回购,如
你可以

这样,从父repo c:\Projects\parent,一个简单的cmmand将立即更新每个子模块:

git submodule update --remote

如果子模块方法不适合您,您可以使用用Bash编写的简单脚本:

#!/bin/bash

for dir in */
do
    echo "Updating $dir"
    cd "$dir"
    git pull
    cd ..
done
如果将其定义为函数,甚至可以使其可用于其他命令:

function for_all_dirs ()
{
    for dir in */
    do
        echo "Updating $dir"
        cd "$dir"
        $*
        cd ..
    done
}

使用
for_all_dirs git pull调用此函数,它将拉入所有目录。

当发生合并冲突时,您希望发生什么情况?@ike-我对此相当陌生,因此不确定我的选项是什么-如果发生冲突,那么最好跳过该冲突,加载没有任何冲突的其余目录,然后在过程结束时,提供一种最终解决这些冲突的方法或者甚至可以跳过那些有冲突的项目,在剩下的项目上获取最新信息,并在流程结束时,向用户提示哪些项目没有“获取最新信息”以及为什么。为了理解流程,我是否打开Git Bash,然后“cd C:\projects\project1”,然后写“for_all\u dirs Git pull”?另外,我将把bash脚本放在哪里?您将转到项目,然后从那里运行它。如果您使用的是Git Bash,请将该函数添加到
~/.bashrc
文件中。有关更多详细信息,请参见此处:
function for_all_dirs ()
{
    for dir in */
    do
        echo "Updating $dir"
        cd "$dir"
        $*
        cd ..
    done
}