Каков минимальный набор команд git, который может заставить меня работать над проектом в команде

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

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

Вот что я знаю на данный момент о том, как начать работу над проектом

  1. чтобы начать проект мне сначала нужно git clone
  2. Предполагая, что сейчас я нахожусь в основной ветке, мне нужно создать новую базу ветки на основной ветке с помощью git checkout -b <newBranch>
  3. После некоторого кодирования я git add . и если он готов к фиксации, я git commit тогда наконец git push

Итак, вот мой первый вопрос, если предположить, что я продолжаю работать над той же функцией, т. Е. Я остаюсь в той же ветке, следующим коммитом должно быть git commit —amend или все же git commit? Я понимаю, что git commit —amend позволяет комбинировать поэтапные изменения с предыдущим коммитом вместо создания совершенно нового коммита. Поэтому я не уверен, что эти два коммита связаны с реализацией одной и той же функции, должен ли я их объединять или нет?

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

Один из подходов

  1. git checkout master для переключения на основную ветку
  2. git pull чтобы получить последний код
  3. git branch -b <newBranch> создать ветку, отслеживающую мастера для работы

Тогда другой подход

  1. git fetch
  2. git checkout master
  3. git reset —hard origin/master
  4. git branch -b <newBranch>

Итак, вот мой второй вопрос: верны ли эти два подхода и одинаковы ли они? Итак, вы, ребята, можете предложить какой-нибудь другой подход для синхронизации моего локального мастера с удаленным мастером?


85
2

Ответы:

Решено

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

Объявление 2: я не понимаю, как последний шаг в обоих подходах связан с обновлением основной ветки. git pull это git fetch + git merge, но возможно и reset --hard - но обязательно проверьте, нет ли изменений в вашей рабочей копии, иначе они будут полностью потеряны. После того, как мастер синхронизирован, можно git rebase все ветки функций, которые еще не были отправлены, включить в них новый мастер.


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

Еще одна команда, которая может вам пригодиться, это git reflog. Вы можете использовать рефлог, чтобы вернуться к определенному состоянию вашего проекта, если вы запутались.

В git есть несколько способов сделать одно и то же. Я использую следующий набор команд для синхронизации моего репо:

git fetch origin master

git rebase origin/master

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