Diff текущая версия файла и предыдущий удаленный репозиторий
Как отличить мою рабочую версию файла от предыдущей версии в удаленном репозитории?
скажем, я вытаскиваю сегодня, выполняю 6-8 коммитов для моей локальной копии, а затем хочу увидеть разницу между моей последней рабочей версией ( данного файла ) и последней на удаленной или любой другой версии.
4 ответов
если вы говорите о удаленной ветви, скажите,origin/master
, вы можете использовать ~
и ^
чтобы ссылаться на предок совершает относительно ветви так же, как вы можете с локальными ветвями:
# what change was introduced to origin/master in the last 4 commits?
git diff origin/master origin/master~3
если вы хотите отличить свой текущий рабочий каталог от 5-го последнего коммита на origin/master
, вы опустите первый аргумент:
git diff origin/master~4
чтобы увидеть разницу между вашей " последней рабочей версией "(я возьму это в качестве рабочей копии), используйте:
git diff <remote>/<branch>
если вы думаете, что кто-то еще нажал на пульт, то вам нужно получить изменения:
git fetch <remote> <branch>
git diff <remote>/<branch>
если вы хотите ограничить diff для всего файла или всех файлов в директории:
git diff <remote>/<branch> -- /path/to/file
git diff <remote>/<branch> -- /path/to/ #all files in directory
можно использовать git difftool ...
для запуска визуального инструмента diff (при условии, что он существует на вашем компьютере).
предположим path/to/file.txt
- это файл, который привязан к удаленной ветви origin/master
и тоже в моей рабочей области, помогут местным отделением my-branch
.
разница между последней версией path/to/file.txt
зафиксировал удаленную ветку и (возможно, незафиксированную) версию в моей рабочей области:
git diff origin/master:path/to/file.txt path/to/file.txt
разница между версией path/to/file.txt
совершил удаленную ветку три коммита назад и (возможно, незафиксированную) версию в моем рабочее пространство:
git diff origin/master~3:path/to/file.txt path/to/file.txt
разница между последней версией path/to/file.txt
совершил удаленную ветку и последнюю версию, совершенную до my-branch
:
git diff origin/master:path/to/file.txt my-branch:path/to/file.txt
git fetch; #this will attach the remote branch commits to your local tree git diff FETCH_HEAD #diff your working dir version of my_file vs the remote tip same as git diff remotes/origin/branch
но сначала вы должны сделать git-fetch, или у вас не будет локальных коммитов remote, доступных для diff против