diff
ローカルブランチとリモートブランチの間をどのように確認できますか?
git diff HEAD origin/HEAD
たのは、私が意図したものとは異なるリモートブランチを指すようです。完全なブランチ名を使用すると、期待どおりに機能します。
diff
ローカルブランチとリモートブランチの間をどのように確認できますか?
git diff HEAD origin/HEAD
たのは、私が意図したものとは異なるリモートブランチを指すようです。完全なブランチ名を使用すると、期待どおりに機能します。
回答:
リモート追跡ブランチを更新するには、git fetch
最初に入力してから次のように入力する必要があります。
git diff <masterbranch_path> <remotebranch_path>
あなたができるgit branch -a
し、リストから支店名を選択します(ローカルおよびリモート)全ての枝を一覧表示する(だけの削除remotes/
リモートブランチ名から。
例:(git diff master origin/master
「master」はローカルマスターブランチで、「origin / master」はリモート、つまりオリジンとマスターブランチです。)
git fetch
)の前にフェッチが必要な場合があります
[diff] tool = vscode [difftool] prompt = false [difftool "vscode"] cmd = \"C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe\" \"$LOCAL\" \"$REMOTE\" --diff --wait trustExitCode = false
へのパスが正しいことを確認してください。
git diff <local branch> <remote>/<remote branch>
たとえばgit diff master origin/master
、またはgit diff featureA origin/next
もちろんするいると述べたリモート追跡ブランチあなたに必要なgit fetch
最初の。また、リモートリポジトリのブランチに関する最新情報を入手する必要があります。
git diff <remote>/<remote branch> <local branch>
、自分のプッシュがリモートリポジトリに何を行うかを確認するために行います。
git diff origin
上流のブランチと比較する場合は、さらに短くても十分です。
git fetch
最初に追加してください、それは私のような初心者に問題を引き起こします
git diff <remote>/<remote branch> <local branch>
?そうでなければ、私が得る追加と削除は自分のコンピュータ(gitのバージョン2.7.0.windows.2)に切り替える
最初のタイプ
git branch -a
利用可能なブランチのリストを取得します。出力では、次のようなものが表示される場合があります
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
次に、差分を表示します
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
...
ではあり..
ませんか?
git log origin/my_branch..
がかかりますどのHEAD
あなたが何を意味するか、主にローカル参照、と。
fatal: bad revision
かfatal: ambiguous argument
。私が欲しかったのは、別のブランチからの同じファイルの差分を表示することだけでした。はい、そうでした。:-) git diff remotes/origin/<base branch> <current branch> -- <filename>
git 1.8.3.1で動作します
特定のブランチにいて、追跡している上流のブランチと比較したい場合は、
git diff @{upstream}
アップストリームが設定されていない場合(通常はArijoonのコメントに感謝)
git diff @{push}
この回答のおかげで、リビジョンを指定するためのgitドキュメントは次のとおりです。
<branchname>@{upstream}
例えばmaster@{upstream}
、@{u}
サフィックス@{upstream}
branchname(短い形式には<branchname>@{u}
)で指定されたブランチがそのブランチを指すbranchname
(と構成の上に構築さに設定されているbranch.<name>.remote
とbranch.<name>.merge
)。欠落しているbranchname
デフォルトは現在のものになります。
git diff @ @{upstream}
ます。追加@
はHEAD
であり、これが現在の場所なのでHEAD
、ブランチが追跡しているアップストリームと比較しています。@{push}
アップストリームの代わりに使用して、プッシュするように設定されているブランチ間の差分を取得できます
fatal: ambiguous argument '@upstream': unknown revision or path not in the working tree
。git diff @\{upstream\}
代わりに使用する必要がありました。😥–
git fetch
最初に行う必要があります。そうしないと、何も実行されず、出力が表示されません。リポジトリの起点にあるファイルを削除してテストし、このコマンドをローカルで実行しました。..フェッチ後にのみ機能します。
私は次の出力をはるかによく理解しています:
git diff <remote-tracking branch> <local branch>
これにより、ローカルブランチをプッシュした場合に何がドロップされ、何が追加されるかがわかります。もちろん同じですが、逆ですが、私にとってはより読みやすく、何が起こるかをより快適に見ることができます。
簡単な方法:
git fetch
git log -p HEAD..FETCH_HEAD
これにより、最初にデフォルトのリモート(起点)から変更がフェッチされます。これは、リポジトリのクローンを作成すると自動的に作成されます。明示的にすることもできますgit fetch origin master
。
次に、git logを使用して、現在のブランチとフェッチしたブランチを比較します。(-p
(パッチの生成)オプションは、違いを示すものです。)
これが私のやり方です。
#To update your local.
git fetch --all
これはリモートからすべてをフェッチするので、違いを確認すると、違いがリモートブランチと比較されます。
#to list all branches
git branch -a
上記のコマンドはすべてのブランチを表示します。
#to go to the branch you want to check difference
git checkout <branch_name>
#to check on which branch you are in, use
git branch
(or)
git status
これで、次のように違いを確認できます。
git diff origin/<branch_name>
これはローカルブランチとリモートブランチを比較します
tl; dr:git diff <local branch> <remote branch>
シェルでgitを使用するときは、まず周りを見回して自分の向きを変えたいと思います。ここにすべてのブランチを表示するコマンドがあります
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
ここで私は2つのローカル支店(持っているmy-branch
とmaster
リモート)と4を(some-branch
、some-other-branch
、master
、およびmy-branch
)。
また、横のアスタリスクmy-branch
は、私が現在そのブランチにいることを示しています(git status
出力するコマンドを使用することによってもわかります:)On branch my-branch.
。
注:git bashシェルのリモートブランチは赤で表示され、ローカルブランチは緑で表示されます。
リモートブランチを表示したいだけの場合:
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
ローカルブランチだけを表示する場合git branch -l
、使いたくなるかもしれませんが、それは完全に異なるコマンドです。ローカルブランチを表示するにgit branch
は、オプションなしで使用します
$ git branch
* my-branch
master
基本的なブランチオプションの確認を完了するには、フィルタリング--list
を許可するために、期待に反するものがあります。次のようなパターンで使用します。
$ git branch --list 'my*'
* my-branch
--list
オプション-a
と組み合わせることもできますが、-r
それに応じて必ずパターンを調整してください(リモートブランチは「リモート」で始まることに注意してください)。例:
# this will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
ドキュメント:https : //git-scm.com/docs/git-branch
これで、使用可能なすべてのブランチから任意の2つのブランチを比較できます(2つのローカルまたは2つのリモートを比較することもできます)。
ここでは、ローカルとリモートを比較してmy-branch
います。これらは同期されているので、出力はありません。
$ git diff my-branch remotes/origin/my-branch
注:引用符なしでブランチの完全な名前を指定する必要があります。
ローカルmy-branch
とリモートを比較することもできmaster
ます。リモートmy-branch
がマスターブランチにマージされていないため、ここに出力が表示されます。
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
あなたが使用し、その後変更されたファイルの名前だけとの違いを確認したい場合は、次の
git diff --name-status <remote-branch> <local-branch>
、
他にこれは二つの枝の間のすべての違いを示します:
git diff <remote-branch> <local-branch>
現在のブランチと比較したいものと比較する場合の簡単な答えは次のとおりですgit pull
。
git fetch
git diff FETCH_HEAD
最初のコマンドは、現在のブランチに対応するリモートブランチを特定します。FETCH_HEAD
参照におけるその計算のアーティファクト。次に、2番目のコマンドはその参照比較と現在のブランチの比較を使用します。
私はすでにこの質問に対するいくつかの回答があることを知っていますが、それらのほとんどを試すときに奇妙なエラーが発生しました。
私の場合、私はと呼ばれる第2の遠隔持ちheroku
でないorigin
し、それが同期していなかったので、実行しようとしたとき、私はこのエラーを得たがgit diff master heroku/master
。
fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.
または、これは他のアプローチを試みる場合git diff master..heroku/master
:
fatal: bad revision 'master..heroku/master'
解決策は、私の場合、git fetch
実行する前にリモート名を明示的に言及していましたgit diff
:
$ git fetch heroku
$ git diff master heroku/master
この同じ問題で他の人を助けることを願っています。
git difftool <commit> .
これにより、必要なコミットがローカルファイルと比較されます。最後にドットを忘れないでください(ローカルの場合)。
たとえば、ローカルファイルをいくつかのコミットと比較するには:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341。
(そして、新しいコミットとの比較が必要でない限り、git fetchは必要ありません)
例
git diff 'master' 'testlocalBranch'
webstormのようなエディターを使用している場合は、ファイル選択を右クリックしてブランチと比較し、ブランチを入力/選択できます。
VS 2019では、FETCH Do not pull pull codeを実行します。
これは私がやったことです。Beyond Compareを使用できるように、.gitconfigファイルに以下を追加しました
File location: C:\Users\[username]\.gitconfig
以下に追加
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
コマンドプロンプトを開き、作業ディレクトリに移動します。ローカルDEVブランチとリモートDEVブランチを比較するために以下に与えました
git difftool dev origin/dev --dir-diff
これにより、Beyond Compareが開き、ファイルが異なるディレクトリが開きます。変更がない場合、Beyond Compareは起動しません。
git config alias.udiff 'diff @{u}'
git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff
これで、見出しの質問に答えます(「そのリモート」)。「リモート」(ブランチのアップストリームとして構成されていない)と比較したい場合は、直接ターゲットにする必要があります。次のコマンドを使用すると、すべてのリモートブランチを表示できます。
git branch -r
次のように構成されたすべてのリモートを表示できます。
git remote show
次のように、単一のリモート(例:オリジン)のブランチ/トラッキング構成を確認できます。
git remote show origin
適切なoriginブランチを決定したら、通常のdiffを実行します:)
git diff [MY_LOCAL] MY_REMOTE_BRANCH
TortoiseGit(GitのGUIを提供します)を使用している場合は、Gitリポジトリフォルダーを右クリックしてをクリックしますGit Sync
。
選択されていない場合は、比較するブランチを選択できます。コミットコミットの違いを見ることができます。コミットを右クリックして、Compare with previous revision
違いを並べて表示することもできます。