4

私のレポには、存在しないがに存在するファイルがあることがわかりgit ls-treeましたgit ls-files。私がしたことは次のとおりです。

~/wsp$ git clone ~/repo/project1
~/wsp$ rm project1/file1
~/wsp$ git add -A
~/wsp$ git commit -m'deleted file1'
~/wsp$ git push

レポジトリ内

~/repo$ git log
<deleted file1 commit msg is there>
~/repo$ git ls-tree
<file1 is not in ls-tree>
~/repo$ git ls-files
<file1 is still there!>
~/repo$ find . -name file1
~/repo/file1

そのため、file1 は repo dir にまだ存在しているようですが、workspace dir では file1 が削除され、git-rm され、コミットされ、repo にプッシュされます。

ある git ディレクトリで削除または名前変更されたファイルを別の git ディレクトリにプッシュするにはどうすればよいですか?

前もって感謝します :)

4

1 に答える 1

3

裸でないリポジトリにプッシュしないでください

のリポジトリの状態を変更しました~/repoが、作業ディレクトリは変更しませんでした。にアクセスすると、レポの状態が作業中のディレクトリ/インデックスと一致しないため、手動でいくつかの変更を行ったと git が認識していることがわかりますgit statusrepo

不一致をなくしたい場合は、実行する必要がありgit reset --hardますrepo。ただし、これにより、作業ディレクトリに加えた変更がすべて消去されます。

そもそもプッシュするべきではありませんでしrepoた。ベア リポジトリ (作業コピーのないリポジトリ) にのみプッシュする必要があります。非ベアリポジトリからプルできます。したがって、変更を に取得する正しい方法wsprepo、 に移動してrepoからプルすることwspです。

または、ベアでないレポにプッシュする必要がある特定の理由はありますか?

于 2013-04-29T14:18:29.170 に答える