新手在这里。我有两个linux工作站,WS-A和WS-B。
我在WS-A上有一个项目,然后将它推送到bitbucket上的远程仓库。
然后我在WS-B上git clone
,然后由于某些原因我做了一些修改并删除了WS-B上的一些文件,然后又在WS-B上再次推送。
但是我很困惑,现在在WS-A上,当我做git pull
时,删除的文件仍然存在!我该怎么办?我100%确定我希望删除它们。我是此代码的唯一用户。我想只保留一个版本。
答案 0 :(得分:3)
是的,您必须使用git rm
,否则文件已在工作副本上删除,但不会从存储库中删除。 git status
应将文件显示为“已删除”,但不会为提交暂存。 git rm; git commit
和git push
他们,然后git pull
来自另一个框,他们将会离开。
答案 1 :(得分:1)
一个切实的例子应该可以帮助开发人员努力清除已经删除并且已被Git标记为已删除的仓库中的文件。"如果您没有永久删除那些"已删除的"每次执行git status
时,Git都会向您显示这些文件。当有许多"删除"时,很难从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标记为&#34;已删除的文件&#34; (在这种情况下,我使用通配符[*]删除整个目录):
$ 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)最后,当其他用户执行git pull
时,不必要的文件将从其本地人中删除。