質問

リモート リポジトリにまだプッシュされていないローカル コミットを表示するにはどうすればよいですか?たまに、 git status 私のブランチは X コミット先であることが出力されます origin/master, 、 しかしいつもではない。

これは Git のインストールに関するバグですか、それとも何かが足りないのでしょうか?

役に立ちましたか?

解決

git log origin/master..HEAD

また、同じ構文を使用して差分を表示することができます。

git diff origin/master..HEAD

他のヒント

あなたはまだプッシュされていないすべてのブランチ上のすべてのコミットを表示したい場合は、

、あなたはこのような何かを探していることがあります:

git log --branches --not --remotes

そして、あなたが唯一の最も最近は各ブランチにコミット確認したい場合、およびブランチ名、この:

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

ローカルにあるがアップストリームにはないすべてのコミットを表示するには、

git log @{u}..

@{u} または @{upstream} 現在のブランチの上流ブランチを意味します (「 git rev-parse --help または git help revisions 詳細については)。

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

git cherry -v 

に示されているように、 ギット:すべてのプッシュされていないコミット、または別のブランチにないコミットを表示します.

あなたは git logするでこれを行うことができます

git log origin..

origin..がプッシュされていない新しいコミットを示していますHEADを、暗示した後、任意のリビジョン名をオフに残して、あなたの上流の名前であると仮定すると。

の現在ののブランチにコミットunpushed探しのためのハンディ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

だけでなく、現在のブランチ名を決定します。

他のすべての回答は「上流」(プル元のブランチ)について話しています。
しかし、 地方支店 できる 押す違う プル元のブランチよりもブランチ。

master リモート追跡ブランチにプッシュできない可能性があります。」origin/master".
上流の の支店 master そうかもしれない origin/master, ただし、リモート追跡ブランチにプッシュされる可能性があります origin/xxx あるいは anotherUpstreamRepo/yyy.
それらはによって設定されます branch.*.pushremote 現在のブランチと global remote.pushDefault 価値。

それは それ プッシュされていないコミットを探すときにカウントされるリモート追跡ブランチ:を追跡するもの branch at the remote どこ 地方支店 に追い込まれるだろう。
branch at the remote またそうなる可能性があります origin/xxx あるいは anotherUpstreamRepo/yyy.

Git 2.5+ (2015 年第 2 四半期) では、そのための新しいショートカットが導入されています。 <branch>@{push}

見る コミット29bc885, 3dbe9dbをコミット, adfe5d0をコミット, コミット48c5847, a1ad0ebをコミット, コミットe291c75, コミット979cb24, コミット1ca41a1, コミット3a429d0, a9f9f8cをコミット, コミット8770e6f, da66b27をコミット, コミット f052154, コミット9e3751d, コミットee2499f [すべて 2015 年 5 月 21 日以降]、および e41bf35をコミット [2015 年 5 月 1 日] ジェフ・キング(peff).
(合併 ジュニオ・C・ハマノ -- gitster --コミット c4a8354, 、2015 年 6 月 5 日)

adfe5d0をコミット 説明します:

sha1_name:埋め込む @{push} 速記

三角形のワークフローでは、各ブランチに 2 つの異なる関心点がある場合があります。の @{upstream} 通常プルする送信先と、通常プッシュする送信先です。後者の省略表現はありませんが、あると便利です。

例えば、 どのコミットを行っていないかを知りたくなるかもしれません まだプッシュされていません:

git log @{push}..

または、より複雑な例として、通常は次から変更を取得すると想像してください。 origin/master (これをあなたの @{upstream})、変更を自分の個人フォークにプッシュします (例: myfork/topic).
複数のマシンからフォークにプッシュすることがあり、次のことが必要になります。 上流からではなくプッシュ先からの変更を統合する.
このパッチを使用すると、次のことが可能になります。

git rebase @{push}

フルネームを入力するのではなく、

コミット29bc885 追加:

for-each-ref:受け入れる "%(push)" フォーマット

私たちが持っているのと同じように」%(upstream)「報告する」@{upstream}" 各参照に対して、このパッチは "%(push)" 合わせる "@{push}".
アップストリームと同じトラッキング形式修飾子をサポートしています( たとえば、プッシュするコミットがあるブランチを知りたい場合があります。).

ローカルブランチのコミット数を確認したい場合 前/後ろ プッシュ先のブランチと比較すると、次のようになります。

