我四处搜寻,发现这个问题没有答案.
我有一个在Heroku上运行的应用程序.从我的本地机器我通常实现,只是:
git add .
git commit -m "whatever change, I know I can add and commit at the same time..."
git push <the-heroku-repo>
Run Code Online (Sandbox Code Playgroud)
然后它上升并更新Heroku应用程序中的主分支.到现在为止还挺好.
现在.我想要另一台机器自动从Heroku仓库中取出并自行更新.
所以我这样做:
git clone <the-heroku-repo>
Run Code Online (Sandbox Code Playgroud)
这让我得到了应用程序,我可以看到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
Run Code Online (Sandbox Code Playgroud)
要更新这个新的仓库,我可以做一个拉动:
git pull origin
Run Code Online (Sandbox Code Playgroud)
或者我可以获取和合并:
git fetch origin
git merge origin/master
Run Code Online (Sandbox Code Playgroud)
我的问题
在上面的fetch和merge之间,我可以通过执行以下操作来检查更改:
git log -p master..origin/master
Run Code Online (Sandbox Code Playgroud)
有没有办法找到远程Heroku仓库中的本地主分支和最新版本之间的差异而不提取?只需比较本地和远程并查看更改.我找不到合适的方法.
谢谢.
Mar*_*air 15
虽然您可以使用以下方法获取有关origin存储库中分支的一些摘要信息:
git remote show origin
Run Code Online (Sandbox Code Playgroud)
...你需要以origin某种方式将分支从存储库中取出以便进行比较.这是做什么的git fetch.当你运行时git fetch origin,默认情况下它只会更新所谓的"远程跟踪分支",例如origin/master.这些只是存储origin上次获取时相应分支所在的位置.您一直在工作的所有当地分支机构都不受影响git fetch.所以,这样做是安全的:
git fetch origin
git log -p master..origin/master
Run Code Online (Sandbox Code Playgroud)
...然后,如果你对此感到满意,你可以合并或重组origin/master.
我建议您不要担心git fetch origin命令中涉及的资源(磁盘空间或带宽).git只会高效地发送完成正在更新的远程跟踪分支所必需的对象,除非你的源代码存储了异常大的文件,否则这应该没什么区别.此外,即使您不打算使用它们,也可以从其他存储库获取分支的完整历史记录,例如,这样您就可以检查该开发历史记录.