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 против