Tag Archives: git
Git reset
Все виды команды git reset. Удалить всё лишнее, включая незакоммиченные изменения
1 2 |
# Clear working directory tree from all changes $ git checkout -f HEAD |
Откатить последний коммит и вернуть файлы в незакоммченное состояние (т.е. изменения станут незакоммиченными, но готовыми для коммита)
1 2 |
# Reset the latest commit, and leave the changes in the index $ git reset --soft HEAD^ |
Откатить последний коммит и убрать файлы из гита (т.е. нужно будет сначала сделать git add .)
1 2 |
# Reset the latest commit, and leave the changes in the working directory $ git reset HEAD^ |
…
Git: Перелить локальный репозиторий в новый удалённый (remote)
1 |
git remote set-url origin git://new.url.here |
http://stackoverflow.com/questions/2432764/change-the-uri-url-for-a-remote-git-repository
1 2 3 |
git remote remove origin git remote add origin <repo_url> git push origin --all // git push --follow-tags |
http://stackoverflow.com/questions/6865302/push-local-git-repo-to-new-remote-including-all-branches-and-tags
Git — сравнение одного файла в двух ветках
1 |
git diff --no-color --binary origin/master -- .templates/ru/default/contacts-v2/messenger_message_form_options.tpl |
tig для просмотра git-логов в командной строке
Установка
1 |
brew install tig |
Запускаем команду tig в директории с git-репозиторием. Ждём немного — и вот у нас уже дерево коммитов с ветками. Перемещаемся стрелками ↓↑, затем нажимаем d и смотрим diff, после чего нажимаем q для возврата в главное меню. http://jonas.nitro.dk/tig/screenshots/ http://habrahabr.ru/post/206606/
Git: посмотреть последние merge веток
1 |
git log -n50 | grep Merge |
Git: вывести все файлы с конфликтами
1 |
git ls-files -u |
Git: выделить директорию в отдельный репозиторий
Вот эта команда
1 |
git filter-branch --subdirectory-filter MyLibraryName -- --all |
Ссылки: http://git-scm.com/docs/git-filter-branch https://confluence.atlassian.com/display/BITBUCKET/Split+a+Repository+in+Two#SplitaRepositoryinTwo-UsingGittosplit-outadirectory
Git: автоматически разрулить конфликты в пользу «theirs» для всех файлов
Мне нужно было все конфликты в файлах по определенной маске разрешить в пользу того, что пришло с сервера. Файлов таких, по некоторым причинам, было более 5000, и не все удовлетворяли маске (реально нужно было посмотреть вручную около 20 файлов). Поэтому решил разрулить конфликты в ненужных файлах автоматически. Сначала сохраним пути ко всем файлам, удовлетворяющим маске, …
Git: patch из одного репозитория в другой
В старом репозитории сохраняем diff:
1 |
git diff --no-color --binary origin/master > ~/my_diff |
В новом репозитории
1 2 3 4 |
git checkout <ветка> # если нужно вставить не в корень cd <путь до нового корня> patch -p1 < ~/my_diff |
Наиболее полный способ. Две ветки из ориджина, применяем в текущую ветку. Идеально, когда хотим создать дифф между двумя подветками и применить к мастеру. При этом ещё и выкинуть некоторые пути, которые в патче не нужны.
1 2 3 4 |
git diff --no-color --binary origin/no-ticket-bootstrap-reorder..origin/POR-574 ':(exclude)docs/reorder/dev-local/*' ':(exclude)build-tools/dev-reorder/*' ':(exclude)README.md' ':(exclude).codacy.yml' > ~/.por-574-bootstrap-3.diff git apply --stat ~/.por-574-bootstrap-3.diff git apply --check ~/.por-574-bootstrap-3.diff git apply ~/.por-574-bootstrap-3.diff |
https://stackoverflow.com/a/39943727/801426 https://stackoverflow.com/a/2250170/801426
Git: diff с другой веткой
Сначала переключаемся в нужную ветку, потом
1 |
git diff --binary --name-only origin/master |
Это покажет только файлы. Если нужно посмотреть еще и сами изменения, нужно убрать —name-only