MYSTERRIA3.0

Приемы работы с Git

Q: Как сменить имя, под которым я фигурирую в описании коммитов?

git config --global user.name "John Doe"
git config --global user.email "doe@example.com"

Q: Я сделал изменения в бранче, но мне срочно надо что-то поправить в другом. Я еще не готов сделать коммит своих изменений в текущем бранче.

Следует сохранить свои изменения командой git stash, после чего можно будет сменить бранч. Вернувшись обратно в исходный бранч, можно снова применить свои изменения командой git stash apply. Сташ может хранить множество изменений и действует как стек. Чтобы очистить сташ используйте git stash clear

git checkout my_branch
# редактируем файлы
git stash
git checkout anoter_branch
# редактируем файлы
git commit -am "Some usefull work done."
git checkout my_branch
git stash apply
git stash clear

Q: Я я сделал изменения не в том бранче, но еще не сделал коммит!

Механизм тот же, что и с отложенными изменениями.

git stash
git checkout right_branch
git stash apply
git commit -a

Q: Я я сделал изменения не в том бранче и уже сделал коммит!

git reset --soft HEAD^
git stash
git reset --hard
git checkout right_branch
git stash apply
 

Q: Я сделал изменения не в том бранче, сделал коммит, но хуже всего то, что я залил изменения на сервер, сделав git push

Если удаленный бранч после этих действий никем не изменен, то следует откатить свой локальный бранч, где были сделаны изменения и сделать push с ключем --force.

git reset --soft HEAD^
git stash
git reset --hard
git push --force origin wrong_branch
git checkout right_branch
git stash apply

Q: Как удалить бранч с сервера (remote branch)?

git push origin :remote_branch_name

Q: Я залил свой локальный бранч на сервер (git push origin foo), но мой локальный бранч не связан с созданным на сервере и я не могу сделать git pull. Как связать локальный бранч с удаленным?

git branch --set-upstream foo upstream/foo

Q: Я сделал git pull из удаленной ветки, получил совсем не то, что хотел, как вернуть мою ветку на состояние до неудачного мерджа?

Надо определить бранч, являвшийся хэдом ветки до слияния с удаленной веткой (git pool-ом). Сделать это можно командой git reflog, которая показывает все события, произошедшие с веткой, а так же команды, введенные с консоли.

Когда нужный нам бранч определен, а это будет запись до нашего неудачного pull-а, следует откатить ветку назад при помощи git reset --hard.

Рубрики: Git

↑ Наверх


blog comments powered by Disqus

Контакты

Igor Zinkovsky aka TLoD,Snake. Писать на электропочту, стучаться в аську 302380533, искать в Санкт-Петербурге.

© 2002-2019