Какая команда используется для построчного просмотра авторства изменений
Перейти к содержимому

Какая команда используется для построчного просмотра авторства изменений

  • автор:

2.3 Основы Git — Просмотр истории коммитов

После того, как вы создали несколько коммитов или же клонировали репозиторий с уже существующей историей коммитов, вероятно вам понадобится возможность посмотреть что было сделано — историю коммитов. Одним из основных и наиболее мощных инструментов для этого является команда git log .

Следующие несколько примеров используют очень простой проект «simplegit». Чтобы клонировать проект, используйте команду:

$ git clone https://github.com/schacon/simplegit-progit

Если вы запустите команду git log в каталоге клонированного проекта, вы увидите следующий вывод:

$ git log commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon Date: Mon Mar 17 21:52:11 2008 -0700 Change version number commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700 Remove unnecessary test commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon Date: Sat Mar 15 10:31:28 2008 -0700 Initial commit

По умолчанию (без аргументов) git log перечисляет коммиты, сделанные в репозитории в обратном к хронологическому порядке — последние коммиты находятся вверху. Из примера можно увидеть, что данная команда перечисляет коммиты с их SHA-1 контрольными суммами, именем и электронной почтой автора, датой создания и сообщением коммита.

Команда git log имеет очень большое количество опций для поиска коммитов по разным критериям. Рассмотрим наиболее популярные из них.

Одним из самых полезных аргументов является -p или —patch , который показывает разницу (выводит патч), внесённую в каждый коммит. Так же вы можете ограничить количество записей в выводе команды; используйте параметр -2 для вывода только двух записей:

$ git log -p -2 commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon Date: Mon Mar 17 21:52:11 2008 -0700 Change version number diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile +++ b/Rakefile @@ -5,7 +5,7 @@ require 'rake/gempackagetask' spec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = "simplegit" - s.version = "0.1.0" + s.version = "0.1.1" s.author = "Scott Chacon" s.email = "schacon@gee-mail.com" s.summary = "A simple gem for using Git in Ruby code." commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700 Remove unnecessary test diff --git a/lib/simplegit.rb b/lib/simplegit.rb index a0a60ae..47c6340 100644 --- a/lib/simplegit.rb +++ b/lib/simplegit.rb @@ -18,8 +18,3 @@ class SimpleGit end end - -if $0 == __FILE__ - git = SimpleGit.new - puts git.show -end

Эта опция отображает аналогичную информацию но содержит разницу для каждой записи. Очень удобно использовать данную опцию для код ревью или для быстрого просмотра серии внесённых изменений. Так же есть возможность использовать серию опций для обобщения. Например, если вы хотите увидеть сокращённую статистику для каждого коммита, вы можете использовать опцию —stat :

$ git log --stat commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon Date: Mon Mar 17 21:52:11 2008 -0700 Change version number Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700 Remove unnecessary test lib/simplegit.rb | 5 ----- 1 file changed, 5 deletions(-) commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon Date: Sat Mar 15 10:31:28 2008 -0700 Initial commit README | 6 ++++++ Rakefile | 23 +++++++++++++++++++++++ lib/simplegit.rb | 25 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+)

Как вы видите, опция —stat печатает под каждым из коммитов список и количество изменённых файлов, а также сколько строк в каждом из файлов было добавлено и удалено. В конце можно увидеть суммарную таблицу изменений.

Следующей действительно полезной опцией является —pretty . Эта опция меняет формат вывода. Существует несколько встроенных вариантов отображения. Опция oneline выводит каждый коммит в одну строку, что может быть очень удобным если вы просматриваете большое количество коммитов. К тому же, опции short , full и fuller делают вывод приблизительно в том же формате, но с меньшим или большим количеством информации соответственно:

$ git log --pretty=oneline ca82a6dff817ec66f44342007202690a93763949 Change version number 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Remove unnecessary test a11bef06a3f659402fe7563abf99ad00de2209e6 Initial commit

Наиболее интересной опцией является format , которая позволяет указать формат для вывода информации. Особенно это может быть полезным когда вы хотите сгенерировать вывод для автоматического анализа — так как вы указываете формат явно, он не будет изменен даже после обновления Git:

$ git log --pretty=format:"%h - %an, %ar : %s" ca82a6d - Scott Chacon, 6 years ago : Change version number 085bb3b - Scott Chacon, 6 years ago : Remove unnecessary test a11bef0 - Scott Chacon, 6 years ago : Initial commit

Полезные опции для git log —pretty=format отображает наиболее полезные опции для изменения формата.

10 Git-команд, которые стоит знать разработчику

В этой статье мы обсудим разные Git-команды, которые могут оказаться полезными для разработчика или специалиста по Big Data. Вы узнаете, как проверять, удалять и приводить код в порядок. А еще рассмотрим способы выхода из Vim и экономию времени с помощью псевдонимов Bash и конфигурации редактора Git.

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

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

  • git diff— Посмотреть все изменения файла локально. При указании имени файла изменения будут показаны только для него.
  • git log — Просмотреть историю коммита. Может также использоваться для файла с git log -p my_file. Введите q, чтобы выйти.
  • git blame my_file — Просмотреть, кто, что и когда изменил в my_file.
  • git reflog — Показать журнал изменений в заголовке локального репозитория. Отличный вариант для поиска утраченных данных.

