4

新手来了 我有两个 linux 工作站,WS-A 和 WS-B。

我在 WS-A 上有一个项目,然后将其推送到我在 bitbucket 上的远程仓库。

然后我git clone在 WS-B 上进行了一些修改,并由于某些原因删除了 WS-B 上的一些文件,然后在 WS-B 上我再次推送。

但是我很困惑,现在在 WS-A 上,当我做 a 时git pull,删除的文件仍然存在!我该怎么办?我 100% 确定我希望它们被删除。我是此代码的唯一用户。我只想保留一个版本。

4

2 回答 2

3

是的,您必须使用git rm,否则文件已在工作副本中删除,但不会从存储库中删除。 git status应将文件显示为“已删除”,但不会暂存以进行提交。 git rm; git commitgit push他们,然后git pull从另一个盒子里,他们就会消失。

于 2013-05-07T04:50:25.003 回答
2

一个具体的示例应该可以帮助开发人员从已删除的存储库中清理文件,这些文件已被 Git 标记为“已删除”。如果您没有永久删除那些“已删除”的文件,Git 会在您每次执行git status. git status当有许多“已删除”文件挂在周围时,很难读取输出。

1)检查您的回购状态git status

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
    (use "git add/rm <file>..." to update what will be committed)
    (use "git checkout -- <file>..." to discard changes in working directory)
        deleted:    repoDir/subDir/Info.plist
        deleted:    repoDir/subDir/MacOS/CrashLogDemo
        deleted:    repoDir/subDir/PkgInfo...

no changes added to commit (use "git add" and/or "git commit -a")

2)用于git rm永久删除 Git 标记为“已删除”的文件(在这种情况下,我使用通配符 [*] 删除整个目录):

$ git rm repoDir/subDir/*
rm 'repoDir/subDir/Info.plist'
rm 'repoDir/subDir/MacOS/CrashLogDemo'
rm 'repoDir/subDir/PkgInfo'...

3)使用以下注释提交更改git commit -m

$ git commit -m "Removed unncessary files."
[master 9178ad4] Removed unncessary files.
    28 files changed, 2377 deletions(-)
    delete mode 100644 repoDir/subDir/Info.plist
    delete mode 100644 repoDir/subDir/MacOS/CrashLogDemo
    delete mode 100644 repoDir/subDir/PkgInfo...

4) git push对适当的回购/分支的更改:

$ git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 291 bytes | 291.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/accountName/CrashLogDemo.git
    f4716fa..9178ad4  master -> master

5)最后,当其他用户执行 agit pull时,不需要的文件将从他们的本地删除。

于 2018-02-15T17:45:50.760 回答