Изучение Git. Необходимо знать, на правильном ли я пути

Прежде чем я начал использовать Git в качестве SCM, я бы «тщательно» протестировал код на стабильность, а затем просто скопировал рабочий каталог и переименовал его во что-то вроде (date) имя_проекта. Затем, если я где-то напортачил и не мог откопать себя, я бы просто начал с последнего стабильного каталога. Потом я услышал о Git.

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

  1. напишите код ...

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

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

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

  5. repeat

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

9
задан BasicObject 24 August 2010 в 15:19
поделиться

5 ответов

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

git commit -a

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


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

7
ответ дан 4 December 2019 в 10:02
поделиться

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

git difftool

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

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

3
ответ дан 4 December 2019 в 10:02
поделиться

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

Запуск из ветки master*:

  • 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 добавить, git status, git commit, промойте, повторяйте, пока ошибка не будет исправлена

  • git checkout master вернитесь к основной ветке

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

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

  • 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 объедините ветку обратно в master

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

Необязательно:

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

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

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

8
ответ дан 4 December 2019 в 10:02
поделиться

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

git diff
1
ответ дан 4 December 2019 в 10:02
поделиться

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

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

2
ответ дан 4 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: