2015-05-01 7 views
0

Я чувствую себя действительно глупо сейчас. Я использовал несколько приложений для управления версиями, но не так много. Я прочитал много сообщений, но я больше смущен, чем когда-либо, так как многие из (явно правильных) ответов используют командную строку и предположения, что я понимаю GIT намного лучше, чем я.Глупые вопросы GIT GUI

Я работаю в окнах проекта с несколькими людьми, проверяющими код. Мы используем Git Gui, но у меня также установлен Git Bash. До сих пор все, что мне нужно было делать, это совершить, нажимать, тянуть и сливаться, и жизнь была хорошей.

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

Я НЕ хочу изменять основной репозиторий, но моя локальная версия. Как только я нахожу это изменение, я хочу скопировать файлы, вернуться к текущей версии, а затем применить diff от скопированных файлов к текущей версии и проверить это.

Я пробовал несколько вариантов, но никто, кажется, не позволяет мне это делать. И я тоже не хочу испортить основной репозиторий.

Я должен верить, что это довольно просто, просто не уверен, как это сделать. И да, я мог бы потратить несколько дней на изучение тонкостей Git, но сейчас мне нужно заставить код работать, а не ломать главный репозиторий, и не потерять несколько дней, чтобы выяснить git./git gui/etc. (Это действительно правильный способ сделать это, но люди должны этот код работает (снова) Теперь

Благодаря

+5

[git bisect] (http://git-scm.com/docs/git-bisect) – crashmstr

ответ

3

комментарий Crashmstr является лучшим способом пойти:.! http://git-scm.com/docs/git-bisect

В основном вы начинаете рассекает с

$ git bisect start 

Тогда объявляю свой "плохой вариант"

$ git bisect bad     # Current version is bad 

А потом объявить последний известный «хороший вариант»

$ git bisect good v2.6.13-rc2 # v2.6.13-rc2 was the last version 
           # tested that was good 

Затем вы можете проверить каждую версию через бисекцию до тех пор, пока не найдешь ломку фиксации.

Если вы не знакомы с делом пополам, в основном это сокращение пространства до половины, пока вы не получите требуемое значение, например.

[    bad commit in here      ] 
[[  good   ][   bad    ]] 
[[  good   ][[ bad  ][ good  ]] 

Пока вы не получите фактическую фиксацию, которую хотите.

Более простой способ это сделать

git log 

И затем проверка каждого совершить одно в то время, пока вы не найдете сломанный один.

E.g.

$ git log 
commit 63cd158599d77ac73abcefd087a2f7bdfdb171cb 
Author: Jordan 
Date: Fri May 1 02:12:46 2015 -0700 

    Start look at query builder 

commit d0ca01f7c7c2e7a2153fbe3c980f79022f096aad 
Author: Jordan 
Date: Thu Apr 30 23:48:38 2015 -0700 

    TODO: add cloudsearch filtering for inactive 

Тогда вы можете оформить старый совершать ничего не меняя с

git checkout 63cd15 

Пока вы не найдете сломанный один.

+0

Должен ли я предоставить всю строку фиксации (очень утомительную) или мне нужны только первые 6 символов? Я спрашиваю, как я видел подобные сокращения в других потоках. – JustMeToo

+0

В основном вам нужно предоставить достаточно символов для git, чтобы понять его как уникальный хеш. 6 - довольно неплохое правило, хотя вы можете пойти на 2 или 3, я думаю, в зависимости от ситуации. – jaypb