git for-each-ref --format="%(refname:short) %(push:track)" refs/heads

あなたが試みることができる....

gitk

私はそれが純粋なコマンドラインオプションではありません知っているが、あなたはそれがインストールされているとGUIシステム上にある場合、それはあなたが探している正確に何を参照するには素晴らしい方法だプラス全体の多くよります。

(私は実際には一種の誰もが、今のところそれを言及していない驚いています。)

git branch -vは、それが「先」だかどうか、各地域の支店のために、表示されます。

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

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

そしてちょうど行います:

git unpushed

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

git reflog

があり、私は私がコミットいます。

私はこれを行うための最も一般的な方法のようなものを実行することであると信じています:

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}^..'

これはバグではありません。あなたはおそらく見ることは、リモートからの変更がフェッチされたが、失敗した自動マージ後にgitの状態ではない、まだマージされます。

ローカルリポジトリ間のコミットを参照してリモートこれを行うには:

git fetch

これは100%安全ですし、あなたの作業コピーをモックアップはありません。変更があった場合にはウィルショーgit statusX commits ahead of origin/masterます。

あなたは今、リモートではなくローカルにあるコミットのログを表示することができます:

git log HEAD..origin

私は私は、あなたがスクリプト https://github.com/badele/gitcheck のを見に行く示唆しますワンパスすべてのGitのリポジトリにチェックするためにこのスクリプトをコード化し、それがコミットしていないと誰が引っ張っ/プッシュされていない方を示しています。

ここではサンプルの結果ここに画像の説明を入力します

git cherry -v

これは、対応するメッセージをローカルのコメント履歴(まだプッシュされていないが)出て一覧表示されます。

指定した作業ディレクトリ内のすべてのGit、MercurialのとSubversionリポジトリをスキャン unpushed の名前のツールがありますそしてucommitedファイルと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や詳細については、公式説明を参照してください。また、コミットされていないとunpushed変更の画面上の通知のためのcronジョブスクリプトunpushed-notifyを持っています。

これは私のためのより良い勤務ます:

git log --oneline @{upstream}..

または

git log --oneline origin/(remotebranch)..

類似:マージされていない枝を表示するには:

git branch --all --no-merged

これらは疑わしいことができますが、私はcxregで答えをお勧めします。

一覧表示するには、すべてのunpushedコミットのすべての支店でを簡単にこのコマンドを使用することができます:

 git log --branches  @{u}..

押し出されていないコミットの数は、それがしばしばある1桁の数字である場合は、最も簡単な方法があります:

$ git checkout

gitのは、あなたがあなたの相対的な起源を「Nのコミット先」であることを伝えることで応答します。ログを表示するときだから今だけの心の中でその数を維持します。あなたは「先に3つのコミットすることにより、」なら、歴史の中でトップ3のコミットはまだプライベートでます。

物事の1つの方法は、1つのブランチではなく、他に利用可能なコミットをリストすることです。

git log ^origin/master master

これが私の移植可能なソリューション(追加のインストールなしでWindowsでも動作するシェルスクリプト)であり、すべてのブランチのオリジナルとの違いを示しています。 git-fetch-log

出力例:

==== branch [behind 1]

> commit 652b883 (origin/branch)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-10 09:11:11 +0100
|
|     Commit on remote
|
o commit 2304667 (branch)
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2015-08-28 13:21:13 +0200

      Commit on local

==== master [ahead 1]

< commit 280ccf8 (master)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-25 21:42:55 +0100
|
|     Commit on local
|
o commit 2369465 (origin/master, origin/HEAD)
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2016-03-10 09:02:52 +0100

      Commit on remote

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

< commit 83a3161 (test)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-25 22:50:00 +0100
|
|     Diverged from remote
|
| > commit 4aafec7 (origin/test)
|/  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
|   Date:   2016-03-14 10:34:28 +0100
|
|       Pushed remote
|
o commit 0fccef3
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2015-09-03 10:33:39 +0200

      Last common commit

ログに渡されるパラメータ。 --oneline または --patch に使える。

git show

は、ローカルのコミットのすべての差分を表示します。

git show --name-only

は、ローカルコミットIDとコミットの名前が表示されます。

git diff origin

あなたの違いを示すべきであること、次に、あなたのブランチが起源を追跡するように設定されていると仮定します。

git log origin

あなたのコミットの概要が得られます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top