Вернуть, как было

  • git reset, git checkout и git revert — команды, которые используются, чтобы отменить какие-либо действия. Но они не такие и простые, с ними надо уметь обращаться.
  • git reset, git checkout могут использоваться как для коммитов, так и для обычных файлов.
  • git revert используется только для работы с коммитами.

Если вы работаете в коллективе и коммиты общие, тогда ваш выбор — git revert.

У каждой команды есть целый набор опций. Вот наиболее употребляемые:
git reset —hard HEAD — отмена проиндексированных и непроиндексированных изменений с момента последнего коммита.

Указываем вместо HEAD определенный коммит, чтобы отменить изменения, произошедшие после него. —hard отбрасываются оба типа изменений, о которых говорилось выше.

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

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

checkout лучше всего использовать для локальных отмен. В этом случае коммиты из удаленной ветки, от которой зависят ваши коллеги, не будут затронуты!

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

git revert my_commit — отмена последствий изменений в my_commit. revert выполняет новый коммит после отмены изменений.

revert безопасен для общих проектов, поскольку команда не перезаписывает изменения, от которых могут зависеть другие ветки.

Иногда вы просто хотите удалить неотслеживаемые файлы в вашем локальном каталоге. К примеру, запустив какой-то код, который создал много разных типов файлов, которые вам не нужны. К сожалению. Clean поможет мгновенно удалить их!

git clean -n — удаление неотслеживаемых файлов в локальной рабочей директории.

-n — флаг для пробного запуска, ничего не удаляется.
-f — флаг для удаления файлов.
-d — флаг для удаления неотслеживаемых директорий.

По умолчанию неотслеживаемые файлы .gitignore не будут удалены, но это можно изменить.

Наводим порядки

git commit —amend — добавляем поэтапные изменения в последний коммит.

Если ничего не проиндексировано, команда позволяет вам редактировать последнее сообщение коммита. Используйте команду только в том случае, если коммит не был объединен с удаленной master-веткой.

git push my_remote —tags — отправка локальных тэгов в удаленный репозиторий. Хороший вариант для присвоения версий изменениям.

Помогите, я застрял в Vim и не могу выбраться!

Git в некоторых случаях открывает сессию редактора Vim. И если вы не слишком хорошо знакомы с ним, то можете оказаться в затруднительной ситуации. Да и не только вы — к примеру, на Stack Overflow более 4 тысяч пользователей хотят знать, как выбраться из Vim.

Вот четырехэтапный план, который поможет закрыть Vim и сохранить изменения:

  • Нажимаем i.
  • Вводим сообщение коммита в первой строке.
  • Esc.
  • Вводим :x.

Изменяем редактор по умолчанию.

Вы можете избавиться от Vim совсем, если смените редактор по умолчанию. Вот команды для работы с популярными редакторами. Пример выбора другого редактора, в нашем случае Atom:

git config —global core.editor «atom —wait»

Ярлыки для команд Git

А вот способ, который позволяет добавлять ярлыки для Git-команд, для вашего .bash_profile.

alias gs='git status ' alias ga='git add ' alias gaa='git add -A ' alias gb='git branch ' alias gc='git commit ' alias gcm='git commit -m ' alias go='git checkout '

Больше информации о .bash_profile можно получить здесь.

Что касается способа, приведенного выше, то теперь вы можете использовать gs вместо git status.

Собственно, это все на сегодня. Если есть возможность, укажите в комментариях, какие Git-команды используете вы и почему.

  • Двухлетний практический курс «Я — веб-разработчик PRO».
  • Онлайн-курс «С#-разработчик с 0».
  • Практический годовой курс «PHP-разработчик с 0 до PRO».

23 команды Git, которые должен знать каждый разработчик

Перед вами небольшая статья-шпаргалка, которая включает в себя команды удобные, но не всем знакомые команды Git, которые могут стать вашими постоянными спутниками в разработке.

Вести разработку, кстати, удобно в нашем кластере Kubernetes.

1. git init

Эта команда используется для инициализации проекта как репозитория git.

2. git clone

Эта команда клонирует репозиторий в новую директорию.

git config — это удобная функция, которая используется для настройки значений конфигурации Git на глобальном и локальном уровнях проекта. Примеры команд:

git config —local user.name «Name»

git config —global user.name «Name»

Если надо скопировать только файлы:

git clone —depth=1 git://someserver/somerepo dirformynewrepo

3. git remote add

Эта команда используется для добавления или подключения к удаленному репозиторию.

4. git remote -v

Эта команда используется для просмотра подключенных удаленных репозиториев.

5. git status

Эта команда используется для просмотра статуса файлов в вашем локальном репозитории. Отслеживаются ли файлы? Не отслеживается? Изменены ли они?

Пример: git add index.html

git add index.html style.css style.scss

Эта команда переносит все новые и измененные файлы в раздел проиндексированных файлов

Эта команда используется для индексирования ВСЕХ неустановленных файлов.

для конкретного файла

7. git reset

