2012-03-20 21 views
18

ファイルを追跡して後で無視して削除すると、私のgit repoが壊れているようです。つまり、ファイルをリモートリポジトリ(ライブサイト)に置いてもらいたいのですが、追跡したくないだけです。git track、ignore、delete、untrack

私のマスターブランチはリポジトリからすべてのファイルを削除しようとしていますが、私は変更をプッシュするとリモートブランチ上でそれらを削除することを知っています...ただトラックを取り除きたいだけですが、 masterとgit rm -r --cachedですでに削除されていますが、 'どのファイルとも一致しませんでした'と表示されます。

削除したファイルをリモートリポジトリから削除せずにアンロードするにはどうすればよいですか?

答えて

30

ファイルを追跡したくないだけでなく、ファイルをリモートリポジトリ(非裸)にしておく必要があります。

このgitコマンドを使用してください。これを行うと、gitはファイルのチェックを中止して修正を行います。いずれかの時点で

git update-index --assume-unchanged <filename> 

は、リモートリポジトリに影響を与えません --no-仮定 - unchagedフラグ

git update-index --no-assume-unchanged <filename> 

これらのコマンドを設定することにより、再び追跡することができます。詳細については

http://kar-git.blogspot.in/2012/11/how-to-set-git-to-ignore-few-files-like.html

+1

Heiは働いています。 git ignoreに追加する方法と違う点を説明してください。 –

+1

@ Ajith:GITは既に追跡されたファイルを無視しません。詳細な情報については、回答のリンクをご覧ください。 –

4

git rmは、リポジトリからファイルを削除するために使用されます。

リポジトリの追跡を停止するには、削除後にリポジトリのルートにある.gitignoreファイルに追加できます。

+3

私はあなたがすでにそれをgitignoringによって追跡されたファイルの追跡を停止することができるとは思いません。誰でも確認できますか? –

+0

が確認されました。 !min char limit! – heinrich5991

+0

しかし、ファイルを削除してもそれを追跡することはできません。 –

0

git rmでファイルのトラッキングを行っていない場合でも、そのファイルの以前のバージョンをチェックアウトすることができます。あなたの地元のレポで

: のgitのrm fooの gitのリモートリポジトリに-m '削除foo' で Gitのプッシュ原点マスター

コミット:

git pull origin master // foo will be removed 
git checkout abcd1234 -- foo // checkout foo from commit abcd1234 (foo is staged) 
git reset HEAD // unstage foo 
git status 

# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  foo 

を次にuntrackに.gitignoreに追加