2

/home/userX/whatever次の構造のディレクトリがあるとします。

./wrapper
./wrapper/folder_A
./wrapper/folder_A/file_1
./wrapper/folder_A/file_2
./wrapper/folder_B
./wrapper/folder_B/file_3
./wrapper/folder_B/file_4

/home/userX/somewhere/repo.gitgit ツリー内のこの構造を使用して、それらを git リポジトリにコミットしたいと思います。

./blah
./blah/folder_A
./blah/folder_A/file_1
./blah/folder_A/file_2
./blah/folder_B
./blah/folder_B/file_3
./blah/folder_B/file_4

これらのファイル1〜4を別のフォルダーにコピーまたは移動したり、システム権限に触れたりする必要userXはありません(sudoerではありません)。

出来ますか?イラストは?

4

3 に答える 3

2

サイドバンド インデックスを使用して必要なものをインポートする

loaded_tree=$(
    export GIT_INDEX_FILE=$PWD/.git/throwaway
    export GIT_DIR=$PWD/.git
    rm -f .git/throwaway

    export GIT_WORK_TREE=/home/userX/whatever/wrapper
    cd $GIT_WORK_TREE

    git add folder_A folder_B  # add contents (relative to GIT_WORK_TREE)
    git add anything else      # . to repo, record locations ditto in index

    git write-tree             # make an honest tree of it
)

そして、新しいブランチの好きな場所にロードします

git checkout --orphan newbranch
git read-tree --empty          # (wipe it because `--prefix=` merges)
git read-tree  $loaded_tree --prefix=blah/
git commit -m "You're done."       
于 2013-10-30T01:44:57.557 に答える