Текущая версия Diff и предыдущий удаленный репозиторий

Как мне отличить версию моего рабочего файла от предыдущей версии в удаленном репозитории?

Скажем, я вытаскиваю сегодня, выполняю 6-8 коммитов в свою локальную копию, а затем хочу видеть разницу между моей последней рабочей версией (данного файла) и последней версией на удаленной или любой другой версии.

Ответы

Ответ 1

Если вы говорите о удаленной ветки, скажем, 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

Ответ 2

Чтобы увидеть разницу между вашей "последней рабочей версией" (я возьму это как вашу рабочую копию), используйте:

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 ..., чтобы запустить инструмент визуального разграничения (при условии, что он существует на вашем компьютере).

Ответ 3

Предположим, что 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

Ответ 4

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 или не будете иметь удаленные коммиты, доступные локально, для того чтобы отменить