15 команд Git, о которых вы, возможно, не знали

0
2858
views

Перевод статьи «15 Git Commands You May Not Know».

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

Использование Git порой может казаться пугающим. Нужно изучить столько команд и деталей. Но документация Git, несмотря на свои объемы, очень доступна. Когда вы преодолеете первоначальный страх, все начнет становиться на свои места.

Я хочу познакомить вас со списком из 15 команд Git, о которых вы, возможно, еще не знаете, но я надеюсь, что они вам пригодятся при освоении этого прекрасного инструмента.

1. Изменение последнего коммита

git commit --amend

—amend позволяет добавлять подготовленные (staged) изменения к предыдущему коммиту (например, добавлять забытый файл). Если изменений нет, то —amend даст вам возможность переписать сообщение этого коммита (commit message). А если приписать —no-edit, то наоборот: можно будет внести изменения в сам коммит, не затрагивая commit message.

Узнать больше: git help commit

2. Интерактивное добавление отдельных частей файлов

git add -p

-p (или —patch) позволяет интерактивно выбирать для добавления в коммит части отслеживаемый файлов. Таким образом коммит будет содержать только нужные изменения.

Узнать больше: git help add

3. Интерактивное скрытие отдельных частей файлов

git stash -p

Опцию —patch можно добавлять не только к git-add. Добавленная к git stash, она позволяет интерактивно выбирать части отслеживаемых файлов, которые вы хотели бы скрыть.

Узнать больше: git help stash

4. Скрытие файлов, включая неотслеживаемые

По умолчанию при скрытии файлов неотслеживаемые файлы не учитываются. Чтобы изменить это поведение и включить в stash также и эти файлы, нужно использовать параметр -u. Есть также параметр -a (—all), который позволяет скрывать как неотслеживаемые, так и игнорируемые файлы, но это, вероятно, не то, что вам обычно нужно.

5. Интерактивный «сброс» выбранных частей файлов

git checkout -p

—patch можно также использовать для выборочного сброса частей отслеживаемых файлов. Я задал этой команде псевдоним git discard.

Узнать больше: git help checkout

6. Переключение в предыдущую ветку

git checkout -

Эта команда позволяет вам быстро переключиться на ранее просматриваемую ветку. Знак дефиса это псевдоним предыдущей ветки. Его можно использовать и с другими командами.

Перемещение по веткам

7. Сброс всех локальных изменений

git checkout .

Если вы уверены, что все ваши локальные изменения можно сбросить, то для одновременного сброса вы можете использовать символ точки. Тем не менее, хорошей практикой будет всегда использовать checkout —patch.

8. Показать изменения

git diff --staged

Эта команда показывает все подготовленные изменения (проиндексированные). Если вы введете просто git diff, будут показаны изменения только в рабочей директории.

Узнать больше: git help diff

9. Локальное переименование веток

git branch -m old-name new-name

Если вы хотите переименовать ветку, в которой находитесь на данный момент, можно сократить команду:

git branch -m new-name

Узнать больше: git help branch

10. Переименование веток удаленно

Чтобы переименовать ветку в удаленном репозитории после того как вы переименовали ее локально, вам нужно сначала удалить эту ветку в удаленном репозитории, а затем снова залить переименованную ветку.

git push origin :old-name
git push origin new-name

11. Открыть все файлы с конфликтами одновременно

Перемещение (rebasing) может приводить к конфликтам. Следующая команда откроет все файлы, где нужно разрешить эти конфликты.

git diff --name-only --diff-filter=U | uniq  | xargs $EDITOR

12. Что изменилось?

git whatchanged --since=‘2 weeks ago’

Эта команда покажет лог изменений, представленных по каждому коммиту за последние две недели.

13. Удаление файла из последнего коммита

Скажем, вы сделали коммит файла по ошибке. Этот файл можно быстро удалить из последнего коммита путем комбинации команд rm и commit —amend:

git rm --cached <file-to-remove>
git commit --amend

14. Поиск веток

git branch --contains <commit>

Эта команда покажет все ветки, содержащие указанный коммит.

15. Локальная оптимизация репозитория

git gc --prune=now --aggressive

Узнать больше: git help gc

Бонус

Хотя мне очень нравится CLI, я настоятельно рекомендую обратить внимание на Magit, чтобы еще больше улучшить вашу работу с Git. Это одна из лучших программ, которые я использовал.

Кроме того, с помощью команды help можно получить совершенно фантастический обзор рекомендуемых рабочих процессов Git. Почитайте внимательно!

git help workflows

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here