2014-11-08 3 views
0

Я использую git какое-то время, создавая беспорядок и странные вещи, но теперь хотел бы добиться хорошего рабочего процесса.Выполняется вперед в хранилище клонированных зеркал Git

Это сценарий, я получил некоторые репозитории на github, которые я хочу нажать, только если у меня есть приличная фиксация.

Итак, я клонировал (--mirror) репозитории github на своей рабочей станции, поэтому я могу работать с зеркалами с моих ноутбуков и локально на своей рабочей станции, не путаясь с github («фиксировать часто, нажимать один раз» как они говорят).

Все очень хорошо, но фундаментальная вещь, которую мне нужно знать, прежде чем совершать толчок от зеркала к github - это знать, сколько коммитов я впереди в зеркале (я знаю, git status не работает потому что зеркало также является типом репо).

Простая схема моей работы:

(мерзавец клонировали) -> (мерзавец зеркало на рабочей станции) -> (GitHub)

Так как я могу знать, сколько фиксаций я впереди в клонированный зеркало репо?

+0

Это не ясно, что вам нужно зеркало репо на всех –

+0

В каком смысле Эндрю? Моя идея состоит в том, чтобы иметь локальный общий репозиторий, который может входить в github, поэтому я думал о локальном зеркале. Что ты предлагаешь ? – Marcs

+0

Просто перебазируйте, прежде чем нажимать? Если вы не активно используете github для резервного копирования вашей незавершенной работы, вам не нужен промежуточный репозиторий. –

ответ

1

Где бы вы ни находились в зеркальном репозитории (на работе или на своем ноутбуке). Добавьте второй пульт для GitHub

git remote add github [email protected]:username/repo.git 

Когда Вы завершаете ваши коммиты, вы можете подтолкнуть их непосредственно к GitHub без баловаться с зеркалом вообще.

git push github master 

Затем, когда вы хотите, чтобы нажать WIP совершить, просто использовать толчок, как вы это обычно и они получат толкнул ваше зеркало вместо этого. Тогда, чтобы увидеть, насколько ваш мастер опережает GitHub, вы можете сделать

git log github/master..master 
+0

Благодарим вас за разъяснение, что предлагал Эндрю С. Это более чистое решение. Вы оба правы, «я делал это неправильно». – Marcs

+1

Просто для людей, читающих ваш ответ, я пробовал и работает безупречно. Ошибка перед выполнением 'git log github/master..master', мне пришлось потянуть github следующим образом:' git pull github'. – Marcs

1

В зеркальном хранилище, запущенном git rev-list --count FETCH_HEAD..HEAD, будет отображаться количество фиксаций, по которым зеркало опережает его начало. Это основано на последнем извлечении, которое вы сделали в зеркале, но обратите внимание, что git fetch в зеркале уничтожит любые изменения, внесенные в зеркало, но не будет перенесено в начало зеркала.

Вы можете увидеть более детальную картину с

git rev-list --count --left-right HEAD...FETCH_HEAD 

, который дает два числа; первое - количество коммитов на текущей ветви, которые присутствуют в зеркале, но не в начале координат, а второе - количество фиксаций текущей ветви, которые присутствуют в начале координат, но не в зеркале (это будет положительный, если вы сбросите ветвь на более раннюю фиксацию или переустановите некоторые коммиты, которые вы уже нажали).

0

Простое решение, чем мой другой ответ: если вы находитесь в зеркале, git fetch, то все ссылки там идентичны началу, поэтому git fetch && git status в клоне зеркала, в котором вы работаете, расскажет вам, что вам нужно знать (потому что недавно обновленное зеркало является точной копией его происхождения).

Это также имеет то преимущество, что оно работает для любой ветки, а не только master.

+0

Хорошо, но факт, что 'git fetch' вытирает каждую фиксацию на зеркале, является проблемой. Вероятно, я буду совершать изменения с разных машин в зеркало на главной рабочей станции. – Marcs

+0

Что вы пытаетесь достичь с помощью зеркального репозитория? –

+0

Я хочу использовать зеркало как общий репозиторий между моей машиной в локальной сети. И затем использовать его как единый узел, чтобы в конечном итоге нажать на github, когда я доволен своими коммитами. – Marcs

 Смежные вопросы

  • Нет связанных вопросов^_^