如何知道哪些本地提交不在遠程?Git - 查找哪些提交是本地的
By,git log
我看到了提交歷史記錄,但我想要查找最後一次提交是否已經推入服務器或只是本地提交。有沒有辦法知道,而不去服務器和本地歷史匹配?
如何知道哪些本地提交不在遠程?Git - 查找哪些提交是本地的
By,git log
我看到了提交歷史記錄,但我想要查找最後一次提交是否已經推入服務器或只是本地提交。有沒有辦法知道,而不去服務器和本地歷史匹配?
最後我得到了一個線索,
git status
On branch dev
Your branch is ahead of 'origin/dev' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
Git的狀態也顯示數量從遠程提前提交您的當前分支。
感謝@Danh發表評論
複製上次提交散列,並查看分支列表存在提交。
如果您看到remote/origin/<branch-name>
,那麼您已推動last commit
。
$ git fetch
$ git log # copy last commit-hash
$ git branch -a --contains <last-commit-hash>
# Or, (skip copying commit-hash)
$ git fetch && git branch -a --contains $(git rev-list -n 1 HEAD)
你可以直接計算出來而不是複製它:'git fetch && git branch -a --contains $(git rev-list -n 1 HEAD)' –
@丹洛,是的。我已經更新了答案。 –
是的,你可以檢查git log origin/master..master
。
如果有輸出,則顯示日誌是您沒有推送到遠程的。如果沒有輸出,這意味着您當前的分支與主分支相同。
注意:如果git remote還被別人使用,你最好從原點取回然後再比較。
GIT中具有多個快捷鍵,例如HEAD指當前分支的末端,而@ {上游}指遠程分支的頭部(或最後被推提交)。這些快捷方式對於使用別名非常有用,例如,所以您不會鎖定使用分支名稱,如主和固定遠程名稱,如原點。
使用git log;
git log @{upstream}..HEAD
我用下面的
git config alias.changes "log --graph --abbrev-commit --decorate --date=relative --pretty=terse @{upstream}...HEAD"
我然後只需使用
git changes
列出在我當前分支未推變化。
注意:如果@ {}上游似乎不工作,要注意-u
或--set-upstream
選項git push
。使用git push -u origin master
將確保原產地/主人被認爲是分支主的上游存儲庫。然後@ {upstream}快捷方式應該正常工作。
'git status'有幫助嗎? _你的分支在'origin/master'提前1提交._ – Danh