Как я могу передать файл, скажем pom.xml
, из основной ветки в произвольную более старую версию в Git?
324
Ты можешь сделать:
git diff master~20:pom.xml pom.xml
... чтобы сравнить ваш текущий pom.xml
с тем из master
20 ревизий назад через первого родителя. master~20
Конечно, вы можете заменить его именем объекта (SHA1sum) коммита или любым другим способом указания ревизии .
Обратите внимание, что это на самом деле сравнение старого pom.xml
с версией в вашем рабочем дереве, а не с версией, зафиксированной в master
. Если вы хотите этого, тогда вы можете сделать следующее:
git diff master~20:pom.xml master:pom.xml
git diff <revision>:foo/ HEAD:foo/
.Например:
источник
git diff <revision> root/path/file
.Если вы хотите увидеть разницу между последним коммитом одного файла, вы можете сделать:
Это даст вам разницу в файле в git, не сравнивая ваш локальный файл.
источник
-1
шаг за шагом, пока не получите изменения.gitlog () { git log -${3:-p} -${2:-1} $1; }
используется как:gitlog Rakefile
илиgitlog Rakefile 5
иgitlog Rakefile 10 s
. Первый показывает один diff; второй показывает пять различий; третий показывает десять--no-patch
.Чтобы увидеть, что было изменено в файле при последнем коммите:
Вы можете изменить число (~ 1) на n-й коммит, с которым вы хотите получить разницу.
источник
HEAD~1
его подставляют<revision>
, что делает этот ответ дубликатом.Общий синтаксис:
для всех файлов с именем «FileName.xml» в любом месте вашего репо.
Обратите внимание на пробел между "-" и "**"
Ответьте на свой вопрос:
как всегда с git, вы можете использовать тэг / sha1 / "HEAD ^", чтобы идентифицировать коммит.
Протестировано с git 1.9.1 на Ubuntu.
источник
Если ни один из коммитов не является вашим HEAD, то расширение скобок bash оказывается действительно полезным, особенно если ваши имена файлов длинные, пример выше:
Станет
Подробнее о расширении Brace с помощью bash.
источник
Для сравнения 5-ти коммитов с текущим, обоими
master
, просто сделайте:Также вы можете обратиться к хэш-номеру коммита, например, если хеш-номер равен
x110bd64
, вы можете сделать что-то вроде этого, чтобы увидеть разницу:источник
git diff -w HEAD origin / master path / to / file
источник
Работает, если вы тоже не в мастер ветке.
источник
Если вы хорошо используете графический инструмент (или даже предпочитаете его), вы можете:
В gitk вы можете затем щелкнуть любой коммит (чтобы «выбрать» его) и щелкнуть правой кнопкой мыши любой другой коммит, чтобы выбрать «Разбросить это - выбранный» или «Разбросить выбранный -> этот», в зависимости от того, какой порядок вы предпочитаете.
источник
Для людей, заинтересованных в том же в GitHub, смотрите сравнение коммитов по времени .
источник
Если вам нужно сравнить один файл в тайнике, например, вы можете сделать
источник
Если вы ищете diff для определенного коммита и хотите использовать пользовательский интерфейс github вместо командной строки (скажем, вы хотите связать его с другими людьми), вы можете сделать:
Например:
https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle
Обратите внимание на ссылки «Предыдущая» и «Следующая» в правом верхнем углу, которые позволяют перемещаться по всем файлам в коммите.
Это работает только для определенного коммита, но не для сравнения между любыми двумя произвольными версиями.
источник