Zum Inhalt

Branches und Tags in einem Fork von Upstream synchen

Manchmal ist es notwendig, einen Fork auf den aktuellen Stand zu bringen und dabei auch die Branches und Tags aus dem Upstream zu übernehmen, z.B. für Mkdocs Material Insiders notwendig, da die Pull-App versagt...

  1. Fork lokal clonen
  2. Upstream Remote anlegen
       git remote add upstream <REPO-URL>
       git pull upstream
    
  3. Skript zur Synchronisation anlegen (sync.sh) 1:
       ## Checkout all branches from remote as tracking branches. Based on    https://stackoverflow.com/questions/379081/track-all-remote-git-branches-as-local-branches/6300386#6300386
    
       UPSTREAM=$1
       MYREPO=$2
    
       usage() {
          echo "Usage:"
          echo "$0 <upstream-remote> <target-remote>"
          echo ""
          echo "Example which ensures remote named 'maxandersen' have all the same branches and tags as 'origin'"
          echo "$0 origin maxandersen"
          exit 1
       }
    
       if [ -z "$UPSTREAM" ]
       then
          echo Missing upstream remote name.
          usage
       fi
    
       if [ -z "$MYREPO" ]
       then
          echo Missing target remote name. 
          usage
       fi
    
       read -p "1. This will setup '$MYREPO' to track all branches in '$UPSTREAM' - Are you sure ?" -n 1 -r
    
       if [[ $REPLY =~ ^[Yy]$ ]]
       then
          for brname in `git branch -r | grep "$UPSTREAM" | grep -v master | grep -v HEAD | sed -e 's/.*\///g'`; do git branch --track $brname  $UPSTREAM/$brname ; done
       fi
    
       read -p "2. This will push all local branches and tags into '$MYREPO' - Are you sure ?" -n 1 -r
    
       if [[ $REPLY =~ ^[Yy]$ ]]
       then
          git push --all $MYREPO
          git push --tags $MYREPO
       fi
    
  4. synchronisieren mit ./sync.sh upstream origin

  1. How to update my fork to have the same branches and tags as the original repository on github? Stackoverflow