Обяснена команда за Git commit

В 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

В --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 или —verbose

Опцията -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