git часть 1
Абсолютно уверен, что лучше чем git book про самы азы гита я не расскажу, потому имеет смысл только лишь накидать сюда накидать полезных комманд и отсылки на то где прочитать про это подробнее.
Где прочитать об азах git? (на руском и английском)
https://git-scm.com/book/ru/v1/Введение
Серьезно, стоит потратить несколько часов на то чтобы прочитать хотя бы 1-2 главы этой книги. И мне не придется заниматься копипастой.
Создание пустого репозитория
Этими командами создается .git папка с конфигами, затем начинаются отслеживаться все файлы (начиная от корня выполнения команды) и затем выполняется создание слепка состояния (commit) c комментарием.
Если у вас уже был свой проект - то появится первоначальный слепок вашей работы и далее все файлы будут отслеживаться.
Хорошей практикой является пользоваться следующей командой:
Которая заставляет вас вручную подтверждать каждое изменение. Удобно видеть, что вы где-то могли напортачить.
Для того чтобы выгрузить свой проект на какой либо git сервер, нужно прописать так называемый. remote. В котором ханится информация о том, по какому адресу и протоколу находится удаленный репозиторий. При этом удаленный сервер создает bare-репозиторий, т.е пустой.
где origin - название, которым вы будете различать разные удаленые сервера. Таким образом пушить можно не в один удаленный сервер:
master - главная ветка. Если origin один, и вы хотите запушить текущую ветку, то команда сокращается всего лишь до
Хорошая практика: Каждый рабочий день начинается с
Создание новой ветки:
Создать ветку и переключиться:
На какой я сейчас ветке?
Что вообще сейчас происходит?
А какие коммиты делались в последнее время?
Я внес какие-то изменения, а как бы посмотреть что я сделал?
Я ошибся с коммитом, что делать?
Любое действие можно переиграть. Если вы поняли, что забыли что-то в проекте подправить, можно поступить так:
<внесение правок, git add file\folder, или еще что-нибудь>
`git commit —amend'
Эта команда изменит последний коммит и примет в него все ваши изменения. в итоге коммит останется один и тот же. Если ничего не изменять, но ввести такую команду, то можно просто изменить комментарий к коммиту.
Если коммит уже отправили на сервер, то нужно его переиграть:
Я нахеровертил в проекте, как мне откатиться, сохранив тестовую версию?
Вообще этот случай скорее уникальный, т.к. вы обычно должны работать в соседних от master ветках, однако если уж случилось, то..
покажет вам ваше дерево коммитов - выберите тот, к которому хотите откатиться
Мы переключились на то состояние, когда все еще не было сломано, создали ветку trash, переключившись в нее (-b), добавили файлы и закоммитили.
дальше.
Я закончил разработку, как слить ветки?
Кто-то порушил мой репозиторий своими тупыми коммитами! Как мне откатиться к нормальному?
В git существует возможность взять какой-то из коммитов и применить его на репозиторий, при этом это будет новый, самый последний коммит. на который будет указывать HEAD.
Я сделал 100500 коммитов, как мне теперь их слить в один?
Выберите коммит до которого (не включая этот) вы хотите слить все остальные
откроется редактор, где в столбец будут коммиты, которые надо слить. Команду перед нужным коммитом указать - reword, а перед остальными - f. это оставит только один комментарий нужного коммита.
Абсолютно уверен, что лучше чем git book про самы азы гита я не расскажу, потому имеет смысл только лишь накидать сюда накидать полезных комманд и отсылки на то где прочитать про это подробнее.
Где прочитать об азах git? (на руском и английском)
https://git-scm.com/book/ru/v1/Введение
Серьезно, стоит потратить несколько часов на то чтобы прочитать хотя бы 1-2 главы этой книги. И мне не придется заниматься копипастой.
Создание пустого репозитория
git init
git add .
git commit m 'initial commit'
Этими командами создается .git папка с конфигами, затем начинаются отслеживаться все файлы (начиная от корня выполнения команды) и затем выполняется создание слепка состояния (commit) c комментарием.
Если у вас уже был свой проект - то появится первоначальный слепок вашей работы и далее все файлы будут отслеживаться.
Хорошей практикой является пользоваться следующей командой:
git add -p
Которая заставляет вас вручную подтверждать каждое изменение. Удобно видеть, что вы где-то могли напортачить.
Для того чтобы выгрузить свой проект на какой либо git сервер, нужно прописать так называемый. remote. В котором ханится информация о том, по какому адресу и протоколу находится удаленный репозиторий. При этом удаленный сервер создает bare-репозиторий, т.е пустой.
git remote add origin [email protected]/repo/repo.git
где origin - название, которым вы будете различать разные удаленые сервера. Таким образом пушить можно не в один удаленный сервер:
git push -u origin master
master - главная ветка. Если origin один, и вы хотите запушить текущую ветку, то команда сокращается всего лишь до
git push
.Хорошая практика: Каждый рабочий день начинается с
git pull
, чтобы скачать все удаленные изменения с удаленного репозитория локально.Создание новой ветки:
git branch new_branch
Создать ветку и переключиться:
git checkout -b new_branch
На какой я сейчас ветке?
git branch
Что вообще сейчас происходит?
git status
А какие коммиты делались в последнее время?
git log --graph --decorate --pretty=oneline --abbrev-commit
Я внес какие-то изменения, а как бы посмотреть что я сделал?
git diff
Я ошибся с коммитом, что делать?
Любое действие можно переиграть. Если вы поняли, что забыли что-то в проекте подправить, можно поступить так:
<внесение правок, git add file\folder, или еще что-нибудь>
`git commit —amend'
Эта команда изменит последний коммит и примет в него все ваши изменения. в итоге коммит останется один и тот же. Если ничего не изменять, но ввести такую команду, то можно просто изменить комментарий к коммиту.
Если коммит уже отправили на сервер, то нужно его переиграть:
git push -f
Я нахеровертил в проекте, как мне откатиться, сохранив тестовую версию?
Вообще этот случай скорее уникальный, т.к. вы обычно должны работать в соседних от master ветках, однако если уж случилось, то..
git log --graph --decorate --pretty=oneline --abbrev-commit
покажет вам ваше дерево коммитов - выберите тот, к которому хотите откатиться
git checkout <commit>
git checkout -b trash
git add .
git commit -m 'trash commit'
Мы переключились на то состояние, когда все еще не было сломано, создали ветку trash, переключившись в нее (-b), добавили файлы и закоммитили.
дальше.
Я закончил разработку, как слить ветки?
git checkout master
git merge <branch>
Кто-то порушил мой репозиторий своими тупыми коммитами! Как мне откатиться к нормальному?
В git существует возможность взять какой-то из коммитов и применить его на репозиторий, при этом это будет новый, самый последний коммит. на который будет указывать HEAD.
git cherry-pick <commit id>
git push
Я сделал 100500 коммитов, как мне теперь их слить в один?
Выберите коммит до которого (не включая этот) вы хотите слить все остальные
git rebase -i <commit id>
откроется редактор, где в столбец будут коммиты, которые надо слить. Команду перед нужным коммитом указать - reword, а перед остальными - f. это оставит только один комментарий нужного коммита.