Есть две основные вещи, которые нужно поддерживать, чтобы ветвление хранилища всегда обновлялось навсегда.
1.Создайте ветви из мастера вилки и сделайте там изменения .
Так что, когда ваш Запрос на извлечение будет принят, вы можете безопасно удалить веткутак как ваш добавленный код будет жить в вашем мастере вашего разветвленного репозитория, когда вы обновите его с помощью апстрима.Таким образом, ваш мастер всегда будет в чистом состоянии, чтобы создать новую ветвь для другого изменения.
2.Создайте запланированное задание для мастера ветвления на обновите автоматически .
Это можно сделать с помощью cron .Вот пример кода, если вы делаете это в Linux.
$ crontab -e
поместите этот код на crontab file
, чтобы выполнять задание ежечасно.
0 * * * * sh ~/cron.sh
, затем создайтеcron.sh
файл сценария и git взаимодействия с ssh-agent и / или ожидают как показано ниже
#!/bin/sh
WORKDIR=/path/to/your/dir
REPOSITORY=<name of your repo>
MASTER="git@github.com:<username>/$REPOSITORY.git"
UPSTREAM=git@github.com:<upstream>/<name of the repo>.git
cd $WORKDIR && rm -rf $REPOSITORY
eval `ssh-agent` && expect ~/.ssh/agent && ssh-add -l
git clone $MASTER && cd $REPOSITORY && git checkout master
git remote add upstream $UPSTREAM && git fetch --prune upstream
if [ `git rev-list HEAD...upstream/master --count` -eq 0 ]
then
echo "all the same, do nothing"
else
echo "update exist, do rebase!"
git reset --hard upstream/master
git push origin master --force
fi
cd $WORKDIR && rm -rf $REPOSITORY
eval `ssh-agent -k`
Проверьте ваш разветвленный репозиторий.Время от времени он всегда будет отображать это уведомление:
Эта ветвь даже с <upstream>
: master .