git: разница между файлом в локальном РЕПО и источником



Я хочу найти различия между файлом, который у меня есть в моем локальном РЕПО, и тем, что находится в исходном мастере.



Я знаю, что есть git diff, однако я просто хочу изолировать его до этого конкретного файла.



для простоты скажем, что файлы называются file1.TXT и в нем есть локальный путь к файлу = [local_path] и в происхождении он путь_к_файлу = [дистанционным путь].



какую команду git мне нужно ввести?



EDIT: спасибо всем для вашего вклада это было очень проницательно. Для тех, кто использует Eclipse (что я и должен был сказать ранее), я только что узнал, что вы можете просто щелкнуть правой кнопкой мыши -> сравнить с -> веткой, тегом или ссылкой -> выбрать соответствующую версию и там вы идете.

523   4  

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.
Из приведенного выше скрипта я заранее знаю, какие изменения сделаны другими командами в том же файле, прежде чем я буду следовать этапам git untrack-->staged-->commit которые помогают мне избежать ненужного разрешения конфликта слияния с удаленной командой или создать новую локальную ветвь и сравнить и объединить на главной ветке.

Comments

    Ничего не найдено.