簡體   English   中英

在本地對文件夾結構進行了更改,如何在 git/github 中准確反映這些?

[英]Made changes to folder structure locally, how to reflect these exactly in git/github?

我有我的 git 存儲庫,最初的文件結構如下:

Folder
 - file1
 - file2
 - file3
 -....
 - file30

這有點難以管理,所以我在本地將結構更改為:

Folder
 Subfolder
   - file1
   - file2
   - file3
   -....
   - file30
 
 Subfolder2
 ...

基本上在我的倉庫中,我做了幾次右鍵單擊 > 新文件夾,然后將所有文件拖到這些新文件夾中。

然后我做了:

git add *
git commit -m "foobar"
git push

但是,當我查看 github 時,我發現我的新文件夾結構很好,但我所有的舊文件也都在那里,所以看起來我只是將我的文件復制並粘貼到他們的新文件夾中,而不是移動它們,這正是我想要的.

Folder
 Subfolder
   - file1
   - file2
   - file3
   -....
   - file30
 
 Subfolder2
 ...

 - file1
 - file2
 - file3
 -....
 - file30

您可以在下面看到我的本地文件結構和我的 github 存儲庫,其中包含所有額外的“松散”文件。

在此處輸入圖像描述

誰能幫我從我的 github 存儲庫中刪除這些“松散”文件?

問題

Git 並沒有像您想象的那樣真正文件或跟蹤目錄,並且文件添加到索引並不一定會刪除丟失的文件,即使假設您實際上移動或刪除了舊文件。 您可以在git status的索引中看到 git 認為已更改的內容。

此外,shell glob *只為您提供當前目錄中與您的 .gitignore 文件中的排除項不匹配的項目。 調用ls *以查看 shell 認為您正在添加到 git 索引中的內容。

解決方案

如果您對整個目錄樹進行了重大更改,則可以更新整個索引,而不是手動更改索引。 例如:

# change to your repo's top-level directory
cd "$(git rev-parse --show-toplevel)"

# add the entire directory tree to the index
git add .

# update all blobs/trees that git is indexing
git commit -a

這應該會導致 git 之前跟蹤的重命名、移動和刪除的文件或目錄被更新。 使用當前命令,您只需使用 shell glob *提交要添加到索引的頂級更改。 這種替代方法將更新您的整個工作樹,同時仍然尊重.gitignore。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM