Ако сте виртуозен git-аджия с умения на овчар, като мен, и решите да commit-нете в грешния бранч можете лесно да оправите кашата просто като направите (в бранча, където сте commit-нали по погрешка):
git reset HEAD~1
където ~1 е броя на commit-ите, които сте направили в грешния бранч. Сега при git status ще си видите файловете, които можете да сложите в правилния бранч.
А ако по някава причина искате да се върнете към стар commit лесно можете да се върнете към кой да е с:
git checkout <COMMIT-ID>
Edit – а ако ви се наложи да си изтриете всички локални бранчове това лесно може да стане със следните стъпки:
- Списък с всички бранчове, които ще бъдат изтрити локално:
git for-each-ref --format '%(refname:short)' refs/heads | grep -v master
Или направо да изтриете списъка с бранчове:
git for-each-ref --format '%(refname:short)' refs/heads | grep -v master | xargs git branch -D
Edit – 23.01.2022:
Ако искате да изтриете всички локални бранчове, които вече не използвате (например са изтрити от remote-а):
git remote prune origin
Edit – 19.12.2022
Ако работите дълго време във ваш бранч и трябва да вземете latest от друг бранч (в моя случай master
):
git fetch
git rebase origin/master
Edit – 22.03.2023
Използвате bitbucket и искате да се възползвате от автоматичната интеграция с тикети? Тогава трябва да добавите ID-то на тикета в commit message-a (или името на бранча). Но в бързината сте забравили да го направите? Или сте допуснали някакво тъпо typo? Няма проблем. Ако е последния commit можете да го направите с:
git commit --amend
Edit – 05.03.2025
Искате да push-нете всичко, което сте добавили в git add, но искате да видите кои файлове ще бъдат афектирани? Няма проблем, просто направете:
git diff --name-only origin/docker..docker
Където бранчът ви се казва, очевидно – docker.
Има и друга харабия в която ще видите и кои файлове са променени и кои – нови:
git diff --name-status origin/docker..docker
Edit – 13.03.2025
По горния пример, но не само имената, но и промените, които искате да видите след последния commit? Лесно:
git diff HEAD -- nameofthecrappyfile.sh
Искате графика на бранчовете си в конзолата? Няма проблем:
git log --graph --oneline --all
Искате да видите последните commits, но не искате да са с pager view (подобно на less командата)? Това е удобно ако искате да имате output-а в конзолата директно (например да paste-вате директно sha commits и подобни):
git log | cat
Та тъй.
Leave a Reply