---
title: "Pull All Git Repositories with a Simple Bash Script"
date: 2024-10-19T12:00:00.000Z
author: Z.SHINCHVEN
tags: [git, script, bash, automation]
canonical: https://atlassc.net/2024/10/20/pull-all
---
## Introduction

Managing multiple Git repositories can be a daunting task, especially when it comes to updating them all. Repetitive commands can lead to frustration and wasted time. Fortunately, with a simple Bash script, you can effortlessly pull updates from all your repositories at once. In this post, I'll share how to set up and use this script.

## The Bash Script

Here's a straightforward script that allows you to pull all Git repositories within a given directory or the current directory if no path is specified.

```bash
#!/bin/bash

# Use the provided argument or default to the current directory
DIRECTORY=${1:-$(pwd)}

# Find .git directories and perform the operations
find "$DIRECTORY" -type d -name '.git' -execdir sh -c 'git --git-dir="{}" remote get-url origin && git --git-dir="{}" pull' \;
```

### Explanation of the Script

1. **Directory Argument**: The script accepts a directory path as an argument. If no argument is provided, it defaults to the current working directory using `pwd`.

2. **Finding Git Repositories**:
   
      - It uses the `find` command to search for all `.git` directories within the specified path.
   
3. **Pulling Changes**:
   
      - For each found repository, the script retrieves the origin URL and then performs a `git pull` to update it.

### How to Use the Script

1. **Create the Script File**:
   
      - Save the provided script into a file, for example, `git_pull.sh`.

2. **Make the Script Executable**:
   
      ```bash
      chmod +x git_pull.sh
      ```

3. **Run the Script**:
   
      - **Without a Path**: If you run the script without any arguments, it will pull updates from repositories in the current directory:
         ```bash
         ./git_pull.sh
         ```

      - **With a Specific Path**: You can also specify a directory path:
         ```bash
         ./git_pull.sh /path/to/your/directory
         ```

### Conclusion

By using this simple Bash script, you can efficiently manage and update multiple Git repositories without manually running pull commands for each one. This is a small but powerful addition to your coding toolkit, particularly for developers and teams working with numerous projects.

Feel free to customize the script to fit your needs, and happy coding!
