2010-09-25 2 views
25

Я разработал проект на github и должен иметь набор изменений, которые я сделал с тех пор, как я разветвил, в формате diff.Как просмотреть diff разветвленного проекта github

Если вам интересно - я разветвил Apache httpd, и я меняю код в ядре. В настоящее время я не совершаю никаких изменений, запускаю git diff и использую его вывод как патч против ванильных httpd источников в процессе создания RPM. Это, конечно, неправильно, но я не знаю, как это сделать правильно. Все, что я знаю, мне нужно, чтобы в конце концов.

ответ

25
  • Добавить оригинальный репозиторий GitHub (тот, который вы разветвили) как удаленный на своем локальном репо.
    (git remote add mainRepo github_url)
  • git fetch mainRepo получить последние изменения из этого оригинального "mainRepo".
  • покажет вам все ваши изменения между последней веткой mainRepo и текущей ветвью.
    git diff HEAD..mainRepo/master отобразит его в формате diff.

В learn.GitHub:

git diff mainRepo/master...HEAD 

бы перечислить все изменения, так как вы раздвоенный из mainRepo:

Это не будет сравнивать последний 'мастер' ветви снимок и последний «DEV 'snapshot - вместо этого сравните общий предок обоих с' dev '. Это скажет вам, что изменилось с момента перехода.

+0

Спасибо большое, это решает мою проблему. Мне определенно нужно потратить некоторое время, чтобы глубже понять философию гита. – GDR

+0

+1. Если я могу добавить две заметки: я считаю, что части HEAD не нужны, если вы сейчас находитесь в голове. Кроме того, 'git difftool mainrepo/master' и' git difftool ..mainrepo/master' полезны, если вы хотите просмотреть изменения в настроенном вами diffftool. –

+0

Как просмотреть diffs разветвленного проекта через TortoiseGit - http://stackoverflow.com/a/7297491/968003 –

3

Если нажать ветвь, которая отслеживает «вверх» репо в репозиторий, то вы можете увидеть различий в самой GitHub, тоже:

git remote add mainRepo github_url 
git fetch mainRepo 
git branch main_repo_master mainRepo/master 
git push origin main_repo_master 

Тогда увидеть его онлайн, как это:

https://github.com/rdp/mplayer-svn/compare/master ... main_repo_master

исх: http://betterlogic.com/roger/2012/04/github-compare-commits

2

Get родитель/вилка точка sha1: git merge-base master HEAD Get дифф: git diff <sha1>

Или в одной команде: git difftool $(git merge-base master HEAD)

Что такое же, как команда сахара: git diff master...HEAD

0

Это старый вопрос, но я просто нашел очень хороший метод для получить патч или файл diff непосредственно от Github.

Когда вы находитесь на своей вилке, есть "Сравнить" ссылка. Используя это, вы попадаете в режим сравнения.

Пример

https://github.com/luisgoncalves/xades4j/compare/master...beat2:master 

Теперь вы можете вручную добавить либо «.diff» или «.patch» до конца этого URL, и вы получите файл непосредственно в браузере.

Пример

https://github.com/luisgoncalves/xades4j/compare/master...beat2:master.diff 

Источник: https://github.com/blog/967-github-secrets

Смежные вопросы