git:ファイルはローカルに削除されましたが、リモートで変更されました。どのように変更を見るのですか? -- c# フィールド と git フィールド と merge フィールド と diff フィールド と git-extensions フィールド 関連 問題

Git: File deleted locally but changed remotely. How do I see their changes?












2
vote

問題

日本語

合理的に大きいプロジェクトでは、マージ中に次の状況で自分自身を見つけることがあります(私はGitextensionsと呼ばれるgitのためのWindows GUIを使っていますが、コマンドラインに同様に快適):

ファイルにはローカルリビジョンがありません。ファイルはローカルに削除されました(私たちのもの)がリモート(彼らのもの)を修正しました。

iを選択します。 "ファイルの削除(私たちのもの)" "を保持してください(それらのもの)" 、または "seep file" < / EM>。

ここで何が起こったのか、そしてこれらのオプションは何であるかを理解していますが、私がマージしているブランチ上のファイルに行われた変更を見ることができない限り、私はどのように進むかわからない。それは重要ではない変化でした(空白/書式設定/ 'ステートメントを使用している)、それでそれは問題ではありません、そして私は削除を維持することができますが、より大きな変更を加えたら私は何度か手動で狩猟を過ごす必要があるでしょう。これらを倒してそれらをマージします。

私が走ることができるgitコマンドを知っている人は誰もが基地局の差異を示すでしょう。この状況でリモート?これが起こる瞬間に、私は彼らが私のマージを続けることができるように彼らにそのファイルに対して行った変更を彼らに尋ねるために私の同僚の机に行きます。

英語

On a reasonably large project I occasionally find myself in the following situation during a merge (I'm using the Windows GUI for Git called GitExtensions, but I'm equally comfortable with the command line):

File does not have a local revision. The file has been deleted locally (ours) but modified remotely (theirs).

I then get options to either: "Delete file (ours)", "Keep modified (theirs)", or "Keep base file".

I understand what has happened here and what these options are, but in most cases I don't know how to proceed unless I can see the changes that were made to the file on the branch that I'm merging in. If it was an unimportant change (whitespace / formatting / 'using' statements) then it doesn't matter and I can just keep the deletion, but if they made some more significant changes then I'm going to have to spend some time manually hunting these down and merging them.

Does anyone know of a git command I can run that will show me a diff of base -> remote in this situation? At the moment when this happens I'm going over to my colleague's desk to ask them what changes they made to that file so I can continue with my merge.

</div
              

回答リスト

2
 
vote
vote
ベストアンサー
 

ええと、それは最善の解決策ではありませんが、それはおそらく最も簡単です。 gitのマージを起動すると(ただし、行動する前に)Gitは、マージする必要があるファイルと同じ場所に.base、.localおよび.remoteファイルを作成します。

上記の場合には.localまたは.Remoteが欠落しています(ユーザーがファイルを削除したユーザーによって異なります)が、それでも問題のフォルダに移動し、手動で差し込み.base - &gt。 .REMOTEまたは.BASE - &GT。 .local。

これはおそらくWindowsユーザーにとって最も簡単です。

本当に実行できるコマンドラインを使用したい場合は

<事前> <コード> git merge-base <mergingBranch> HEAD

ベースコミットハッシュを見つけるために。それから、上記のバンダシアの答えの一部を使用して:

<事前> <コード> git difftool <mergeBase>..MERGE_HEAD -- foo.file
 

Well, it's not the best solution, but it's possibly the easiest. If you start the merge in Git (but before you act on it) Git will create a .BASE, .LOCAL and .REMOTE file in the same location as the file you need to merge.

In the case I've outlined above either .LOCAL or .REMOTE will be missing (depending on who deleted the file), but you can still go to the folder in question and manually diff either .BASE -> .REMOTE or .BASE -> .LOCAL.

This is probably easiest for Windows users.

If you really want to use the command line you can run

git merge-base <mergingBranch> HEAD 

to find out the base commit hash. Then, using part of bundacia's answer above:

git difftool <mergeBase>..MERGE_HEAD -- foo.file 
</div
 
 
 
 
1
 
vote

このコマンドでリモコンのファイルに加えられた変更のリストをgitすることができます。

<事前> <コード> git log -p MERGE_HEAD -- foo

説明:

<コード> foo は問題のファイルです。

<コード> MERGE_HEAD

でマージしているリモートブランチの先頭を指しています

<コード> -p ログに各コミット

との差分を印刷させる。
 

You can git a list of the changes made to the file on the remote with this command:

git log -p MERGE_HEAD -- foo 

Explanation:

foo is the file in question.

MERGE_HEAD points to the HEAD of the remote branch you're merging with

-p causes log to print the diffs with each commit

</div
 
 
       
       
0
 
vote

GIT GUIを使用して成功しました。 MSYSGITの一部として来、Windowsエクスプローラのコンテキストメニューからアクセスできます。

git merge が衝突を解決してからコミットするように指示した時点で、Git GUIを開きました(下のスクリーンショットを参照)。

左上隅には、除外されていないすべての変更が表示されます(競合のため)。その右側には、問題のファイルの差分があります。ローカルバージョンが削除されたことを教えてください(最初の2行)だけでなく、リモートの変更(3行目)も表示されます。私はそれにかなり満足しています!

git gui

 

I was successful using Git Gui. It came as part of msysgit and can be accessed from the Windows Explorer context menu.

At the point where git merge tells me to fix the conflicts and then commit, I opened Git Gui (see screenshot below).

In the upper-left corner, it shows all changes that are unstaged (because of conflicts). To the right of it, there's a diff of the file in question. It tells me that the local version has been deleted (first two lines), but also shows the remote changes (3rd-last line). I'm pretty happy with that!

Git Gui

</div
 
 

関連する質問

6  github ssh問題に何かをプッシュするためにgit拡張機能を得ることができない  ( Cannot get git extensions to push something to github ssh problems ) 
im git拡張を使いようとしています、そして私はこれまでのところ本当にそれが好きですが、私はgithubに押し込むことを管理しません。次のコマンドはGit Bashでうまく機能します。 <事前> <コード> git push "origin" master...

13  CMDを介してgitを更新しますか?  ( Update git via cmd ) 
最近3.0.2.5232にgit拡張を更新し、そして今私のgitはサポートされなくなりました。実行すると: <事前> <コード> git --version 私はを手に入れます <事前> <コード> git version 2.9.0.windows....

15  Git Extensionsとの作業ディレクトリの差分  ( Working directory diff with git extensions ) 
git拡張 ビューの差分のように感じます私は私が私の作業ディレクトリとコミットバージョンの間で差し控えるべきです。しかしそれは私のコミット履歴を見せたいだけです。 私は回復亀Git ユーザー、そして私は「作業ディレクトリ」を持っているために使用されます。私...

6  Visual Git 208アドインはWindows 7 / Visual Studio 2010で実行できません。  ( Visual git 208 add in fails to run under windows 7 visual studio 2010 ) 
悲しいことに、私が現時点で持っているほとんどすべての情報です。 Git Extensions 208のインストーラは罰金を描く、Git Extensionsのセットアップは全ての設定で緑色で有効になり、Visual GitはVisual Studio 200...

2  Git Extensions - Push - "致命的:リモートエンドが予期せずにハングアップされました"  ( Git extensions push fatal the remote end hung up unexpectedly ) 
git拡張機能を使用して、自己ホスト型サーバーリポジトリをgitにプッシュしようとしています。コマンドラインを使用してOKを実行できますが、メッセージが表示されます。 <事前> <コード> c:Program Files (x86)Gitingit.exe...

1  Git Extensionsを使用したVisual Studio 2005でGITのアドイン  ( Add in of git in visual studio 2005 using git extensions ) 
私はgitに新しく、Git Extensions(Windows Vista)をインストールしました。 Git StumpはVisual Studioで表示されます(Git Toolbarコマンドを見ることができます)が、何もしないようです。 プラグインはWi...

1  リモートコミットをリバート/削除します  ( Reverting deleting remote commits ) 
最後の4リモートコミットを元に戻すことをお勧めし、4ステップ後方または最後の4つのリモートコミット(他のユーザーによって行われる)に進む必要があります。赤い線は私の地元のコミットブランチを表します。これを行う方法はありますか? ...

5  Git Extensionを使用して、機能ブランチを変更せずにマスターブランチにマスターブランチにマージする方法を説明しますか?  ( Using git extension how do i merge my feature branch into the master branch with ) 
GIT拡張時に偶発的です。マスターブランチにマージされた機能ブランチにコードがあります。それ以来、私の変更は削除され、その後別の開発者が私のコードの一部をマスターブランチに追加しました。完全なコードを含む新しいブランチでそれらの変更を上書きするにはどうすれば...

0  gitextensionsのshow .datファイル(UTF8)  ( Show dat file which is utf8 in gitextensions ) 
Gitextensionsは、* .datファイルが「ファイルツリー」タブのバイナリとしてのみ表示されていることを決定する「機能」を持っているようです。 UTF8エンコードされたテキストであるいくつかの* .datファイルを持っていて、私は彼らの名前パター...

13  WindowsシンボリックリンクをGITにコミットする方法  ( How do i commit a windows symlink into git ) 
私は私のコードベース にウィンドウ(ウィンドウ7)シンボリックリンクを追加しました( "foo" - &gt; \ server foo)。 Networks Share - Server Fooの場所の下にある大きな設定ファイルのセットがありま...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有