2.13.2017

Повседневная работа с Git

Всем привет. Хочу оставить памятку себе, а так же поделиться с другими самыми нужными git командами для повседневного использования.

Еще оставлю ссылку на курс по git https://githowto.com/ru

1. Получить все изменения с удаленного репозитория для ветки master. Master указывается для того, чтобы git знал с какой ветки производить обновление.
git pull sdk master

2. Добавить удаленный репозиторий под именем (сохраниь url в имя)
git remote add repName url

3. Изменить ссылку сохраненную по имени
git remote rm origin
git remote add origin NEW_URL

Или
git remote set-url origin NEW_URL

4. Посмотреть доступные имена
git remote

5. Посмотреть доступные имена и ссылки к ним привязанные
git remote -v

6. Создать новую ветку и переключиться на нее:
git checkout -b branchName

7. Удалить ветку в локальной рабочей копии:
git branch -d branch-name

8. Удалить ветку в удаленном репозитории:
git push origin --delete branch-name

9. Отменить только что сделанный merge:
git reset --hard HEAD~

10. Отменить изменения в файле до add и commit
git checkout fileName

11. Добавить к последнему коммиту новые изменения.
git commit -a --amend

12. Отменить последний коммит (но не изменения, которые вы внесли, они сохранятся)
git reset --soft HEAD^
13. Удалить последний коммит
git reset --hard HEAD^

14. Удалить последний опубликованный комминт через заменяющий коммит
git revert commit-sha1

15. Я хочу посмотреть чем отличаются две эти ветки
https://www.prolinux.org/post/korotkii-spravochnik-po-git-komandam/
http://ru.stackoverflow.com/questions/554061/%D0%9A%D0%B0%D0%BA-%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D1%82%D1%8C-%D0%B4%D0%B2%D0%B5-%D0%B2%D0%B5%D1%82%D0%BA%D0%B8-git
git diff ветка1 ветка2

16. полезно бывает для начала посмотреть не сами отличия, а список отличающихся файлов:
git diff --name-only ветка1 ветка2

17. и тот же список со статусом каждого файла (добавлен/удалён/модифицирован):
git diff --name-status ветка1 ветка2
h7g1268fpaugFfqq

-----------------------------------------------------------------------------------------------------------------------------------------------------
Тут расказывается о двух режимах работы:
когда git config --global push.default matching то пушатся все ветки и если есть нестыковки на каких то то не запушится
когда git config --global push.default simple то пушится только текущая ветка

git push can push all branches or a single one dependent on this configuration:

Push all branches

git config --global push.default matching

It will push all the branches to the remote branch and would merge them. If you don't want to push all branches, you can push the current branch only.

Push only the current branch

git config --global push.default simple

So, it's better, in my opinion, to use this option and push your code branch by branch. It's better to push branches manually and individually.
-------------------------------------------------------------------------------

Просмотр изменений на удаленном репозитории

http://ru.stackoverflow.com/questions/524856/%D0%9F%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9-%D0%BD%D0%B0-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B8

-------------------------------------------------------------------------------

This pull request has conflicts. You must resolve the conflicts before you can merge:

Step 1: Fetch the changes (saving the source branch as FETCH_HEAD).

git fetch origin textarea-refactoring

Step 2: Checkout the target branch and merge in the changes from the source branch. Resolve conflicts.

git checkout master
git merge FETCH_HEAD

Step 3: After the merge conflicts are resolved, stage the changes accordingly, commit the changes and push.

git commit
git push origin HEAD

Step 4: The pull request will be updated and marked as merged.

------------------------------------------------------------------------------