【发布时间】:2015-07-29 14:19:33
【问题描述】:
我正在尝试学习使用 Git,我有点了解拉和推等的基础知识,但我对删除感到困惑。
这就是我所做的(使用 fortrabbit 和 laravel):
- 创建了一个 Laravel 项目
- 在项目文件夹中运行
git init . - 运行
git remote add origin ... - 运行
git add -A - 运行
git commit -am 'Initial' - 运行
git push -u origin master
现在我的本地副本与远程副本匹配。
我现在想删除一个文件,所以我创建了一个测试文件:
- 运行
touch testfile1.php
我添加文件,提交它然后推送它。现在我在本地和远程都有测试文件。
问题是删除它。这个问题分为两部分:
阅读这个 SO 问题:How can I delete a file from git repo? 它说我应该这样做:
git rm testfile1.phpgit commit -m 'deleted file'git push origin master
但是,这只会删除本地副本。远程副本还在!
如果我从本地副本中删除它,它又如何从远程版本中删除?
我的第二个问题是,如果其他人有副本,他们怎么知道我已经删除了该文件?如果他们将他们的副本推回远程,它不会只是重新添加已删除的文件吗?
感谢任何帮助。
编辑
这是git rm命令的输出,命令后的远程版本:
第一张图片是我在输入git rm testfile1.php 文件。然后它输出rm testfile1.php 并返回到提示符。当我 SSH 回到远程版本时,testfile`.php 仍然存在:/
另一个编辑
我刚刚在看Fortrabbit提供的一些帮助文章,主要是这一篇:http://help.fortrabbit.com/git#toc-behind-the-scenes
它说它会覆盖,但不会删除。
这会是 git 说它是最新的,但文件仍在网络根目录中的原因吗?如果是这样,我要求删除的文件可能出于什么原因不删除?!
【问题讨论】:
-
只要您
git push origin master,就应该在遥控器上删除该文件。您可以将git push命令的输出添加到您的问题中吗?您可能需要先pull,然后再push。 -
"但是这只会删除本地副本。远程副本仍然存在!"很确定那是假的。上述步骤将删除本地和远程副本。请确保您运行的是
gitrm,而不仅仅是rm。 -
对于第二个问题,下次他们拉取时,git 会从他们的工作目录中删除该文件,因此不会神奇地重新添加它。
-
我也认为
git push origin master期间有错误输出。请发布控制台输出。 -
感谢您的 cmets 到目前为止,我已经添加了 2 个命令输出的屏幕截图。
标签: git fortrabbit