2015-09-04 2 views
9

По ошибке я совершил коммит, который теперь я хочу удалить из журнала истории и вернуться к предыдущему фиксации. Я пытаюсь проверить фиксацию, которую хочу вернуть, но Smartgit попросит меня создать локальную ветку, чтобы сделать это (скриншот прилагается), и поскольку я не эксперт с SG, мне действительно нужен совет. Я также пытаюсь вернуть фиксацию, которую я сделал по ошибке, но я все еще вижу фиксацию в журнале. Это как журнал теперь посмотрите:smartgit удалить фиксацию и вернуться к предыдущему фиксации

При попытке проверки:

enter image description here

Как мой журнал выглядит на данный момент:

enter image description here

Что я хочу сделать, это удалить первые два коммиты из журнала и возвращаются к фиксации «Cambios Varios» (тот, у которого есть зеленая стрелка, которая появилась, когда я пытался проверить это сообщение).

Весь этот беспорядок был из-за того, что мой коллега внес некоторые изменения и добавил файл, а затем зафиксировал его изменения, чтобы обновить мои файлы. Я сделал попытку, но мои файлы не обновились в моем локальном репозитории и не добавили файл, который был добавлен моей командой. Есть ли что-то еще, что мне нужно сделать, чтобы обновить все мои папки, когда другой пользователь делает фиксацию помимо PULL? Im довольно новичок в SmartGit и немного путается каждый раз, когда я пытаюсь сделать чистую тягу. Большое спасибо !

ответ

8

Что вы просите, это не относится к SmartGit, а к GIT в целом. SmartGit - это просто клиент, хотя он очень удобен и полностью доступен. В вашей ситуации вы должны принять во внимание несколько особенностей GIT:

  1. Отрасли
  2. Опубликовано совершает
  3. Отдельно голова
  4. Переписывая удаленной истории

Google на них, чтобы получить дополнительную информацию. Теперь, давайте дадим имена ваших коммитам:

enter image description here

Вы продолжаете видеть совершать A, потому что у вас есть филиала, указывающие на него. Это ваш местные филиал master. Вы можете сбрасывать эту ветку в любое ваше обязательство. В SmartGit для этого просто нажмите на эту зеленую метку ветки и перетащите ее на любой другой фиксатор. Вот и все. Например. перезагрузите его, чтобы зафиксировать B, на который указывает origin/master, и вы больше не увидите эту фиксацию в своем журнале, потому что нет ветки, из которой она может быть достигнута.

Строго говоря, вы можете сделать тот же трюк с веткой origin/master, вы можете сбросить его на любой другой фиксатор. Но вы должны быть очень осторожны с ним, потому что он указывает на фиксацию B, которая является опубликовала. То есть любой может заставить его потянуть за свою машину. Если вы не можете точно сказать, вы не можете сбросить ветвь из опубликованного коммита без опасности сломать чью-то копию репо.

Итак, простой ответ заключается в том, что вы не можете вернуть репо на фиксацию C так, как вы хотите, потому что это может конфликтовать с репозициями, клонированными на других машинах. Более длинный ответ - вы можете попробовать.

Если вы уверены, что единственные лица, у которых есть это репо, - это вы и ваш коллега, вы можете переписать удаленный журнал. Для этого сбросьте свой локальный ветвь master на фиксацию C (с перетаскиванием & падение, как я сказал ранее) и push it. SmartGit может запретить вам это делать, перейдите в раздел «Настройки/Команды/Нажать и включить» «Разрешить изменение нажатых коммитов». Потому что это опасно.

Это будет переписывать положение удаленной ветви master, вытащить ее из машины вашего коллеги. Если он не внес каких-либо дополнительных изменений в эту ветку, это должно быть хорошо.

+0

«Потому что это опасно». Это значит, что это может вызвать путаницу, а не то, что она может сломать что-нибудь, верно? – endolith

+1

@endolith Да, он не нарушит сам репозиторий GIT, вы не сможете легко его разбить. – Mikhail

+0

спасибо @Mikhail, это очень полезно – Ismoh

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