4. Коммит изменений
macbook:test vandud$ git rm govno
rm 'govno'
macbook:test vandud$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: govno
macbook:test vandud$ git commit -m 'zhopa23'
[master fb6a8c6] zhopa23
1 file changed, 1 deletion(-)
delete mode 100644 govno
macbook:test vandud$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
macbook:test vandud$
Выше видно как я сделал git rm
(он удаляет файл и сразу же добавляет это изменение в индекс)
Далее видим что в статусе сразу видно это удаление и предлагается сделать коммит
Делаю коммит и в статусе видно что моя текущая копия впереди от ориджина на один коммит (предлагается запушить)
.gitignore
macbook:test vandud$ cat .gitignore
*.zhopa
macbook:test vandud$ vim zhopa.zhopa
macbook:test vandud$ git status -s
?? .gitignore
macbook:test vandud$ git add zhopa.zhopa
The following paths are ignored by one of your .gitignore files:
zhopa.zhopa
Use -f if you really want to add them.
Файл .gitignore нужен для вывода антрэкед файлов из поля зрения гита. Уже затреченые файлы он продолжит видеть не смотря на гитигнор
По формату файла можно смотреть тут - https://git-scm.com/docs/gitignore
macbook:test vandud$ git add -f zhopa.zhopa
macbook:test vandud$ git status -s
A zhopa.zhopa
?? .gitignore
git-add
Добавляет контент файлов в индекс
Можно перечислять файлы поименно, можно использовать ключ -A/--all
, можно использовать шаблоны как в .gitignore
-
-f
- добавит не смотря на гитигнор -
--dry-run
- не добавит файлы, покажет что с ними произойдет при обычном добавлении
macbook:test vandud$ git add --dry-run au.zhopa
The following paths are ignored by one of your .gitignore files:
au.zhopa
Use -f if you really want to add them.
macbook:test vandud$ git add --dry-run aou.aeou
add 'aou.aeou'
macbook:test vandud$ git status -s # видим что ничего не добавилось
A zhopa.zhopa
?? .gitignore
?? aou.aeou
Чтобы обновить инфу об удаленных файлах в индексе, нужно добавить их командой add
macbook:test vandud$ touch test
macbook:test vandud$ git status -s
?? test
macbook:test vandud$ git add test
macbook:test vandud$ git status -s
A test
macbook:test vandud$ rm test
macbook:test vandud$ git status -s
AD test
macbook:test vandud$ git add test
macbook:test vandud$ git status -s
macbook:test vandud$
git-rm
Удаляет файл(ы) и обновляет индекс, принимает имена файлов или шаблоны
Не даст удалить проиндексированный но не закоммиченный файл
Чтобы все равно удалить, нужно использовать ключ -f/--force
macbook:test vandud$ git add aou.aeou
macbook:test vandud$ git rm aou.aeou
error: the following file has changes staged in the index:
aou.aeou
(use --cached to keep the file, or -f to force removal)
macbook:test vandud$ git commit -m 'test rm'
[master cc5a978] test rm
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 aou.aeou
macbook:test vandud$ git rm aou.aeou
rm 'aou.aeou'
macbook:test vandud$ git status -s
D aou.aeou
?? .gitignore
А вот так с ключом -f
macbook:test vandud$ touch test
macbook:test vandud$ git status -s
D aou.aeou
?? .gitignore
?? test
macbook:test vandud$ git add test
macbook:test vandud$ git status -s
R aou.aeou -> test
?? .gitignore
macbook:test vandud$ git rm test
error: the following file has changes staged in the index:
test
(use --cached to keep the file, or -f to force removal)
macbook:test vandud$ git rm -f test
rm 'test'
macbook:test vandud$ git status -s
D aou.aeou
?? .gitignore
-
--cached
- удалит из индекса но оставит сам файл
macbook:test vandud$ git status -s
A zhopa.zhopa
?? .gitignore
?? aou.aeou
macbook:test vandud$ cat zhopa.zhopa
santoehu
macbook:test vandud$ git rm --cached zhopa.zhopa
rm 'zhopa.zhopa'
macbook:test vandud$ git status -s
?? .gitignore
?? aou.aeou
macbook:test vandud$ cat zhopa.zhopa
santoehu
git-commit
"Слепок индекса"
-
-a
- загонит состояние директории в индекс
(удалит удаленное, обновит измененное, добавит новое итд)
В гит коммит можно передать имена файлов, тогда будут закоммичены только изменения из них и будет проигнорирован индекс
-
--amend
- изменить последний неопубликованный коммит (объединить последний коммит с тем что коммитится в момент выполнения команды)
macbook:test vandud$ git log --oneline
cc5a978 (HEAD -> master) test rm
fb6a8c6 zhopa23
5876123 (origin/master) govno
3993fdf rm
6b356d6 double zhop commit
6cdf909 zhopnyi commit
macbook:test vandud$ git status -s
D aou.aeou
?? .gitignore
macbook:test vandud$ git add .gitignore
macbook:test vandud$ git status -s
A .gitignore
D aou.aeou
macbook:test vandud$ git commit -m '--amend test' --amend
[master 176e908] --amend test
Date: Sun Feb 7 05:09:54 2021 +0300
1 file changed, 1 insertion(+)
create mode 100644 .gitignore
macbook:test vandud$ git status -s
macbook:test vandud$ git log --oneline
176e908 (HEAD -> master) --amend test
fb6a8c6 zhopa23
5876123 (origin/master) govno
3993fdf rm
6b356d6 double zhop commit
6cdf909 zhopnyi commit
No Comments