回答:
Hgのように、Gitはそのような情報をネットワーク経由で送信できません。しかし、あなたは実行することができますgit fetch
(詳細ようであるhg pull
よりもhg fetch
、あなたのリモートサーバーから新しいコミットをフェッチします)。
したがって、ブランチが呼び出さmaster
れ、リモートが呼び出されるorigin
場合、実行後git fetch
、ブランチも呼び出される必要がありますorigin/master
。その後、取得することができgit log
、すべてのコミットmaster
のスーパーセットである必要がorigin/master
行うことによってgit log master..origin/master
。これらの2つを逆にして、反対にします。
私の友人であるDavid Dollarは、シミュレートするgitシェルスクリプトをいくつか作成しましたhg incoming/outgoing
。これらはhttp://github.com/ddollar/git-utilsで見つけることができます。
Git 1.7.0以降、上流のブランチを総称的に参照できる特別な構文があります:@{u}
または@{upstream}
。
模倣するhg incoming
:
git log ..@{u}
模倣するhg outgoing
:
git log @{u}..
私は次のように使用incoming
し、outgoing
使いやすい上にするためにエイリアスを:
git config --global alias.incoming '!git remote update -p; git log ..@{u}'
git config --global alias.outgoing 'log @{u}..'
git branch --set-upstream foo origin/foo
ます。
git log @{u}..
リポジトリのすべての変更をリストします。それらがまだ存在しない方法はありません。
git rev-parse --symbolic-full-name @{u}
適切なリモート参照を出力することを確認してください。また、git log @{u}..
上流のブランチから到達できないコミットが表示されます。これには、すでにリモートリポジトリにあるコミットが含まれる場合があります(別の参照から到達可能な場合)。これは、すでにプッシュされたブランチにマージした直後に発生します。
checkout <somebranch>
とだけを実行したばかりの、新しく複製されたレポでしたmerge <otherbranch>
。この時点で、私は実行しlog @{u}..
、すべての変更がリストされているのを見ました。
完全な答えではありませんが、git fetchはリモートリポジトリをプルし、マージを行いません。その後、
git diff master origin / master
git diff origin/master master
「git log origin..HEAD」を使用します
「git fetch」に続けて「git log HEAD..origin」を使用します。リストされているコミットIDを使用して、個別のコミットを選択できます。
上記はもちろん、「origin」がリモートトラッキングブランチの名前であることを前提としています(デフォルトのオプションでcloneを使用した場合)。
「git log」と@ {u}の回答で最初に「不明なリビジョン」エラーが表示されたとき、Chris / romkynsの提案を試しましたgit push --dry-run
。
「5905..4878 master-> master」などの出力が表示されます。5905は、リモートが持つ最新のコミットであり、4878を含む(およびそれを含む)コミットがリモートに適用されます。
次に、他のいくつかのgitコマンドへの引数として5905..4878を使用して、詳細を取得できます。
git diff 5905..4878 # Gives full code changes in diff style
git log --online 5905..4878 # Displays each commit's comment
git fetchを実行すると、ブランチ、タグ(refs)を含むすべてのコンテンツが.git / FETCH_HEADに一時的に保存されます。そのコンテンツはコマンドで表示できます:git log FETCH_HEAD接尾辞-aをgit fetchで使用しない場合、FETCH_HEADのコンテンツは新しいコンテンツで上書きされます。これらのコンテンツから、マージするブランチを表示して決定することができます。また、フェッチによってもたらされたものから少数のコミットのみが必要な場合は、単純なチェリーピックを使用できます。
hg incoming
と、hg outgoing
実際に何をしているのかについて、いくつかの混乱があるようです。私が見つけた最も近いGitの同等物が--dry-run
オプションです。ただ、git pull --dry-run
あなたが起こるために必要なすべてのもののリストが表示されます。