git: разница между файлом в локальном РЕПО и источником
Я хочу найти различия между файлом, который у меня есть в моем локальном РЕПО, и тем, что находится в исходном мастере.
Я знаю, что есть git diff, однако я просто хочу изолировать его до этого конкретного файла.
для простоты скажем, что файлы называются file1.TXT и в нем есть локальный путь к файлу = [local_path] и в происхождении он путь_к_файлу = [дистанционным путь].
какую команду git мне нужно ввести?
EDIT: спасибо всем для вашего вклада это было очень проницательно. Для тех, кто использует Eclipse (что я и должен был сказать ранее), я только что узнал, что вы можете просто щелкнуть правой кнопкой мыши -> сравнить с -> веткой, тегом или ссылкой -> выбрать соответствующую версию и там вы идете.
4 ответов:
если
[remote-path]и[local-path]то же самое, вы можете сделать$ git fetch origin master $ git diff origin/master -- [local-path]Примечание 1: вторая команда выше будет сравниваться с локально сохраненной веткой удаленного отслеживания. Команда fetch требуется обновить ветку дистанционного слежения, чтобы быть в синхронизации с удаленным сервером. Кроме того, вы можете просто сделать
$ git diff master:<path-or-file-name>примечание 2:
masterможет быть заменен в приведенных выше примерах с любым именем ветви
чтобы просмотреть различия, идущие от удаленного файла к локальному файлу:
git diff remotename/branchname:remote/path/file1.txt local/path/file1.txtчтобы просмотреть различия в другом направлении:
git diff HEAD:local/path/file1.txt remotename/branchname:remote/path/file1.txtв основном вы можете различать любые два файла в любом месте, используя эту нотацию:
git diff ref1:path/to/file1 ref2:path/to/file2как обычно
ref1иref2могут быть имена ветвей, remotename / branchname, commit SHAs и т. д.
чтобы сравнить локальный репозиторий с удаленным, просто используйте следующий синтаксис:
git diff @{upstream}
для этого я написал bash-скрипт:
#set -x branchname=`git branch | grep -F '*' | awk '{print }'` echo $branchname git fetch origin ${branchname} for file in `git status | awk '{if ( == "modified:") print ;}'` do echo "PLEASE CHECK OUT GIT DIFF FOR "$file git difftool FETCH_HEAD $file ; doneв приведенном выше скрипте я извлек удаленную главную ветвь (не обязательно ее главную ветвь любой ветви) в
FETCH_HEADзатем создайте список только моих измененных файлов и сравните измененные файлы сgit difftool.много
difftoolподдерживается git, я настроилMeld Diff Viewerдля хорошего сравнения GUI.
Из приведенного выше скрипта я заранее знаю, какие изменения сделаны другими командами в том же файле, прежде чем я буду следовать этапам gituntrack-->staged-->commitкоторые помогают мне избежать ненужного разрешения конфликта слияния с удаленной командой или создать новую локальную ветвь и сравнить и объединить на главной ветке.
Comments