web-dev-qa-db-ja.com

プッシュされていないGitコミットの表示

まだリモートリポジトリにプッシュされていないローカルコミットを表示する方法を教えてください。時折、git statusは私のブランチがXであることをOrigin/masterより先にコミットすると出力しますが、いつもではありません。

これは私がインストールしたGitのバグなのでしょうか、それとも何かが足りないのでしょうか。

1542
Josh Buhler
git log Origin/master..HEAD

同じ構文を使って差分を表示することもできます。

git diff Origin/master..HEAD
1601
Peter B

まだプッシュされていないすべてのブランチですべてのコミットを見たい場合は、次のようなものを探しているかもしれません。

git log --branches --not --remotes

そして、各ブランチに対する最新のコミットとブランチ名だけを見たい場合は、次のようにします。

git log --branches --not --remotes --simplify-by-decoration --decorate --oneline
643
cxreg

あなたはローカルで持っているが上流ではない全てのコミットを表示することができます。

git log @{u}..

@{u}または@{upstream}は、現在のブランチのアップストリームブランチを意味します(詳細については、 git rev-parse --help または git help revisions を参照してください)。

291
Ben Lings
147

これを git log で行うことができます。

git log Origin..

Originがあなたのアップストリームの名前であると仮定して、..の後にあるリビジョン名を除いて、それはプッシュされていない新しいコミットをリストするHEADを意味します。

60
Greg Hewgill

現在のブランチでプッシュされていないコミットを探すための便利なgitエイリアス:

alias unpushed = !GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log Origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline

これが基本的にしていること:

git log Origin/branch..branch

現在のブランチ名も決定します。

37
takeshin

あなたは試すことができます....

gitk

私はそれが純粋なコマンドラインオプションではないことを知っています、あなたがそれをインストールしていて、そしてGUIシステムにあるならば、それはあなたが捜しているものをプラスします。

(私は実際には誰もそれをこれまで言及していないのにはちょっと驚いています。)

33
Justin Ohms

git branch -vは、各ローカルブランチについて、それが "先"かどうかを表示します。

27
Aurelien

次のエイリアスを使用して、コミットされたがプッシュされていないファイルのリスト(およびステータス)のみを取得します(現在のブランチ用)。

git config --global alias.unpushed \
"diff Origin/$(git name-rev --name-only HEAD)..HEAD --name-status"

それからちょうどしなさい:

git unpushed
20
CCC

これを行う最も一般的な方法は、次のように実行することです。

git cherry --abbrev=7 -v @{upstream}

しかし、私は個人的に実行することを好みます:

git log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..

これは上流でマージされていないすべてのブランチからのコミットと上流の最後のコミットを示しています。他のすべてのコミットのルートノードとして起動します。私はそれをエイリアスnoupとして作成したので、頻繁に使用します。

git config --global alias.noup \
'log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..'
12
Giorgos Kylafas

私は以前にコミットをしていましたが、どのブランチにもプッシュしていませんでした。またリモートでもローカルでもありませんでした。ただコミットするだけです。他の答えからの何も私のために働きませんでした、しかし:

git reflog

そこで私は自分のコミットを見つけました。

9
Olaia

私はあなたがスクリプトを見に行くことをお勧めします https://github.com/badele/gitcheck 、私はすべてのあなたのgitを1回のパスでチェックするためにこのスクリプトをコーディングしました誰がコミットしていないのか、誰がプッシュ/プルしていないのかを示しています。

サンプル結果 enter image description here

9
Bruno Adelé
git cherry -v

これはあなたのローカルコメント履歴(まだプッシュされていない)を対応するメッセージと共にリストします。

8
adswebwork

それはバグではありません。おそらく、リモートからの変更は取り込まれているがまだマージされていない、自動マージが失敗した後のgitステータスです。

ローカルリポジトリとリモートリポジトリ間のコミットを確認するには、次のようにします。

git fetch

これは100%安全で、作業コピーをモックアップすることはありません。変更があった場合はgit statusX commits ahead of Origin/masterを表示します。

リモートにはあるがローカルにはないコミットのログを表示できるようになりました。

git log HEAD..Origin
8
Igor Zevaka

指定された作業ディレクトリ内のすべてのGit、Mercurial、Subversionリポジトリをスキャンし、コミットされていないファイルとコミットされていないコミットの一覧を表示する unpushed というツールがあります。 Linuxではインストールは簡単です。

$ easy_install --user unpushed

または

$ Sudo easy_install unpushed

システム全体にインストールする。

使い方も簡単です。

$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)

詳しくはunpushed --helpまたは 公式説明 をご覧ください。コミットされていない変更やプッシュされていない変更を画面上に通知するためのcronジョブスクリプトunpushed-notifyもあります。

7
nailgun

これは私にとってはうまくいった:

git log --oneline @{upstream}..

または

git log --oneline Origin/(remotebranch)..
7
VaTo

似ていないブランチを表示するには

git branch --all --no-merged

それらは疑わしいかもしれませんが、私はcxregによる答えをお勧めします

4

プッシュされていないコミットを一覧表示するには すべてのブランチで 簡単にこのコマンドを使用できます。

 git log --branches  @{u}..
4
Mohsen Kashi

プッシュアウトされていないコミットの数が1桁の数字である場合(それがよくあります)、最も簡単な方法は次のとおりです。

$ git checkout

gitは、あなたがあなたのオリジンに対してあなたが「先にNコミット」していることをあなたに言うことによって応答します。そのため、ログを表示するときには、この番号を覚えておいてください。あなたが「3コミット先を進んでいる」のなら、履歴のトップ3コミットはまだプライベートです。

3
Kaz

物事を実行する1つの方法は、あるブランチで利用可能であるが別のブランチでは利用できないコミットをリストすることです。

git log ^Origin/master master
2
Alex

これが私の移植可能な解決策(追加インストールなしでWindowsでも動作するシェルスクリプト)です。これはOriginとすべてのブランチでの違いを示しています: git-fetch-log

出力例

==== branch [behind 1]

> commit 652b883 (Origin/branch)
| Author: BimbaLaszlo <[email protected]>
| Date:   2016-03-10 09:11:11 +0100
|
|     Commit on remote
|
o commit 2304667 (branch)
  Author: BimbaLaszlo <[email protected]>
  Date:   2015-08-28 13:21:13 +0200

      Commit on local

==== master [ahead 1]

< commit 280ccf8 (master)
| Author: BimbaLaszlo <[email protected]>
| Date:   2016-03-25 21:42:55 +0100
|
|     Commit on local
|
o commit 2369465 (Origin/master, Origin/HEAD)
  Author: BimbaLaszlo <[email protected]>
  Date:   2016-03-10 09:02:52 +0100

      Commit on remote

==== test [ahead 1, behind 1]

< commit 83a3161 (test)
| Author: BimbaLaszlo <[email protected]>
| Date:   2016-03-25 22:50:00 +0100
|
|     Diverged from remote
|
| > commit 4aafec7 (Origin/test)
|/  Author: BimbaLaszlo <[email protected]>
|   Date:   2016-03-14 10:34:28 +0100
|
|       Pushed remote
|
o commit 0fccef3
  Author: BimbaLaszlo <[email protected]>
  Date:   2015-09-03 10:33:39 +0200

      Last common commit

Logに渡されるパラメータ、例えば--onelineまたは--patchを使用できます。

0
bimlas