まだリモートリポジトリにプッシュされていないローカルコミットを表示する方法を教えてください。時折、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
を意味します。
現在のブランチでプッシュされていないコミットを探すための便利な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
現在のブランチ名も決定します。
あなたは試すことができます....
gitk
私はそれが純粋なコマンドラインオプションではないことを知っています、あなたがそれをインストールしていて、そしてGUIシステムにあるならば、それはあなたが捜しているものをプラスします。
(私は実際には誰もそれをこれまで言及していないのにはちょっと驚いています。)
git branch -v
は、各ローカルブランチについて、それが "先"かどうかを表示します。
次のエイリアスを使用して、コミットされたがプッシュされていないファイルのリスト(およびステータス)のみを取得します(現在のブランチ用)。
git config --global alias.unpushed \
"diff Origin/$(git name-rev --name-only HEAD)..HEAD --name-status"
それからちょうどしなさい:
git unpushed
これを行う最も一般的な方法は、次のように実行することです。
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 reflog
そこで私は自分のコミットを見つけました。
私はあなたがスクリプトを見に行くことをお勧めします https://github.com/badele/gitcheck 、私はすべてのあなたのgitを1回のパスでチェックするためにこのスクリプトをコーディングしました誰がコミットしていないのか、誰がプッシュ/プルしていないのかを示しています。
サンプル結果
git cherry -v
これはあなたのローカルコメント履歴(まだプッシュされていない)を対応するメッセージと共にリストします。
それはバグではありません。おそらく、リモートからの変更は取り込まれているがまだマージされていない、自動マージが失敗した後のgitステータスです。
ローカルリポジトリとリモートリポジトリ間のコミットを確認するには、次のようにします。
git fetch
これは100%安全で、作業コピーをモックアップすることはありません。変更があった場合はgit status
はX commits ahead of Origin/master
を表示します。
リモートにはあるがローカルにはないコミットのログを表示できるようになりました。
git log HEAD..Origin
指定された作業ディレクトリ内のすべての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
もあります。
これは私にとってはうまくいった:
git log --oneline @{upstream}..
または
git log --oneline Origin/(remotebranch)..
似ていないブランチを表示するには
git branch --all --no-merged
それらは疑わしいかもしれませんが、私はcxregによる答えをお勧めします
プッシュされていないコミットを一覧表示するには すべてのブランチで 簡単にこのコマンドを使用できます。
git log --branches @{u}..
プッシュアウトされていないコミットの数が1桁の数字である場合(それがよくあります)、最も簡単な方法は次のとおりです。
$ git checkout
gitは、あなたがあなたのオリジンに対してあなたが「先にNコミット」していることをあなたに言うことによって応答します。そのため、ログを表示するときには、この番号を覚えておいてください。あなたが「3コミット先を進んでいる」のなら、履歴のトップ3コミットはまだプライベートです。
物事を実行する1つの方法は、あるブランチで利用可能であるが別のブランチでは利用できないコミットをリストすることです。
git log ^Origin/master master
これが私の移植可能な解決策(追加インストールなしで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
を使用できます。