10 полезных Git команд, которые облегчат работу
Ведущие разработчики поделились топом Git команд, которые незаменимы в работе с самой популярной системой контроля версий.
За последние несколько лет популярность git возросла, что позволило этой системе стать наиболее распространенной. Она используется разными программистами и командами разработчиков, начиная небольшими опен-сорс проектами и заканчивая linux kernel. Существует большое количество Git команд, которые важно знать.
Давайте же разберем топ Git команд.
git log ‐‐no-merges
Эта команда показывает всю историю коммитов, но пропускает те, в которых произошли слияния двух веток, или где был решен конфликт фиксации. Она позволяет быстро просмотреть все изменения, сделанные в проекте без скопления слияний в истории git.
$git log --no-merges commit e75fe8bf2c5c46dbd9e1bc20d2f8b2ede81f2d93 Author: John Date: Mon Jul 10 18:04:50 2017 +0300 Add new branch. commit 080dfd342ab0dbdf69858e3b01e18584d4eade34 Author: John Date: Mon Jul 11 15:40:56 2017 +0300 Added index.php. commit 2965803c0deeac1f2427ec2f5394493ed4211655 Author: John Date: Mon Jul 13 12:14:50 2017 +0300 Added css files.
git revert ‐‐no-commit [commit]
Git revert создает новый коммит с содержимым, полученным из всех существующих коммитов, которые были им отменены. Если вы хотите обратить названный комит и избежать автоматических, можете использовать ‐‐no-commit или сокращение -n.
git diff -w
Git diff
показывает изменения между двумя коммитами, рабочими деревьями или файлами на диске. Когда несколько человек работает над одним и тем же проектом, часто происходят изменения из-за tab текстового редактора. Чтобы игнорировать различия, вызванные пробелами при сравнении строк, можно использовать команду с -w.
git diff ‐‐stat
Показывает, как каждый файл был изменен за определенное время. Вы можете добавить 3 параметра: width для определения ширины вывода по умолчанию, name-width для установки ширины имени файла и count для ограничения вывода на первое число строк.
$ git diff --stat index.php | 83 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 40 deletions(-)
$ git diff --stat-width=10 index.php | 83 +++--- 1 file changed, 43 insertions(+), 40 deletions(-)
git reset ‐‐soft HEAD^
Сбросьте head до определенного коммита, не касаясь индексного файла и рабочего дерева. Все изменения, сделанные после этой фиксации, переносятся на этап “поставлены для коммита”. Далее вам просто нужно запустить git commit, чтобы добавить их обратно.
git stash branch [branch-name] [stash]
Эта команда создает новую ветку с именем branch-name и проверяет ее, а затем применяет к ней изменения от заданного stash и сбрасывает его. Если ни один stash не указан, используется последний. Это позволяет применять любые спрятанные изменения в более безопасной среде, которая впоследствии может быть объединена с мастером.
git branch -a
Команда показывает список всех удаленных и локальных ветвей. Вы можете использовать флаг ‐‐merged, чтобы видеть только те ветки, которые полностью объединены с главной. Таким образом, вы можете отслеживать свои ветки и узнавать, какие из них больше не используются, и могут быть удалены.
$ git branch -a dev * master remotes/origin/HEAD -> origin/master remotes/origin/dev
git commit ‐‐amend
С помощью git commit ‐‐amend вы можете изменить свой предыдущий коммит, вместо того чтобы создавать новый. Если вы не внесли свои изменения в удаленную ветку, можете использовать эту команду для внесения изменений в последний коммит, добавления последних изменений и даже изменения сообщения о коммите.
git pull ‐‐rebase
Git pull ‐‐rebase заставляет git сначала вытащить изменения, а затем переустановить разблокированные коммиты поверх последней версии удаленной ветки. Параметр ‐‐rebase может использоваться для создания линейной истории, избегая ненужных фиксаций.
git add -p
Когда вы используете эту команду вместо немедленного добавления всех совершенных изменений, система спрашивает, что сделать с каждым из них. Таким образом, вы сможете сами выбрать, что именно хотите закоммитить.
diff --git a/package.json b/package.json index db78332..a814f7e 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ }, "devDependencies": { "bootstrap-sass": "^3.3.7", - "gulp": "^3.9.1", "jquery": "^3.1.0", "laravel-elixir": "^6.0.0-11", "laravel-elixir-vue-2": "^0.2.0", Stage this hunk [y,n,q,a,d,/,e,?]?