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