リモートリポジトリにまだプッシュされていないローカルコミットを表示するにはどうすればよいですか?たまに、git status
私のブランチがXコミットであることを出力しますがorigin/master
、常にではありません。
これはGitのインストールに関するバグですか、それとも何か不足していますか?
git status --all
は、2010年に表示されているはずです。またはgit status -v
、追加情報を含む詳細な出力を実際に提供する必要があります。
リモートリポジトリにまだプッシュされていないローカルコミットを表示するにはどうすればよいですか?たまに、git status
私のブランチがXコミットであることを出力しますがorigin/master
、常にではありません。
これはGitのインストールに関するバグですか、それとも何か不足していますか?
git status --all
は、2010年に表示されているはずです。またはgit status -v
、追加情報を含む詳細な出力を実際に提供する必要があります。
回答:
git log origin/master..HEAD
同じ構文を使用して差分を表示することもできます
git diff origin/master..HEAD
git config --global alias.ahead "log origin/master..HEAD --oneline"
自分がどこにいるかすぐに見つかるように、とても多くのことをしました。さらにキャンディ:for i in *; do echo $i && git ahead 2>/dev/null; done
git log --stat origin/master..HEAD
@{u}
構文はまだ利用できず、2010年2月12日にのみ利用可能になったことを指摘したいと思います。また、@{u}
ローカルブランチがアップストリームで構成されていない場合は機能しません。最後に、@{u}
現在、タブ補完はサポートされていません。タブ補完<remote>/<branch>
は、この情報を取得する最も速い方法の1つであり、アップストリームが設定されているかどうかに関係なく機能します。
まだプッシュされていないすべてのブランチのすべてのコミットを確認したい場合は、次のようなものを探している可能性があります。
git log --branches --not --remotes
そして、各ブランチの最新のコミットとブランチ名だけを見たい場合は、次のようにします。
git log --branches --not --remotes --simplify-by-decoration --decorate --oneline
git log master..HEAD
アップストリームが複数あるため、通常は機能しません。この投稿によりgit log MyBranch --not --remotes
、単一のブランチのどのアップストリームにもプッシュされていないすべてのコミットが表示されました。
--decorate
枝も示しています。--graph
それはさらに明白になります。
ローカルではあるが上流ではないすべてのコミットを表示できます
git log @{u}..
@{u}
または@{upstream}
現在のブランチ(参照の上流分岐を意味git rev-parse --help
やgit help revisions
詳細については)。
git log @{u}.. -p
最も有用なオプションの1つは-pで、各確認で導入された違いを示します。
あなたはこれを行うことができますgit log
:
git log origin..
それorigin
がアップストリームの名前であると仮定し、..
暗黙の後にリビジョン名を省略するとHEAD
、プッシュされていない新しいコミットがリストされます。
git log
「2-dots-not-3」の回答を見ると、常にstackoverflow.com/questions/53569/… ;)を思い出させます
git branch --set-upstream master origin/<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
<branch>@{push}
参照29bc885をコミットし、3dbe9dbコミット、adfe5d0をコミットし、48c5847をコミットし、a1ad0ebをコミットし、e291c75をコミットし、979cb24をコミットし、1ca41a1をコミットし、3a429d0をコミットし、a9f9f8cコミット、8770e6fをコミットし、da66b27コミット、f052154をコミットし、9e3751dをコミットし、ee2499fコミット 5月21日から[すべてを2015]、Jeff Kingによるe41bf35 [2015年5月1日]のコミット(peff
)。
(Junio C Hamanoによって統合--gitster
でコミットc4a8354、2015年6月5日)
コミットadfe5d0の 説明:
sha1_name
:@{push}
省略表現を実装する三角形のワークフローでは、各ブランチに2つの異なる重要なポイントがある可能性があり
@{upstream}
ます。通常、そこからプルするものと、通常プッシュする先です。後者の省略形はありませんが、持っていると便利です。たとえば、まだプッシュしていないコミットを知りたい場合があります。
git log @{push}..
または、より複雑な例として、通常は
origin/master
(として設定した@{upstream}
)から変更をプルし、変更を自分の個人用フォーク(たとえば)にプッシュするとしますmyfork/topic
。
複数のマシンからフォークにpushする場合があり、変更を上流ではなくpush宛先から統合する必要があります。
このパッチを使用すると、次のことができます。
git rebase @{push}
完全な名前を入力するのではなく、
コミット29bc885追加:
for-each-ref
:「%(push)
」フォーマットを受け入れる各参照の「
%(upstream)
」を報告する「@{upstream}
」があるように、このパッチは「%(push)
」を「」に追加します@{push}
。
アップストリームと同じ追跡形式修飾子をサポートします(たとえば、どのブランチにpushするコミットがあるかを知りたい場合があるため)。
あなたの地元の支店があるコミット何を見たい場合は後ろに/先読みあなたが推進している枝に比べて:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
現在のブランチでプッシュされていないコミットを探すための便利な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
現在のブランチ名も決定します。
git alias <alias-name> <command>
。この場合、コマンドを単一引用符で囲んで、シェルから特殊文字をエスケープする必要があります。
git config --global alias.unpushed '!GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline'
あなたは試すことができます...
gitk
純粋なコマンドラインオプションではないことは知っていますが、インストールしてGUIシステムを使用している場合は、探しているものを正確に確認するのに最適な方法です。
(実際、これまで誰も言及していなかったので、ちょっと驚いています。)
gitk --all
すべてのブランチを表示します。
tig
ncursesの代替です。
gitk
は素晴らしいです!これが存在することを知らなかった!素敵なUIの変更を閲覧するのに便利です。
tig
は「ターミナルのみ」の状況で最も役立ちます-デスクトップGUIにアクセスできない場合。初めて学ぶ!興味深い:のtig
逆ですgit
!
git branch -v
ローカルブランチごとに、それが「先に」あるかどうかが表示されます。
devel
にプッシュされていないコミットがある場合、対応する行は* devel 8a12fc0 [ahead 1] commit msg
(*
チェックアウトされたブランチに対応する行のみになります)になります。ahead 1
「1つ先のコミット」、つまり1つのプッシュされていないコミットがあることを意味します。
git branch -vv
よね?Cf. docs:「2回指定すると、上流のブランチの名前も出力します(git remote show <remote>も参照してください)。」
behind
および/または印刷に関するahead
ものです。git branch -v
これで十分です。Git2.16.2でもう一度テストしました:)
以前にコミットを行いましたが、どのブランチにもプッシュされておらず、リモートでもローカルでもありません。ただのコミット。他の答えからは何もうまくいきませんでしたが、
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}^..'
スクリプトhttps://github.com/badele/gitcheckをご覧になることをお勧めします。このスクリプトをコーディングして、すべてのgitリポジトリをワンパスでチェックし、誰がコミットしていないか、誰がプッシュ/プルしていないかを示します。
ここにサンプル結果
git cherry -v
これにより、ローカルのコメント履歴(まだプッシュされていない)と対応するメッセージが一覧表示されます
これは私にとってよりうまくいきました:
git log --oneline @{upstream}..
または:
git log --oneline origin/(remotebranch)..
@{upstream}
は、はリテラル(upstream
魔法の言葉)ですが、remotebranch
は単にブランチの名前です。
unpushedという名前のツールがあり、指定された作業ディレクトリ内のすべてのGit、Mercurial、Subversionリポジトリをスキャンして、コミットされていないファイルとプッシュされていないコミットのリストを表示します。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-notify
、コミットされていないプッシュされていない変更を画面に通知するためのcronjob スクリプトもあります。
物事を行う1つの方法は、1つのブランチで利用可能で別のブランチでは利用できないコミットをリストすることです。
git log ^origin/master master
上記のように:
git diff origin / master..HEAD
しかし、git guiを使用している場合
GUIインタフェースを開いた後、「リポジトリ」を選択し- >その「下の視覚化の歴史」
注:CMDプロンプト/ターミナルを使用したい人もいれば、Git GUIを使用したい人もいます(簡単にするため)。
これが私のポータブルソリューションです(追加のインストールなしでWindowsでも動作するシェルスクリプト)。これはすべてのブランチのoriginとの違いを示しています: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 log @{push}..
。以下の私の回答@{push}
で、