Попробуйте diff
мой локальный файл с репозиторией GitHub, прежде чем я отправлю запрос на перенос, чтобы я мог видеть, что будет отображаться, есть ли точный способ сделать это? Я предполагаю, что инструмент сравнения GitHub управляет Git diff
?
Git diff между удаленным и местным репо
Ответ 1
Не выполняйте pull
:
- сделать a
fetch
(синтаксис такой же, какgit pull
, но он не сливается автоматически) - выполните
diff
между вашей веткой dest и другой веткой - затем выполните
merge
, если вы хотите
Ответ 2
Чтобы сравнить локальный рабочий каталог с удаленной веткой, например origin/master:
git fetch origin master
Это говорит git получить ветку с именем master из удаленного источника origin.git fetch
не повлияет на файлы в вашем рабочем каталоге; он не пытается объединить изменения, какgit pull
.git diff --summary FETCH_HEAD
Когда удаленная ветвь извлекается, на нее можно ссылаться локально через FETCH_HEAD. Приведенная выше команда сообщает git, что нужно различать файлы рабочих каталогов с FETCHed HEAD и сообщать о результатах в сводном формате. Сводный формат дает обзор изменений, как правило, хороший способ начать. Если вы хотите немного больше информации, используйте--stat
вместо--summary
.git diff FETCH_HEAD -- mydir/myfile.js
Если вы хотите увидеть изменения в определенном файле, например myfile.js, пропустите опцию--summary
и укажите нужный файл (или дерево).
Как уже отмечалось, origin
ссылается на удаленный репозиторий, а master
ссылается на ветку в этом репо. По умолчанию, git использует имя origin
для пульта, поэтому если вы сделаете git clone <url>
, он по умолчанию вызовет этот пульт origin
. Используйте git remote -v
, чтобы увидеть, на что указывает origin
.
У вас может быть несколько пультов. Например, если вы "разветвляете" проект на GitHub, вам, как правило, необходим удаленный доступ к исходному проекту, а также ваш собственный форк. Допустим, вы создали https://github.com/yourusername/someproject
как форк https://github.com/theoriginal/someproject
. По соглашению, вы бы назвали пульт дистанционного управления для исходного репо upstream
, в то время как ваш собственный форк будет origin
. Если вы вносите изменения в свой форк на GitHub и хотите получить эти изменения локально, вы должны использовать git fetch origin master
. Если upstream
внес изменения, которые необходимо синхронизировать локально, прежде чем вносить дополнительные изменения, вы должны использовать git fetch upstream master
.
Ответ 3
В комментарии OP, что часть его "проблемы была связана с Windows и Unix LFs", это должно помочь:
Вы можете использовать следующую команду config, чтобы сообщить git -diff игнорировать разницу кода eol.
git config --global core.whitespace cr-at-eol
Ответ 4
Вы можете использовать: git diff remote/my_topic_branch my_topic_branch
Где my_topic_branch
- ваша тематическая ветка.