74

それはいつも私に起こります。誤ってファイルをバージョン管理してしまいました。バージョン管理をしたくありません (つまり、開発者/マシン固有の構成ファイル)。

このファイルをコミットすると、他のすべての開発者マシンのパスが台無しになります。

バージョン管理からファイルを削除すると、他の開発者のマシンから削除されます-彼らは不満を抱くでしょう.

ファイルをコミットしないことを選択した場合、常に「ダーティ」なチェックアウトが行われます。不満です。

リビジョン管理からファイルを「アンバージョン」するクリーンな方法はありますか?

編集:少し明確にしようとしています:私はすでにファイルをリポジトリにコミットしており、バージョン管理からのみ削除したいです-特に、チェックアウトを行っているすべての人から物理的に削除したくありません。最初は無視してほしかった。

回答: 2 番目の回答を受け入れることができるとしたら、これです。それはgitに関する私の質問に答えます-受け入れられた答えはsvnに関するものです。

4

15 に答える 15

81

Git では、作業ディレクトリからではなくツリーから削除するには、 --cached フラグを使用できます。つまり、次のようになります。

git rm --cached <filename>
于 2010-06-04T22:27:57.350 に答える
34

SVN バージョン 1.5 は、ローカル ファイルを失うことなく、リポジトリからのファイルの削除/削除をサポートします

http://subversion.tigris.org/svn_1.5_releasenotes.htmlから取得

新しい --keep-local オプションは、削除後もパスを保持します..

削除 (削除) は --keep-local オプションを使用してターゲットをローカルに保持するようになりました。そのため、パスは変更されていなくても削除されません。

于 2009-06-30T21:59:45.613 に答える
9

誤ってsvnにファイルを「追加」してコミットしていない場合は、そのファイルを元に戻すことができ、追加が削除されます。

于 2008-08-26T10:21:58.297 に答える
6

試さなくても…

git では、変更が別のリポジトリに反映されていない場合、影響を受けるファイルを調べて、問題のあるファイルを誤って追加したコミットの直後になるように削除コミットを並べ替えて、スカッシュできるはずです。これら2つは一緒にコミットします。git rmgit rebase --interactive

もちろん、他の誰かがあなたの変更をプルした場合、これは役に立ちません。

于 2008-08-26T10:47:05.117 に答える
4

既にファイルを追加して subversion にコミットしているようです (Subversion を使用していると思います)。その場合、そのファイルを削除する方法は 2 つしかありません。

  1. ファイルを削除済みとしてマークし、コミットします。
  2. を実行しsvnadmin dump、誤ってファイルをコミットしたリビジョンを除外して、svnadmin load.

私を信じてください、あなたは本当に2番目のことをしたくありません.それはリポジトリのすべての作業コピーを無効にします. 最善の方法は、その 1 を実行し、ファイルを無視としてマークし、謝罪することです。

于 2008-08-26T10:52:31.203 に答える
3

git リポジトリからファイルを完全に削除するには (パスワードを含むファイルをコミットした場合や、誤って一時ファイルをコミットした場合など)

git filter-branch --index-filter 'git update-index --remove filename' HEAD

次に、コミットし、リモートブランチにある場合は -f をプッシュする必要があると思います(リポジトリの履歴を変更し始めると、人々を困らせる可能性があることを忘れないでください..以前にあなたからプルしたことがある場合、彼らはまだファイルを持っている可能性があります)

于 2008-08-30T12:08:48.743 に答える
3

svn:ignore と .gitignore を調べてください。これらの機能を使用すると、RCS によって無視される余分なファイルをチェックアウトに含めることができます (「ステータス」操作などを行う場合)。

マシン固有の構成ファイルの場合、追加の「.sample」拡張子が付いた名前のファイルをチェックインすることをお勧めします。config.xml.sample. 個々の開発者は、このファイルのコピーを作成config.xmlし、システム用に微調整します。svn:ignore または .gitignore を使用すると、バージョン管理config.xmlされていないファイルが常にダーティとして表示されないようにすることができます。

