私はGitにいくらか慣れていないので、私がやろうとしていることは可能なはずです。基本的に私はレポジトリのクローンに取り組んでおり、かなりの数のローカルコミットを行ってきました。すべての変更の「合計」と元のレポバージョンの差分を表示する方法はありますか? Push
を実行するとGitが基本的にこれを行うため、これが可能になると思います。
ここに私がやろうとしていることの例があります:gitkでは次のようなものが表示されます:
*-[mybranch] answer.txtの末尾に「42」を追加しました(ローカルコミット)
*-my.txtの末尾に「Hello World」を追加しました(ローカルコミット)
*-my.txtの先頭に「C#/。NET」を追加しました(ローカルコミット)
*-<[RemoteRepo]>(複製元のリポジトリ)
RemoteRepo
からチェックアウトした元のバージョンと比較した場合、my.txt
とanswers.txt
に対するすべての変更の合計の違いをどのように表示できますか?
3つの方法があります(他の回答から2つがここに与えられます)
1) git diff Origin/master master
2) git diff Origin/master..master
3) git diff Origin/master...master
1つ目と2つ目は同じで、マスターとリモートマスターのヒント間の変更を示しています。
3つ目は、ブランチの最後のプッシュ以降にマスターで発生した変更を示しています。これは、あなたが探している最も適切なものだと思います
最も簡単な答えは
git show-branch
より細かく制御するためにできることは、git log
別館git rev-list
を使用することです。
git log --left-right --graph --cherry-pick \
--oneline branchname...remote/branchname
これは私の好みの方法であり、次のような結果になります
> | fff6bda remote fix
< | c8903ee local fix
< | 724373c Merge branch 'bla' into bla
|\ \
| < | 2faf547 details
| < | abbdc47 ....
|/ /
< | befc181 some tagged commit
--decorateを含めると、gitk、git-gui、gitwebに近いものが得られます。
> | fff6bda remote fix
< | c8903ee local fix
< | 724373c (tag_4) Merge branch 'bla' into bla
|\ \
| < | 2faf547 details
| < | abbdc47 ....
|/ /
< | befc181 (tag_3) some tagged commit
git config alias.lr log --long-option1 --long-option2
'を使用してくださいgit config color.ui auto
」を使用してすぐに目を覚ます必要な場合allローカルヘッド(すべてのローカルブランチ)対allリモートコミット(同じブランチに):
git log --decorate --pretty=oneline --all --not --glob=refs/remotes --no-walk
すべての個別のリビジョンを取得するには、ウォークスルーをオフにします。この場合、前に示したスイッチを使用することを好みます(--graph --left-right)
マージを明確に表示する場合は、-boundaryを含めます
Git log
およびrev-list
は、多数のfilteringなフィルタリング機能をサポートしています。manページを参照してください
--after '2001-01-01'
--until 'last week'
--author 'martin'
-E -i --grep='fixes #[0123456789]+'
-S 'new_debug_function'
そして、他の多くの人。これにより、必要な情報をほぼゼロの労力で正確に取得するための十分なレバレッジが得られます。
スタッシュには存在するがリモートにはないもの(リモートブランチ上のスタッシュを参照する方法はないことに注意してください。
git log $(git rev-list -g stash) --not --glob=refs/remotes
ノート
これにはドロップされたスタッシュが含まれますが、現在のスタッシュは含まれません
git log $(git fsck --unreachable --full --lost-found | grep 'commit' | cut -d '' -f3)\ --no-walk --not --glob = refs/remotes --oneline - 飾る
スクリプトを作成するために、git log
の使用をgit rev-list
に置き換えると、ハッシュだけが得られます(さらに、いくつかのscript-prrofの堅牢性)。
[1]リポジトリ間でスタッシュを転送する方法に関する以前の回答も参照してください。
(通常)必要なことを行う最も簡単で確かに覚えやすいコマンドは次のとおりです。
git diff Origin
これは、最初にプルしたもの(Origin)と現在作業中のブランチ(デフォルトはmaster
)の差分を示します。
違いはgit diff A B
で表示でき、AのコードとBのコードを比較します。
git diff Origin/master master
Origin/master
は、最後にフェッチ(またはクローン)したときのリモートマスターブランチの状態です。master
は、ローカルで作業しているときにブランチを切り替えた場合を除き、コードのローカル状態です。
すべてのgit diff HEAD Origin/"nameofyourbranch"
特定のファイルの場合git diff HEAD: "filename" Origin/"nameofbranch": "filename"
git diff Origin/master..master