5

だから私はgitトピック全体にかなり慣れていません。しかし、私がやろうとしているのは、dotfiles複数のマシン間で同期することです。そこにはたくさんのチュートリアルがあることを知っており、基本的な概念を理解しました。しかし、私の質問はより具体的です。

まず最初に、私は Windows (今のところ) とVim. その上でvundle、プラグインの管理に使用しています。これで、プラグインはgit-reposそれ自体です。ディレクトリ~/.vim(同期したいメインリポジトリ)にはそれらが含まれています。

私の質問は、submodule既存のレポをどのように初期化するのですか?

私が今得たのは~/.vim/bundle/...、他のリポジトリを表す緑色のフォルダーの束です。このコマンドは、それらを追跡されていないコンテンツgit statusとして報告します(そして、私がファンキーなことをしているわけではありません)。.gitignore

緑色のフォルダー「現象」に慣れていない場合は、私のレポをご覧になることをお勧めします。

PSサブフォルダーの1つは、触れていないにもかかわらず、untracked contentではなくmodified contentと表示されます。理由がわかりません。

4

3 に答える 3

4

すべてのバンドルが変更のない単なる基本的なクローンである場合は、次のようにすることができます: dotfiles リポジトリのルートから:

for d in `find .vim/bundle/ -maxdepth 1 -mindepth 1 -type d`
do
    pushd $d
    export url=$(git config --get remote.origin.url)
    popd
    git submodule add $url $d
done

これで十分に機能するはずです。バンドルがリポジトリでない場合、または手動で追加した場合は、そのディレクトリを通過するだけです。

次に、git submodule foreach git pullそれらをすべて更新し、それらを追加して dotfiles リポジトリの参照を更新できます。

于 2015-11-26T03:00:36.827 に答える
1

明示的な変更なしに変更されたコンテンツを表示するたびに、チェックアウト時に変更を加えることができるグローバル設定 ( core.autocrlfcore.filemode ) を確認してください)。

内の各ディレクトリについて.vim/bundle/、次のことを行う必要があります。

  • そのモジュールに移動します。cd .vim/bundle/aModule
  • git リポジトリを初期化し (git init .)、コミットして、GitHub の新しい git リポジトリにプッシュします。
  • 親リポジトリに戻りました: cd ..(あなたは にいます.vim/bundle/)
  • git submodule add https:///github.com/tairun/aModule aModule(必要に応じて、このサブモジュールは最新のブランチを追跡できることに注意してください)

それからgit submodule update --init --remote

于 2013-04-26T11:51:35.520 に答える
0

この作業は繰り返しのように思えるので、次のかなり長い git エイリアスを共有したいと思います。

git config --global alias.convertGitRepoToSubmodule '!f() { if [ "$#" = 0 ]; then echo "Usage: convertGitRepoToSubmodule <submodule_directory...>" >&2; return 1; fi; cd -- "${GIT_PREFIX:-.}"; for i; do origin="$(cd "$i" && git config --get remote.origin.url)"; ( set -x; git submodule add "$origin" "$i"; ); done; }; f'

次に、次のようにします。

git convertgitrepotosubmodule $(find .vim/bundle/ -maxdepth 1 -mindepth 1 -type d)

git submodule add <the origin> <the dir>すべてのディレクトリを呼び出す必要があります。

于 2021-03-20T12:36:14.503 に答える