1

以前にサブモジュールとして追加されたファイルを git リポジトリに追加しようとしています。私はそれがどのように起こったのかわかりません。

.gitmodulesどこにもファイルが見つからず、.git/config次のようになります。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@github.com:frankV/dotfiles.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

vim vundle のディレクトリを含める必要がありますが、上記の問題によりできません。この時点まで、このリポジトリから削除したり、vundle のディレクトリの下にファイルを追加したりできませんでした。

ファイルを追加しようとすると、次のようになります。fatal: Path '_vim/bundle/vundle/autoload/vundle' is in submodule '_vim/bundle/vundle'

そして私のgitステータス出力:

...
#   modified:   _vim/bundle/Command-T (untracked content)
#   modified:   _vim/bundle/The-NERD-Commenter (untracked content)
#   modified:   _vim/bundle/The-NERD-tree (untracked content)
#   modified:   _vim/bundle/matchit.zip (untracked content)
...

ご覧のとおり、vundle はこのリストに含まれていないため、これらのサブモジュールが vundle を介してインストールされるため、これらのサブモジュールを追跡しなくても問題ありません。

4

1 に答える 1

2

ネストされたリポジトリがあり、それを で見つけfind . -name .gitます。本当に履歴のないソースをインポートしたい場合は、git rmそれを含むディレクトリを削除し、.git ディレクトリ自体を削除できます。現在の履歴を失わないようにするには、そこからフェッチしてブランチをサブツリー マージすることができますが、最小限の労力で構造と履歴を保持するという点でのスイート スポットは、レポ構造をそのまま維持することです。

Git はネストされたリポジトリ サブモジュールを呼び出し、面倒な作業を管理するのに役立つコマンドがあります --- たとえば、サブモジュールのプライマリ リポジトリは多くの場合、サード パーティ (git://github.com/gmarik/vundle.gitたとえば、あなたのもの) によってホストされているため、サブモジュール コマンドは、役立つインフラストラクチャをセットアップします。レポのクライアントがサブモジュールのプライマリを見つけることができる場所を宣伝します---しかし、サブモジュールコマンドが行うことはすべて、そのようなありふれたタスクの支援です。リポジトリがサブモジュールとして使用されているかどうかは、他の git コマンドにはわかりません。気にする必要がないからです。

つまり、あなたがしているように見えるのは、他の誰かの進行中のプロジェクトの結果を自分のプロジェクトの構成要素として使用しようとしているように見えます。それを行う git の方法は、可能な限り最も直接的な方法で単純に実行することです: プロジェクトのクローンを作成します。そしてそれをあなた自身の一部として使用してください。 私が書いたこの他の回答はTMI かもしれません。これはプロジェクトをサブモジュールに分割することに関するものですが、概念がいかに単純で直接的であるかについての別の見解です。

于 2013-03-10T17:38:29.963 に答える