プッシュされていない Git コミットの表示
質問
リモート リポジトリにまだプッシュされていないローカル コミットを表示するにはどうすればよいですか?たまに、 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 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 status
をX 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
あなたのコミットの概要が得られます。