Quick Tip zum synchen von Tags in Forks (Git) hinzugefügt.
All checks were successful
ci/woodpecker/push/default Pipeline was successful
All checks were successful
ci/woodpecker/push/default Pipeline was successful
This commit is contained in:
parent
9e7b8f8faa
commit
4525956c0d
3 changed files with 58 additions and 0 deletions
58
docs/Quick Tips/Git/sync-tags-branches.md
Normal file
58
docs/Quick Tips/Git/sync-tags-branches.md
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
# 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
|
||||||
|
``` bash
|
||||||
|
git remote add upstream <REPO-URL>
|
||||||
|
git pull upstream
|
||||||
|
```
|
||||||
|
3. Skript zur Synchronisation anlegen (sync.sh) [^1]:
|
||||||
|
``` bash
|
||||||
|
## 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](hhttps://stackoverflow.com/questions/15779740/how-to-update-my-fork-to-have-the-same-branches-and-tags-as-the-original-reposit)
|
Loading…
Reference in a new issue