Изучение Git. Нужно знать, нахожусь ли я на правильном пути - PullRequest
9 голосов
/ 24 августа 2010

До того, как я начал использовать Git в качестве SCM, я бы "тщательно" проверил код на стабильность, а затем просто скопировал бы рабочий каталог и переименовал его во что-то вроде (date) project_name.Тогда, если я что-то напутаю и не смогу откопать себя, я просто начну с последнего стабильного каталога.Потом я услышал о Git.

Я хочу знать, правильно ли я до сих пор использую Git.Вот что я делаю:

  1. напишите какой-нибудь код ...

  2. git add ., чтобы добавить все измененные файлы вэтап

  3. git status, чтобы проверить, готовы ли эти измененные файлы к фиксации

  4. git commit, чтобы зафиксировать последние изменения и записатьсообщение коммита

  5. повтор

Пока это все, что я делал.Для простых целей резервного копирования и для возможности возврата к «предыдущей стабильности» достаточно ли этого знания Git?Если нет, что еще я должен знать?

Ответы [ 5 ]

8 голосов
/ 24 августа 2010

Как уже упоминали другие, я настоятельно рекомендую освоиться с ветками. Мой рабочий процесс обычно:

Начиная с главной ветки *:

  • git checkout -b awesome-new-killer-feature создать новую ветку (-b) и проверить ее.

  • написать код ...

  • git add ., git status, git commit совершить небольшие изменения, повторите шаг 2

О, нет! Мой друг только что сообщил о серьезной ошибке! Он потерял данные !!!!!

  • git checkout master вернуться в основную ветку

  • git checkout -b bugfix-serious-data-loss создать новую ветку для исправления

  • исправление ошибок, git add, git status, git commit, полоскание, повторение до устранения ошибки

  • git checkout master вернуться в главную ветку

  • git merge --no-ff bugfix-serious-data-loss исправление ошибки слияния обратно на мастер

Хорошо, теперь я могу вернуться к работе над своей потрясающей функцией new-killer:

  • git checkout awesome-new-killer-feature возобновить работу над тем, над чем я работал

  • git rebase master объединить изменения мастера с рабочим кодом, чтобы мы воспользовались исправлением ошибки. Не говоря уже о том, что это уменьшает вероятность конфликтов слияния позже, когда нам нужно слить эту ветку обратно в master

  • написать код, git add, git status, git commit, промыть, повторять до завершения функции

  • git checkout master, git merge --no-ff awesome-new-killer-feature объединить ветвь обратно с мастером

Теперь сядьте и наберите gitk, чтобы увидеть хороший исторический обзор того, что вы делали.

Дополнительно:

  • git branch -D bugfix-serious-data-loss awesome-new-killer-feature удалить неиспользуемые ветки. Мне нравится содержать мой репо в чистоте

Сила git не в том, чтобы проверять вашу работу. Это зависит от того, насколько быстро и дешево выполняется ветвление и слияние. Ветвление позволяет вам работать над несколькими идеями одновременно и / или экспериментировать с одноразовыми идеями, не затрагивая стабильный код. Если идея не работает, просто удалите ветку, если она работает, объедините ее с мастером.

* примечание: по традиции большинство пользователей git называют свою основную / транковую ветку "master".

7 голосов
/ 24 августа 2010

Если все, что вы хотите сделать, это иметь возможность восстановить старый коммит, когда что-то пойдет не так, тогда да, вот и все. Хотя вы можете объединить все шаги Git в один с:

git commit -a

(который фиксирует все измененные отслеживаемые файлы)


Я бы посмотрел на ветвления и пометки, если у вас есть время, но они не обязательны для того, что вы делаете, они просто стремятся облегчить жизнь

3 голосов
/ 24 августа 2010

Да, вы делаете все правильно :) Перед фиксацией иногда рекомендуется выполнить следующую команду:

git difftool

Это позволит вам пройти через все изменения кода в вашем любимом инструменте сравнения (например, Beyond Compare, KDiff3 и т. Д.). Просто нажмите Enter, чтобы открыть инструмент, убедитесь, что все в порядке и закройте программу. Затем нажмите Enter еще раз, чтобы автоматически изменить следующий измененный файл.

Если вы используете Windows, вот хороший урок о том, как настроить ваш любимый инструмент сравнения (и слияния).

2 голосов
/ 24 августа 2010

Я использую gitk --all для визуализации моей истории ревизий и незафиксированных изменений во всех ветвях, и я использую git commit -am "commit message" для добавления и фиксации в одной команде.

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

1 голос
/ 24 августа 2010

И для удобного способа предварительного просмотра изменений перед их добавлением

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