/ / Git - сравнете местни и отдалечени, без първо да ги вземете? - git, сравни

Git - сравнявайте местни и отдалечени, без първо да ги вземете? - git, сравни

Търсих и не намерих отговор на този въпрос.

Имам приложение, което работи на Хероку. От моята локална машина обикновено внедрявам и просто:

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

След това се покачва и главният клон в приложението Heroku се актуализира. Дотук добре.

Сега. Искам да имам друга машина, която автоматично ще издърпа от репо-тора и ще се актуализира.

Така че аз правя това с:

git clone <the-heroku-repo>

Това ми даде приложението и мога да видя git config с това:

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

Има ли начин да се намерят разликите между тяхместния майстор клон и най-новата версия в отдалеченото Hero repo, без да се зарежда преди? Просто сравнете местните и отдалечените и вижте промените. Просто не мога да намеря подходящия начин.

Благодаря.

Отговори:

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 ефективно изпраща само обектите, които са необходими за завършване на дистанционно проследяващите се клонове, които се обновяват, и освен ако не разполагате с необичайно големи файлове, съхранени с вашия изходен код, това не би трябвало да има голяма разлика. често е полезно да имате пълната история на клоновете от другото хранилище, дори ако не планирате да ги използвате, например, за да можете да проучите тази история на развитието.