2016-12-28 30 views
0

如何知道哪些本地提交不在遠程?Git - 查找哪些提交是本地的

By,git log我看到了提交歷史記錄,但我想要查找最後一次提交是否已經推入服務器或只是本地提交。有沒有辦法知道,而不去服務器和本地歷史匹配?

+3

'git status'有幫助嗎? _你的分支在'origin/master'提前1提交._ – Danh

回答

0

最後我得到了一個線索,

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發表評論

2

複製上次提交散列,並查看分支列表存在提交。
如果您看到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) 
+0

你可以直接計算出來而不是複製它:'git fetch && git branch -a --contains $(git rev-list -n 1 HEAD)' –

+0

@丹洛,是的。我已經更新了答案。 –

2

是的,你可以檢查git log origin/master..master

如果有輸出,則顯示日誌是您沒有推送到遠程的。如果沒有輸出,這意味着您當前的分支與主分支相同。

注意:如果git remote還被別人使用,你最好從原點取回然後再比較。

1

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}快捷方式應該正常工作。