#git
Можно ли с локального рабочего места посмотреть:
Были ли изменения в удаленном репозитории
Какие это были изменения
Чтобы принять решение - вливать-не вливать и что вливать?
нашел решение для просмотра изменений diff после fetch
git diff HEAD...origin/master
git diff HEAD...origin/branch1
насколько оно правомочно?
вывод вполне наглядный
Ответы
Ответ 1
команда pull программы git на самом деле является последовательностью двух команд: fetch и merge. fetch — получает обновившиеся указатели (т.е., ветки — branch, и метки — tag) и скачивает все необходимые для их (указателей) использования объекты (т.е., коммиты — commit, деревья — tree и «блобы» — blob, binary large object). merge указатель — пытается осуществить «вливание» коммита (и всех промежутоных коммитов), на который ссылается указатель, в вашу текущую ветку (ветка в git — это плавающий указатель на коммит). выполнив не pull, а только первую часть — fetch: $ git fetch вы получите возможность просмотреть, какие коммиты сейчас отделяют ваш локальный указатель (например, ветку master) от другого указателя, полученного из удалённого репозитория (если репозиторий подключен всего один, то называется по умолчанию — origin), например, одноимённой ветки master, которую можно обозначить как origin/master: $ git log master..origin/master две точки здесь — это часть синтаксиса. какие именно произошли изменения и в каких файлах, можно увидеть, добавив команде log опцию -p: $ git log -p master..origin/master а можно посмотреть и полный список отличий в файлах между двумя указателями: $ git diff master..origin/master нашел решение для просмотра изменений diff после fetch git diff HEAD...origin/master насколько оно правомочно? вполне правомочно. и полностью соответствует выводу git diff master..origin/master, если master — ваша текущая ветка. уточнить вы можете с помощью команды git status, или более «низкоуровнево», заглянув в содержимое файла .git/HEAD. пример: $ cat .git/HEAD ref: refs/heads/master здесь указатель HEAD ссылается именно на локальную ветку master.Ответ 2
Если всё правильно понял, Вам нужна команда git log. Если не вводить никаких дополнительных параметров, выведутся хэш коммита, его автор, дата и описание: $ git log commit fa3c1411aa09441695a9e645d4371e8d749da1dc Author: Alexander ShvetsDate: Wed Mar 9 10:27:54 2011 -0500 Added HTML header commit 8c3228730ed03116815a5cc682e8105e7d981928 Author: Alexander Shvets Date: Wed Mar 9 10:27:54 2011 -0500 Added standard HTML page tags commit 43628f779cb333dd30d78186499f93638107f70b Author: Alexander Shvets Date: Wed Mar 9 10:27:54 2011 -0500 Added h1 tag commit 911e8c91caeab8d30ad16d56746cbd6eef72dc4c Author: Alexander Shvets Date: Wed Mar 9 10:27:54 2011 -0500 First Commit О команде и параметрах расписано здесь. Если под «какие это были изменения» понимается содержание изменений, для просмотра диффов необходим параметр -p. Также можно указать количество последних коммитов, чьё содержание нам необходимо просмотреть. В примере ниже помимо дефолтных параметров команды git log, выведутся разница изменений — -p — двух последних коммитов — -2. $ git log -p -2 commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon Date: Mon Mar 17 21:52:11 2008 -0700 changed the version number diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile +++ b/Rakefile @@ -5,5 +5,5 @@ require 'rake/gempackagetask' spec = Gem::Specification.new do |s| s.name = "simplegit" - s.version = "0.1.0" + s.version = "0.1.1" s.author = "Scott Chacon" s.email = "schacon@gee-mail.com commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700 removed unnecessary test code 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 \ No newline at end of file Подробно о дополнительных опциях тут.
Комментариев нет:
Отправить комментарий