【问题标题】:Made changes to folder structure locally, how to reflect these exactly in git/github?在本地对文件夹结构进行了更改,如何在 git/github 中准确反映这些?
【发布时间】:2020-08-01 19:17:29
【问题描述】:

我的 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 commit -a

标签: git github directory


【解决方案1】:

问题

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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多