git: сбросить ветку из отключенного состояния - PullRequest
1 голос
/ 05 февраля 2012

Я сделал это (на моем производственном сервере):

$ git branch
* master
$ git fetch staging
$ git checkout staging/stage1

Теперь я хочу, чтобы ветка master указывала на HEAD, который является хешем SHA-1.Я также хочу обновить master reflog.

как я могу это сделать?

РЕДАКТИРОВАТЬ:

Чтобы уточнить, что я имею в виду под "reflog": Я хочу $GIT_DIR/logs/refs/heads/master добавить еще одну строку, когда я закончу.То есть я хочу изменить ветвь master, а затем указать master@{1}, где именно находится основная ветвь.Так что да, я имею в виду нечто конкретное для репо.Я хочу как-нибудь отменить это изменение ссылки, если мне нужно.

Я бы просто сделал echo .git/refs/remotes/staging/stage1 > .git/refs/heads/master, и это изменило бы основную ветку именно там, где я хочу, но папка .git/logs не смогла быне обновляется.

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

git update-ref refs/heads/master HEAD - это команда, которая мне нужна.

Мне также, очевидно, нужно полностью напечатать имена ветвей, потому что похоже, что update-ref недостаточно умен, чтобы «разрешить» свои аргументы. То есть, введя в качестве аргумента «master», git создаст ветку в .git / master вместо того, чтобы понимать, что я имею в виду «refs /heads / master».

Это обновит журнал ...

If config parameter "core.logAllRefUpdates" is true or the file "$GIT_DIR/logs/<ref>" exists then git update-ref will append a line to the log file "$GIT_DIR/logs/<ref>"

(взято из http://csurs.csr.uky.edu/cgi-bin/man/man2html?1+git-update-ref)

1 голос
/ 05 февраля 2012
git update-ref HEAD master

Это сделает "мастер" точкой, где находится ваша текущая ГОЛОВА. Я не знаю, что вы имеете в виду под словом «хотите обновить журнал master» - если вы хотите обновить журнал master, это произойдет вследствие изменения ссылки. reflog - это вещь для каждого хранилища, не привязанная к определенной ветке.

Цитата из man-страницы git update-ref:

   In general, using
       git update-ref HEAD "$head"
   should be a lot safer than doing
       echo "$head" > "$GIT_DIR/HEAD"

Об обновлении reflog:

Если параметр конфигурации "core.logAllRefUpdates" имеет значение true или файл «$ GIT_DIR / logs /» существует, тогда git update-ref добавит строку в файл журнала "$ GIT_DIR / logs /" (разыменование всех символических ссылок перед созданием имени журнала) с описанием изменения значения ref.

0 голосов
/ 05 февраля 2012

Из вашего текущего состояния выполните:

git checkout master
git reset -hard HEAD@{1}

Но не ясно, что вы пытаетесь, и не понимаете, о чем вы говорите reflog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...