在“git rm”之后,当同事拉动时,为什么该文件仍然存在?

时间:2009-10-13 12:41:16

标签: git

我想要删除项目中的文件,我希望删除该文件,以便其他人在项目工作时也可以使用该文件。

当我们开始时,所有同事在他们的树中都有一个文件“testfile”,并且在同一个分支上。

如果我删除文件:

%git rm testfile
%git commit -a
%git push

然后我的同事拉了这个提交:

%git pull
%ls testfile
testfile的

为什么这个文件仍在这里,我该怎么做才能摆脱它。死!

2 个答案:

答案 0 :(得分:9)

我必须说'它对我有用'。我认为您需要发布有关您的设置,确切用法以及您获得的任何输出或错误消息的更多详细信息,因为它应该有效。

$ git --git-dir=common.git init --bare
Initialized empty Git repository in /rmtest/common.git/

$ git clone common.git a
Initialized empty Git repository in /rmtest/a/.git/
warning: You appear to have cloned an empty repository.

$ git clone common.git b
Initialized empty Git repository in /rmtest/b/.git/
warning: You appear to have cloned an empty repository.

$ cd a
$ touch testfile
$ git add testfile
$ git commit -m initial
[master (root-commit) be09b47] initial
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 testfile

$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 213 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /rmtest/common.git
 * [new branch]      master -> master

$ cd ../b
$ git pull
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /rmtest/common
 * [new branch]      master     -> origin/master

$ git rm testfile
rm 'testfile'

$ git commit -m "removed testfile"
[master 53b13de] removed testfile
 0 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 testfile

$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (2/2), 202 bytes, done.
Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
To /rmtest/common.git
   be09b47..53b13de  master -> master

$ cd ../a
$ git pull
remote: Counting objects: 3, done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From /rmtest/common
   be09b47..53b13de  master     -> origin/master
Updating be09b47..53b13de
Fast forward
 0 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 testfile

$ ls
.git/

答案 1 :(得分:2)

在处理错误的分支时,我有相同的行为。一定要把你的同事拉到同一个分支。 尝试“git branch -a”来显示本地和远程分支,最终删除错误的(远程或本地)分支(git branch -r -d用于删除远程分支)。

如果没有任何帮助而您找不到解决方案,请从您(或您的同事)工作存储库中克隆一个新存储库并再次测试它。