/ / Git - порівняйте локальне та віддалене без вилучення спочатку? - git, порівняти

Gіt - порівняти локальний і віддалений, не одержуючи спочатку? - гіт, порівняйте

Я шукав довкола і не знайшов відповіді на це питання.

У мене є додаток на Heroku. З моєї локальної машини я зазвичай реалізую і просто:

git add .
git commit -m "whatever change, I know I can add and commit at the same time..."
git push <the-heroku-repo>

Потім він піднімається вгору і головна гілка в додатку Heroku оновлюється. Все йде нормально.

Тепер. Я хочу мати ще одну машину, яка автоматично зробить потяг з репо Heroku і оновить себе.

Тож я роблю це з:

git clone <the-heroku-repo>

Це додає мені додаток, і я можу побачити конфігурацію git із цим:

core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git@heroku.com:theapp.git
branch.master.remote=origin
branch.master.merge=refs/heads/master

Щоб оновити це нове репо, я можу зробити лише потяг:

git pull origin

Або я можу отримати та об'єднати:

git fetch origin
git merge origin/master

МОЕ ПИТАННЯ

Між вищезазначеним результатом і злиттям я можу перевірити, які зміни виконуючи:

git log -p master..origin/master

Чи є спосіб знайти відмінності міжмісцеве головне відділення та остання версія у віддаленому репорту Heroku без отримання раніше? Просто порівняйте локальний та віддалений та перегляньте зміни. Я просто не можу знайти належний шлях.

Дякую.

Відповіді:

14 за відповідь № 1

Хоча ви можете отримати деяку підсумкову інформацію про філії в origin сховище з використанням:

git remote show origin

... вам потрібно отримати гілки з origin у своє сховище якось, щоб порівняти їх. Це те, що git fetch робить. Коли ти біжиш git fetch origin, воно за замовчуванням оновить лише так звані "відділення дистанційного відстеження", такі як origin/master. Вони просто зберігають, де розташована відповідна філія origin востаннє ви завітали. Усі ваші місцеві відділення, над якими ви працювали, не впливають на це git fetch. Отже, це безпечно робити:

git fetch origin
git log -p master..origin/master

... і тоді, якщо ви "задоволені цим", ви можете злитися з ним або перезавантажитись origin/master.


Я б закликав вас не турбуватися про ресурси (або дисковий простір, або пропускну здатність), що беруть участь у програмі git fetch origin командування. git ефективно надсилає лише ті об’єкти, які необхідні для завершення гілок віддаленого відстеження, що оновлюються, і, якщо у вас незвичайно великі файли, що зберігаються з вихідним кодом, це не повинно значно змінити. Крім того, це "s часто корисно мати повну історію гілок з іншого сховища, навіть якщо ви не плануєте їх використовувати, наприклад, щоб ви могли вивчити цю історію розвитку.