git commit -m проти git commit -am


80

Здається легким, але я просто не розумію. Я в корені моєї заяви.

Ось мій робочий процес.

git add .
git commit -m "added a new feature some files changed"
git push heroku master

Зазвичай це працює. Усі мої зміни просунуті.

Але іноді у мене є файл, який я змінюю, але коли я натискаю на Heroku, змін немає для ТОГО ОДНОГО ФАЙЛУ ... але для більшості файлів зміни є ...

Але якщо я це зроблю

git add .
git commit -am "added a new feature some files changed"
git push heroku master

Все (усі зміни) надсилаються на Heroku


Чи можете ви навести приклади того, який файл не перехоплений? Це файл, який ви видалили? Іноді вам потрібно зробити, git add . --updateщоб їх зловити.
helion3

@BotskoNet - Файл є файлом CSS у моїй програмі Rails. З якоїсь причини, коли я редагую цей файл, зміни не надсилаються до Heroku. Це траплялося раніше, і я просто не розумію, чому.
slindsey3000

Можливо, це вам допоможе. [Different між тими] [1] [1]: stackoverflow.com/a/15419846/3962576
Reven

Відповіді:


84

З документів :

git commit -a автоматично переводить усі відстежувані, змінені файли перед фіксацією. Якщо ви вважаєте, що етап додавання git у робочому процесі занадто громіздкий, Git дозволяє пропустити цю частину за допомогою параметра -a. Це в основному говорить Git запустити git add на будь-якому файлі, який "відстежується" - тобто будь-який файл, який був у вашому останньому коміті та був змінений. Це дозволяє вам робити більше робочого процесу в стилі Subversion, якщо хочете, просто редагуючи файли, а потім запускаючи git commit -a, коли ви хочете зробити знімок всього зміненого. Вам все-таки потрібно запустити git add, щоб розпочати відстеження нових файлів, як і Subversion.

Використання опції -amдозволяє додавати та створювати повідомлення для коміту за допомогою однієї команди.


2
То чому git commit -am "x"працює ... але .... git add . git commit -m "x"не працює?
slindsey3000

13
Оскільки деякі ваші файли не індексовані. Це відбувається з видаленими / доданими файлами, які наразі не відстежуються. Зазвичай вам потрібно зробити git add -u, щоб індексувати "не відстежувані" файли. -amзробить це і для вас.
Davin Tryon

3
@ slindsey3000 ви можете шукати git add -A, що збігається з git add --all, що відрізняється від git add.
Олександр Міллс

19

Я б запропонував, якщо ви змінили лише один файл, ви можете зробити щось подібне:

git add "Your_file.txt"
git commit -m "added a new feature in a file"
git push heroku master

Або якщо ви змінили кілька файлів, то можете зробити щось подібне:

git add .
git commit -m "some files changed"
git push heroku master

Подібним чином ви можете додати та зафіксувати всі файли в одному рядку за допомогою цієї команди:

git commit -am "added a new feature some files changed"
git push heroku master

5
git commit -amне натискає, тому ви не можете замінити три згадані рядки.
WilomGfx

4
@WilomGfx Я думаю ні. Він каже: ви можете додавати та фіксувати, не натискаючи; тож він має рацію, коли каже: на одному рядку з цією командою
robe007
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.