2013-03-21 22 views
8

私が最後に押したことを知りたいのですが、私がコミットした最後のことではなく押してしまいました。Gitは私が押した最後のコミットを見つけた

このためのgitコマンドはありますか?

コンテキスト: 私は、masterブランチで私のdev_branchをマージする前に、いくつかのコミットを押しつぶすしたいが、私は(これは本当ですか?)あなたは既にプッシュされる何かをリベースすることはできませんと言われています。

私はこのリベースに含まれていない最後のコミットを知りたいと思います。

答えて

24

あなたは最後のコミットを意味する場合は、リモートでoriginであると仮定すると、その後、masterブランチにプッシュ:、

git rev-parse origin/master 

これはあなたorigin起源のmaster枝の先端のコミットIDが表示されますローカルのリポジトリが現在認識しているので、これは、コミットが他の誰かのコミットであることを意味します。実行した後に他の誰かがコミットをプッシュし、そのブランチがfetchであった場合です。

git show -p origin/master 

このコマンドは、コミットID、作成者、ログメッセージ、およびその親コミットに対するdiffを含むコミットに関する情報を提供します。私のお気に入りのGitの


一つの検査のまさにこのようなものを行うためのコマンド:

git log --pretty=oneline --abbrev-commit --graph --decorate --all 

これは、コミットの歴史の素敵なアスキーアートのグラフが表示され、それぞれがいることを任意の引用文献が表示されますコミットそれをターゲットにしています。このようにすれば、一目で分かり、歴史の中の分岐や合併を見ることができ、origin/masterがあなた自身のmasterに関連している場所を簡単に見ることができます。

+0

最後のコマンドが素晴らしい、本当に便利なcdhowieです! 私はおそらく別々の質問でこれを頼むべきであるが、何 良く考えられていることは-i は、私が何をしたいのか、主人と私のdevのブランチをマージするが、私の100を持っている --squashをマージ-gitリベース-git + 4のように圧縮されたコミット。歴史の中におそらく4つの重要ポイントがあるので、1ではない。 – chrispepper1989

+2

あなたのdevブランチをプッシュした後、それを押しつぶすことは悪い考えである。公開している場合は変更しないでください。それが公開されていない場合、 'git rebase -i'は、あなたが履歴に残したいと思うコミットと、あなたがそれらに押しつぶしたいものを選択させます。 'git merge --squash'はコミットを1つだけ作成する機会を与えます。最終的には、コミットするオブジェクトの数に依存します。 – cdhowie

関連する問題