Для получения полного доступа
зарегистрируйтесь.

Раздел:
Подраздел:
Языки:


Stephen Berezuev
  • Репутация: 5
  • Сниппеты: 3
  • Ревизии: 1

Установка:

Создаем файл ~/.git-templates/hooks/pre-commit со следующим кодом:

#!/usr/bin/env bash

# Check if you have 'WIP' markers in code before commit to prevent debug code and info on remote git.
if grep -i -n 'wip' `git diff HEAD --cached --name-only`; then
    read -p "You're about to add a WIP commit, do you want to run the CI? [y|n] " -n 1 -r < /dev/tty
    echo
    if echo $REPLY | grep -E '^[Nn]$' > /dev/null; then
        echo "[skip ci]" >> $1
    fi
fi

В консоли выполняем:

git config --global init.templatedir '~/.git-templates';
chmod a+x ~/.git-templates/hooks/*

Затем, в директориях уже скачанных репозиториев выполняем: git init

Et voila! Tеперь, когда будете добавлять какую-то временную заглушку или дебаг в код, указывайте в комментарии @wip и при попытке закоммитить такой код гит выдаст предупреждение.

Gravatar image
Hector68
  • Репутация: 2
  • Сниппеты: 1
  • Ревизии: 0

Актуально, в частности для работы над Magento

 git log
 ....
 git archive -o ../latest.zip some-commit $(git diff --name-only earlier-commit some-commit)
dignityinside
  • Репутация: 26
  • Сниппеты: 21
  • Ревизии: 1

Проверяем установленую версию:

git --version
git version 1.7.12.4 (Apple Git-37)

Устанавливаем git с помощью brew:

brew install git

Добавляем в ~/.bash_profile новую строчку:

export PATH="/usr/local/bin:$PATH"

Применяем изменения:

source .bash_profile

Проверяем версию:

git --version
git version 2.11.1
samdark
  • Репутация: 349
  • Сниппеты: 57
  • Ревизии: 5

Иногда случается сдедать описку в названии тега и пушнуть его. Не беда, всё поправимо:

git tag new old
git tag -d old
git push origin :refs/tags/old
git push --tags
dfatt
  • Репутация: 260
  • Сниппеты: 53
  • Ревизии: 7

Иногда бывает так, что по ошибке вы можете сделать коммит с незаконченным кодом, или файл с настройками для реального сервера был по ошибке добавлен.

Для того чтобы отменить коммит, достаточно в консоли ввести команду:

git reset --soft HEAD~

0X0pVCN.png

Gravatar image
tetraset
  • Репутация: 6
  • Сниппеты: 3
  • Ревизии: 0

После добавления readme.txt в .gitignore (до этого readme.txt был в ранних коммитах): git rm --cached readme.txt

Just a cat
  • Репутация: 62
  • Сниппеты: 15
  • Ревизии: 0
git log --diff-filter=D --summary [--author=""] [--before=""] [--after=""] > deleted_files.txt
Gravatar image
nsept
  • Репутация: 6
  • Сниппеты: 1
  • Ревизии: 0

Так я решил проблему с "раздвоением личности" в своем проекте. Если вдруг нужно заменить автора полностью, то достаточно добавить GIT_COMMITTER_EMAIL="new email" и GIT_AUTHOR_EMAIL="new email". Перед использованием, убедитесь, что все изменения вытянуты и закомичены. git shortlog -se — выводит список авторов.

git filter-branch --force --env-filter '
  if ["$GIT_COMMITTER_NAME" = "nsept"];
  then
    GIT_COMMITTER_NAME="Nsept";
    GIT_AUTHOR_NAME="Nsept";
  fi' -- --all

git push --force
samdark
  • Репутация: 349
  • Сниппеты: 57
  • Ревизии: 5
git reset --soft HEAD~3
git commit -m 'new commit message'

3 заменить на N.

Работает и на уже push-нутых ветках, если потом делать git push --force. Последняя команда заменят ветку целиком, так что с ней надо быть особо осторожным.