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