2017-05-14 67 views
0

目前,我有以下文件夾結構:變化git的結構

root 
    .git (folder) 
    Folder A 
    SubFolderA 
    ... 
    Folder B 
    ... 

而且我想以下結構:

root 
    Folder A 
    .git (folder) 
    SubFolderA 
    ... 
    Folder B 
    ... 

我如何能做到這一點,而不破壞我目前的回購?

在此先感謝。

+0

你爲什麼會想要移動'.git'?如果將'.git'移動到'文件夾A',這會導致文件不在'Folder A'('文件夾B')中,而不是由git控制的版本。 –

+1

**爲什麼**你想要/需要移動.git文件夾?你應該很少關心這個文件夾。 –

+0

@ Marina-MSFT'文件夾B'和其餘文件(文件夾A'除外)對存儲庫目的來說並不重要。當我通過將'文件夾B'添加到git來創建回購時,我犯了一個錯誤,所以'文件夾B'不再受git控制的版本無關緊要。 (抱歉,如果我寫了這個錯誤,英語不是我的第一語言:P) – chestacio

回答

0

如果你真的想要的,然後繼續和移動它:

$ mv .git FolderA/ 
$ cd FolderA/ 
$ git add . 

但請注意,在FolderB所有文件現在將出源代碼控制:

$ git commit -m "Remove all but FolderA from source control" 
[master d044479] Remove all but FolderA from source control 
10 files changed, 5 deletions(-) 
rename FolderA/FileInA1 => FileInA1 (100%) 
rename FolderA/FileInA2 => FileInA2 (100%) 
rename FolderA/FileInA3 => FileInA3 (100%) 
rename FolderA/FileInA4 => FileInA4 (100%) 
rename FolderA/FileInA5 => FileInA5 (100%) 
delete mode 100644 FolderB/FileInB1 
delete mode 100644 FolderB/FileInB2 
delete mode 100644 FolderB/FileInB3 
delete mode 100644 FolderB/FileInB4 
delete mode 100644 FolderB/FileInB5 

你不如果您想稍後閱讀這些文件,則必須擔心這些其他文件,其歷史記錄不會丟失。

例如,如果您決定回滾此提交你總是可以做到這一點:

$ git reset --hard @^ 

注意這將如何重新FolderA/FolderB下的FolderB的第二個副本:

.. 
├── FolderA 
│   ├── FolderA 
│   │   ├── FileInA1 
│   │   ├── FileInA2 
│   │   ├── FileInA3 
│   │   ├── FileInA4 
│   │   └── FileInA5 
│   └── FolderB 
│    ├── FileInB1 
│    ├── FileInB2 
│    ├── FileInB3 
│    ├── FileInB4 
│    └── FileInB5 
└── FolderB 
    ├── FileInB1 
    ├── FileInB2 
    ├── FileInB3 
    ├── FileInB4 
    └── FileInB5 
+0

謝謝!我認爲這比這更難。我省略了明顯的答案lol – chestacio

+0

我怎樣才能從git歷史中刪除'文件夾B'和其餘的呢? – chestacio

+0

使用'filter-branch'命令。 'git help filter-branch',或者[本指南](https://help.github.com/articles/removing-sensitive-data-from-a-repository/),或者搜索SO尋找答案。 – eush77