Пояснена команда Git коміту

git commitКоманда збереже всі зміни в постановку, поряд з описом короткого від користувача, в «фіксації» в локальне сховище.

Комітети лежать в основі використання Git. Ви можете уявити коміт як знімок вашого проекту, де нова версія цього проекту створюється в поточному сховищі. Дві важливі особливості комітів:

  • Ви можете згадати здійснені зміни пізніше або повернути проект до цієї версії (див. Git checkout)
  • якщо кілька комітів редагують різні частини проекту, вони не будуть перезаписувати один одного, навіть якщо автори коміту не знали один про одного. Це одна з переваг використання Git перед таким інструментом, як Dropbox або Google Drive.

Варіанти

Є кілька варіантів, які ви можете включити git commit. Однак цей посібник охоплюватиме лише два найпоширеніші варіанти. Для отримання повного списку варіантів, будь ласка, зверніться до документації Git.

Варіант -m

Найбільш поширеним варіантом, який використовується, git commitє -mваріант. -mВиступає за повідомлення. Під час дзвінка git commitпотрібно включити повідомлення. Повідомлення повинно бути коротким описом змін, які виконуються. Повідомлення повинно бути в кінці команди, і воно повинно бути загорнуте в лапки " ".

Приклад використання -mопції:

git commit -m "My message"

Вивід у вашому терміналі повинен виглядати приблизно так:

[master 13vc6b2] My message 1 file changed, 1 insertion(+)

ПРИМІТКА. Якщо параметр-mне входить до складуgit commitкоманди, вам буде запропоновано додати повідомлення у текстовому редакторі за замовчуванням - див. "Використання детальних повідомлень про коміти" нижче.

Варіант -a

Ще одним популярним варіантом є -aваріант. -aВарто для всіх. Цей параметр автоматично переводить усі модифіковані файли на фіксацію. Якщо додано нові файли, -aопція не буде індексувати ці нові файли. Фіксуватимуться лише ті файли, про які відомо сховище Git.

Наприклад:

Скажімо, у вас є README.mdфайл, який уже зафіксовано у вашому сховищі. Якщо ви внесете зміни до цього файлу, ви можете скористатися -aопцією у вашій команді коміту, щоб сформулювати та додати зміни до вашого сховища. Однак що, якщо ви також додали новий файл із назвою index.html? -aВаріант не буде етап , index.htmlяк це в даний час не існує в сховище. Коли додаються нові файли, git addслід викликати команду, щоб індексувати файли, перш ніж вони зможуть бути передані до сховища.

Приклад використання -aопції:

git commit -am “My new changes”

Вивід у вашому терміналі повинен виглядати приблизно так:

[master 22gc8v1] My new message 1 file changed, 1 insertion(+)

Використання детальних повідомлень про коміти

Хоча git commit -m "commit message"це чудово працює, може бути корисно надати більш детальну та систематичну інформацію.

Якщо ви здійсните фіксацію без використання цієї -mопції, git відкриє ваш текстовий редактор за замовчуванням з новим файлом, який включатиме закомментований список усіх файлів / змін, які виконуються у коміті. Потім ви пишете своє докладне повідомлення про коміт (перший рядок буде розглядатися як рядок теми), і фіксація буде виконана, коли ви збережете / закриєте файл.

Мати на увазі:

  • Зберігайте рядки повідомлень коміту довжиною менше 72 символів, як звичайна практика
  • Цілком нормально - і навіть рекомендується - писати багаторядкові повідомлення комітів
  • Ви також можете посилатися на інші проблеми або витягувати запити у своєму повідомленні про коміт. GitHub виділив посилання на номер для всіх запитів на витягування та проблем, тому, наприклад, якщо ви хочете звернутися до запиту на витяг # 788, просто зробіть це або в рядку теми, або в основному тексті, як підходить

Варіант —замін

--amendОпція дозволяє змінити свій останній Ком. Скажімо, ви щойно здійснили фіксацію і помилились у своєму журналі журналу комітів. Ви можете зручно змінити найновіший коміт за допомогою команди:

git commit --amend -m "an updated commit message"

Якщо ви забудете включити файл до коміту:

git add FORGOTTEN-FILE-NAME git commit --amend -m "an updated commit message" # If you don't need to change the commit message, use the --no-edit option git add FORGOTTEN-FILE-NAME git commit --amend --no-edit

Передчасні коміти трапляються весь час у процесі вашого повсякденного розвитку. Легко забути встановити файл або як правильно відформатувати повідомлення про коміт. --amendПрапор являє собою зручний спосіб , щоб виправити ці незначні помилки. Ця команда замінить старе повідомлення коміту оновленим, зазначеним у команді.

Змінені коміти насправді є абсолютно новими комітами, і попереднє комітування більше не буде у вашій поточній гілці. Коли ви працюєте з іншими, вам слід намагатись уникати внесення змін до комітів, якщо останній коміт уже перенесений у сховище.

За допомогою --amendодного з корисних прапорів, який ви могли б використовувати, --authorможна змінити автора останнього зробленого коміту. Уявіть собі ситуацію, коли ви неправильно встановили своє ім’я чи електронну адресу в конфігураціях git, але ви вже зробили коміт. За допомогою --authorпрапора ви можете просто змінити їх, не скидаючи останнього коміту.

git commit --amend --author="John Doe "

Варіант -v або —вербоза

Параметр -vабо --verboseвикористовується без -mпараметра. -vОпція може бути корисна , якщо ви хочете відредагувати Git коммітов в редакторі за замовчуванням, будучи в стані бачити зміни , які ви зробили для фіксації. Команда відкриває текстовий редактор за замовчуванням із шаблоном повідомлення про коміт , а також копією змін, внесених для цього коміту. Зміни або різниця не будуть включені до повідомлення про коміт, але вони забезпечують хороший спосіб посилатися на ваші зміни, коли ви описуєте їх у своєму повідомленні про коміт.

Як стиснути кілька комітів в один

Це неймовірна особливість, rebaseяку можна використовувати в interactiveрежимі. Щоб стиснути останні n комітів в один, виконайте таку команду:

git rebase -i HEAD~n

That will open up a text-editor with something similar to the following:

pick commit_1 pick commit_2 pick commit_3 ... pick commit_n # Bunch of comments

Leave the first commit alone, and change the rest of the picks to squash. Save and exit the editor.

So if you wanted to squash the last three commits, you’ll first run git rebase -i HEAD~3 and then you’ll want to edit your commits to look something like this:

pick dd661ba Commit 1 squash 71f5fee Commit 2 squash f4b4bf1 Commit 3

If you’ve already pushed to a remote before squashing your commits, you’ll have to push to the remote again, with the -f flag, otherwise git will throw an error at you.

It is strongly suggested that you read the information in the opened file as there are many things you can do.

More Information:

  • Git documentation: commit