Эта команда используется для мягкой или жёсткой отмены изменений, позволяет сбросить состояние проекта до нужного коммита. Например.

отмена неотправленного коммита: git reset —hard HEAD^

отмена отправленного коммита ( возврат к состояние коммита 7880ae2 )

git reset —hard f7880ae2

git push origin -f

8. git commit

Эта команда совершает коммит — «закрепляет» промежуточные результаты.

git commit -m “Text message”

Пример: git commit -m «added navigation bar»

Команда -m позволяет указать commit message без обращения к редактору

git commit —amend

Команда —amend вносит в предыдущий коммит изменения, которые подготовлены к коммиту. Используется и для редактирования предыдущего commit message, если в нём допущены ошибки.

9. git push -u origin

Ключ -u (полный вариант —set-upstream ) создаёт в удалённом репозитории ветку, соответствующую локальной и связывает их.

Пример: git push -u origin master

Эта команда используется для отправки закоммиченных файлов в удаленный репозиторий (также известный как GitHub) в указанной ветке. Используйте эту команду, когда вы впервые отправляете файлы в удаленный репозиторий. Он зафиксирует место, куда вы отправляете эти файлы. И в следующий раз можно будет использовать команду git push.

10. git fetch

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

Бесплатный тестовый доступ к облаку на 30 днейПолучить

11. git pull

Эта команда используется для извлечения только что полученной информации и ее загрузки в локальный репозиторий. git pull запускает немедленное обновление локального репозитория.

12. git branch Эта команда используется для создания, просмотра переименования и удаления ветки, на которой вы сейчас находитесь.

Эта команда используется для предварительного просмотра всех веток в удаленном репозитории.

Эта команда используется для предварительного просмотра всех веток на сервере.

13. git checkout

Пример: git checkout master или git checkout develop

Эта команда используется для переключения на ветки, которые вы уже посещали ранее.

git checkout — ещё один вариант использования

14. git merge

Эта команда используется для объединения двух веток. Для этого укажите ветку, которую вы хотите унаследовать изменения. И имя ветки, которое вы будете использовать вместе с этой командой, — это ветка, которая предоставит изменения.

Пример: git merge develop

Здесь основная ветка наследует код из ветки разработки.

15. git merge — abort

Эта команда используется для отмены слияния.

Если нет ошибок, слияния будут успешными. Следовательно, это прерывание можно использовать только в ситуациях, когда слияние не удалось. Как понять, что нужно использовать эту команду? Ваш терминал скажет, что слияние не удалось. Он также может предложить вам исправить конфликты слияния.

Вот ещё один признак: ~/NextCloud/Documents/Web Projects/Cloud4Y (master)

Посмотрите в самый конец строки. В скобках написано (master). Это потому, что мы находимся в основной ветке. Если вы находитесь в ветке разработки, это будет означать (develop). Если смерджить не получилось, появится надпись (master|merging) или что-то в этом роде.

git merge -X theirs

Пример: git merge -X theirs develop

Эта команда используется для объединения двух веток. И если есть конфликты слияния, эта команда просто предположит, что вы предпочитаете изменения, сделанные в указанной ветке (а не в текущей).

16. git reset — hard HEAD

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

17. git reset HEAD^

Эта команда перемещает текущую ветку назад на два коммита, эффективно удаляя два снапшота, которые мы только что создали, из истории проекта. Он отменяет случайное закоммичивание и сохраняет изменения.

18. git clean -f

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

Эта команда используется для удаления неотслеживаемых директорий в вашем локальном репозитории. Вы также можете объединить его с git clean -fd, чтобы сделать и то, и другое.

19. git rm -r — cached

Пример: git rm -r —cached config.js

Эта команда используется для удаления файла из удаленного репозитория (GitHub), не удаляя его в локальном репозитории.

20. git bisect

Эта команда используется для обнаружения коммита, вызвавшего ошибку в коде. Так проще отследить коммит, где код работает и выявить проблемный коммит.

21. git diff

git diff — частое использование

Эта команда используется сравнения изменений.

22. git rebase

Полезно, если вы работали с веткой, но затем вам нужно объединить изменения, сделанные в этой ветке, с другой. С помощью git rebase вы можете «переместить» свою ветку поверх последней версии. Это также полезно, если команда следует общепринятым соглашениям о коммитах, таким как объединение коммитов вместе или разделение «больших» коммитов на «меньшие». Это используется в основном для «реорганизации» ваших коммитов.

git rebase -i HEAD~N

Склеить коммиты, переписав историю с момента HEAD~N, т.е. с того, что было N коммитов назад. -i — означает в интерактивном режиме.

23. git stash

Эта команда используется для сохранения неподтверждённых изменений в отдельном хранилище, чтобы можно было вернуться к ним позже. Сами файлы возвращаются к исходному состоянию. Команда полезна, когда вы работаете над одной веткой, хотите переключиться на другую, но вы ещё не готовы сделать коммит в текущей ветке. Таким образом, вы прячете изменения в коде, переключаетесь на другую ветку, возвращаетесь к исходной ветке, а затем разархивируете свои изменения.

git stash pop позволяет применить ранее отложенные изменения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *