Шпаргалка по коммандам GIT

 

 

Игнорируем изменения прав файлов (chmod)

git config core.fileMode false

Используем флаг --global чтобы настройка применялась для всех репозиториев(использует ~/.gitconfig вместо .git/config)

git config --global core.fileMode false

error: The following untracked working tree files would be overwritten by merge

git fetch --all
git reset --hard origin/master

Локальный git ignore

.gitignore для всех проектов:

git config --global core.excludesfile ~/.gitexcludes
nano ~/.gitexcludes

.gitignore для конкретного проекта:

nano .git/info/exclude

 

Удаляем тег на удаленном репозитории

Удаляем тег с remote:

git push --delete origin tagname

Удаляем тег локально:

git tag --delete tagname

Слияние ветки в master

git checkout master
git merge some-branch
git push

Прячем правки (сохраняем на потом)

git stash
git stash list
git checkout -b some-branch
git stash pop (git stash apply stash@{0})

Откатываем последний комит в remote

Ситуация

git add .
git commit -m "comment"
git push origin master


А надо было выполнить:

git push origin some-branch

Решение

Пушим изменения в правильную ветку:

git push origin some-branch


Потом на мастере получим изменения из удалённой репы:

git checkout master
git fetch --all
git rebase origin/master


Сбрасываем изменения на один шаг назад, и принудительно пушим в мастер:

git reset --hard HEAD~1
git push origin master -f 

Смотрим изменения перед пушем

Только файлы:

git diff --stat --cached origin/master
 composer.lock | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

Содержимое:

git diff --cached origin/master

Создание и применение патча

Создание патча

git diff --no-prefix > some-fix.patch

Применение патча:

git apply some-fix.patch

Тоже самое без git:

Создание патча

diff -Naru test.old.txt test.txt > some-fix.patch


Применение патча

patch -p0 < some-fix.patch

 

Теги: hint, git

Комментарии (0)