我四处搜索,没有找到这个问题的答案。
我有一个在 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 存储库中的本地主分支和最新版本之间的差异?只需比较本地和远程并查看更改。我只是找不到正确的方法。
谢谢。
尽管您可以使用以下命令获取有关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 有效地只发送完成正在更新的远程跟踪分支所需的对象,除非您将异常大的文件与源代码一起存储,否则这应该不会有太大区别。 此外,即使您不打算使用其他存储库中的分支的完整历史记录,通常也很有用,例如,您可以检查该开发历史记录。