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 pick
s 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