Подтвердить что ты не робот

Отменить выборку мерзавца

У меня есть полное понимание git, а также разница между pull, fetch и merge. У меня есть пульт дистанционного управления, который я иногда отслеживаю, выбираю и сливаю, пусть говорят, что это источник/мастер. То, что я хочу сделать, - это изменить поведение "git fetch". Это звучит глупо, но я хочу, чтобы удалить обновления, когда мои удаленные точки отслеживания отслеживания, в более старое состояние, состояние прямо перед последней выборкой. Возможно ли это?

Например, скажем, что это мой рабочий процесс...

git show origin/master # shows commit abc123

git fetch              # yay i got something!

git show origin/master # shows commit def456

команда mystery идет здесь, чтобы...

git show origin/master # shows commit abc123

Это какая-то странная вещь, но у меня есть crontab, который смотрит репозиторий git, чтобы обнаружить, когда что-то есть, и у меня возникают проблемы с отладкой script, которая выполняет некоторые действия на основе этого поведение. Вместо того, чтобы ждать изменения оригинала/мастера, я хотел бы изменить его сам, чтобы я мог отлаживать свой script!

4b9b3361

Ответ 1

Вы хотите

git update-ref refs/remotes/origin/master refs/remotes/origin/[email protected]{1}

update-ref хочет, чтобы полное заклинание обновлялось, поскольку оно (намного) ниже уровня, чем команды, которые поддерживают соглашения об именах.

Ответ 2

Я не уверен, есть ли для этого фактическая команда git, и это большой хакер, но...

echo $OLD_COMMIT > .git/refs/remotes/origin/master

должен работать

Ответ 3

Это не ответ "назад a git fetch", но, похоже, ваша фактическая проблема заключается в том, как программно "наблюдать за репо для изменений", не изменяя каким-либо образом ваш репозиторий.

Для этого вы можете использовать git fetch --dry-run. Сухой запуск не приведет к каким-либо изменениям в вашем репозитории, но если есть изменения в пульте дистанционного управления, тогда он будет иметь базовый вывод на терминал; если изменений нет, то выхода не будет. Если вы хотите, чтобы это выполнялось как автоматическое script вместо ручной проверки, должно быть относительно просто создать простой bash script, который тестирует git fetch --dry-run для вывода.

Ответ 4

Надеюсь, на этот раз я получил то, что вы хотите, и я думаю, что это:

git rebase origin/master --onto origin/master^