Git базовые операции

Здесь опишу базовые операции работы с гитом.
Для удобства создадим репозиторий на гитхабе.

 git init
 git status

git remote add origin https://github.com/vaajnur/phpjsru
// bitbucket
git remote add origin https://vaajnur@bitbucket.org/vaajnur/phpjsru.git

файл .git/config будет такой

[remote "origin"]
	url = https://vaajnur@bitbucket.org/vaajnur/phpjsru.git
	fetch = +refs/heads/*:refs/remotes/origin/*

git status показал красным неотслеживаемые файлы. Добавим их в индекс.


// все сразу
git add .
// или отд. взятый файл
git add /path/to/file

Также можно посмотреть изменения для файла


git diff app/views/index.php

Итак файлы добавлены, осталось все это закомитить.


// откроется редактор для сообщения комита
git commit
// без редактора
git commit -m "message"
git commit -m "autoupdate `date`"

git push origin master

origin это удаленная ветка, master — это локальная. Других веток у вас пока нет.
Откатиться к некоторому комиту


git reset --hard f5d22d39

откат к удаленной ветке

git reset —hard origin/master

Создание веток.

Переключиться на ветку


git checkout branchname

Эта же команда кстати восстановит удаленые файлы


// восстановит все
git checkout .
// восстановит отд. взятый
git checkout /path/to/file

Итак, мы переключились на нужную ветку. Отпочковаться можно командой branch или checkout -b


// автоматом переключит на новую ветку
git checkout -b name_of_my_new_branch
// или последовательно
git branch name_of_my_new_branch
git checkout name_of_my_new_branch

Вывести список всех локальных веток можно


git branch

Звездочкой укажет на ту ветку, где вы сейчас. HEAD сейчас на этой ветке.
Список всех удаленных веток


git branch -r

Пуш для новой ветки будет уже таким


git push origin new_branch

разрешение конфликтов.

Чтобы получить все удаленные ветки, надо их извлечь.


git fetch

Теперь если посмотреть список всех удаленных веток, появятся новые


git branch -r

Переключимся на одну из них, поработаем на ней и комитним изменения.
Пуш сделать получиться не всегда, если вы меняли файл одновременно с кем то другим. Гит предупредит вас


подсказка:  Заберите и слейте внешние изменения 
подсказка: (например, с помощью «git pull …») перед повторной попыткой отправки
подсказка: изменений.

Надо сделать pull (вообще делать пул это хорошая манера)


git pull origin name_of_current_branch

Если появились конфликты, разрешаем их. Выглядят они так


<<<<<<< HEAD и здесь код ======= какой то код >>>>>>> cb32e6c8741018bb00afece62c8e205bc0d53581

Есть много утилит для этого, а также можно мануально. Я предпочитаю phpstorm — Git — Resolve conflicts. Думаю самый удобный.
После разрешения конфликта надо заново сделать комит. Теперь пул должен выдать Already up-to-date. Если нет — значит кто то шустрый успел наделать еще конфликта))
Делаем пуш.


git push origin current_branch

СЛИЯНИЕ ВЕТОК

Допустим вы создавали ветки на каждую задачу. А ветка релиза, или develop версии как хотитие — одна, и она должна собирать в себе все это. Надо сливать ветки. Делаем merge.


// переключаемся на базовую ветку
git checkout master
// сливаем нужную
git merge some_branch
// заливаем слитие
git push origin master

Готово, ветка слита, на мастере появились правки с нужной ветки. Она теперь особо не нужна, можно удалить.


git branch -d some_branch
git push --delete origin some_branch
// проверяем
git branch -r

В списке этой ветки уже не будет.

Полезные команды


// посмотреть комиты
git log
// откатиться к комиту
git reset --hard 2c7051ae

Прятанье

// осторожно, откатывает все изменения!
git stash
git stash list
git stash apply stash@{2}

Сохранить логин и пароль для пушей

git config --global user.name vaajnur
git config --global user.password pass123

в конфиге .git/config

[user]
	name = vaajnur
	email = vaajnur@yandex.ru

Leave a comment

Your email address will not be published.


*