あなたの編集への対応: 今すぐリポジトリからファイルを削除すると、開発者は次に更新を行うときに競合が発生します (システムのファイルをすべて変更したと仮定します)。ローカルの変更が失われることはなく、どこかから復元できます。たまたまローカルに変更を加えていない場合、構成ファイルは消えますが、ソース管理から以前のものを再取得してそれを使用することができます。

于 2008-08-26T10:26:19.643 に答える
2

ソース管理に既にあるファイルを削除するには:

git rm <filename>

その後

git commit -m ...

無視したいすべてのファイルを .gitignore ファイルに追加する必要があります。さらに、私は常に .gitignore ファイルをリポジトリにチェックするので、誰かが自分のマシンでコードをチェックアウトし、ファイルが再度生成されても、「ダーティ」とは「見えません」。

もちろん、ファイルを既にコミットしていて、他の人が別のマシンで変更を取得した場合は、すべてのローカル リポジトリを変更して履歴を変更する必要があります。少なくとも、それは git で可能な解決策です。私はsvnがあなたにそれをさせたとは思わない。

ファイルが既にマスター リポジトリ (git) またはサーバー (svn) にある場合、別のコミットでファイルを削除するよりも良い解決策はないと思います。

于 2008-08-26T10:24:29.650 に答える
1

SVNの2つの簡単なステップ:
1。このディレクトリを親ディレクトリのsvn:ignoreプロパティに追加します。

svn propedit svn:ignore .  

2.ディレクトリを削除します。

svn rm mydir

3.コミット

他の開発者がsvnupdateを実行しても、そのディレクトリは削除されないことに注意してください。SVNは代わりにバージョンを解除するだけです。

于 2012-03-21T05:36:59.577 に答える
1

SVN では、まだコミットしていないファイルを元に戻すことができます。TortoiseSVN では、コミット ウィンドウでファイルを右クリックし、元に戻す... を選択します。

コマンドラインで svn revert [file] を使用

GITは使ったことがないのでわかりません。

于 2008-08-26T10:24:40.477 に答える
0

ファイルをコミットしないことを選択した場合、常に「ダーティ」チェックアウトが発生します。不幸です。

この特定の点に関しては.gitignore 、他の人が示唆しているようにファイルを作成するか、この回答 で説明されているようなスキームを使用することをお勧めします。

于 2008-08-31T12:11:48.510 に答える
0

このコマンドを使用して、現在のディレクトリ内のすべてのファイルのバージョンを解除できます。ビットは順序を逆にして、sedsvn が処理できるようにします。

find . | sed '1!G;h;$!d'| awk '{print "svn rm --keep-local " $1}'

他の回答ですでに述べたように、単一のファイルはこれでバージョン管理されていません:

svn rm --keep-local yourFileNameXXX
于 2016-03-09T12:13:58.997 に答える
0

Windows で、フォルダーを別の場所にコピーして git から削除し、アイコンが表示されないようにする場合は、.git フォルダーを削除するだけです。.git フォルダーは非表示になっているため、メイン フォルダーの下にある [整理]、[フォルダーと検索のオプション]、[隠しファイルの表示] オプションに移動する必要があります。バージョンを解除する必要があります。

于 2016-12-06T17:31:51.380 に答える
0

私の知る限り、追加されたファイルがコミットされると、svn のバージョン管理から削除する簡単な方法はありません。

ファイルを別の場所に保存し、バージョン管理から削除する必要があります。バックアップを再度コピーするより。

結局のところ、これはバージョン管理システムです... ;)

于 2008-08-26T10:25:06.760 に答える
0


global-ignore 設定http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2を使用して Subversion からファイルを除外できます
。詳細についてはドキュメントを参照してください。

于 2008-08-26T10:27:37.333 に答える