Git diff между удаленным и местным репо

Попробуйте diff мой локальный файл с репозиторией GitHub, прежде чем я отправлю запрос на перенос, чтобы я мог видеть, что будет отображаться, есть ли точный способ сделать это? Я предполагаю, что инструмент сравнения GitHub управляет Git diff?

Ответ 1

Не выполняйте pull:

  • сделать a fetch (синтаксис такой же, как git pull, но он не сливается автоматически)
  • выполните diff между вашей веткой dest и другой веткой
  • затем выполните merge, если вы хотите

Ответ 2

Чтобы сравнить локальный рабочий каталог с удаленной веткой, например origin/master:

  1. git fetch origin master
    Это говорит git получить ветку с именем master из удаленного источника origin. git fetch не повлияет на файлы в вашем рабочем каталоге; он не пытается объединить изменения, как git pull.
  2. git diff --summary FETCH_HEAD
    Когда удаленная ветвь извлекается, на нее можно ссылаться локально через FETCH_HEAD. Приведенная выше команда сообщает git, что нужно различать файлы рабочих каталогов с FETCHed HEAD и сообщать о результатах в сводном формате. Сводный формат дает обзор изменений, как правило, хороший способ начать. Если вы хотите немного больше информации, используйте --stat вместо --summary.
  3. 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 - ваша тематическая ветка.