git 本地比远程新怎么办

2015-10-22 21:54:06 +08:00
 honmaple
平时都是 git add,git commit,git push,再或是 git status ,今天上 github 看了下才发现删除本地文件时忘记 git rm,导致 github 上有很多兀余文件,总不能一个一个删除,请教应该怎样将远程库的兀余文件删除
ps:难道只能 git rm *,然后再将本地文件 git push
3538 次点击
所在节点    git
11 条回复
cxbig
2015-10-22 22:00:58 +08:00
是的, git rm > git commit > git push
Mr2
2015-10-22 22:01:56 +08:00
force push
loddit
2015-10-22 22:11:30 +08:00
我的建议是首先装一个 branch 是否 dirty 的检测工具,及时了解当前 branch 状态。
另外如果你删除的文件没有在 gitignore 里,那 git status 的时候会就显示出你已经删除的文件。
比如:
```
On branch master
Your branch is ahead of 'origin/master' by 6 commits.
(use "git push" to publish your local commits)
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: test.py

```
这样的信息,这时你可以 commit 带上这个文件,就会在 commit 里把这些文件删除了。
loddit
2015-10-22 22:12:47 +08:00
囧 没有预览,似乎 markdown 语法错了

```
test markdown
```
chairuosen
2015-10-22 22:12:57 +08:00
用 sourceTree 管理
ceyes
2015-10-22 22:45:19 +08:00
git 本地比远程新怎么办 ?
push 上去啊,开发流程不就是如此么。。。

你本地删除了被 git 追踪的文件,此时 git status 肯定不是 clean 的,无法 pull && push ,当然需要 git rm <your files>; git commit ,要明白 git push 的是 commit ,不是文件。所有文件改动都是通过 commit 来进行的。

如果想修整 commit (比如重写、合并、丢弃某些 commit ,或调整 commit 顺序),可以用 rebase ,再 git push --force 。你那想彻底删除文件及 commit 的需求可以通过 rebase 实现 —— 先合并 add file 和 rm file 的 commit ,再丢弃之,但要保证后续 commit 的可以正确的 apply ,取决于你的一个个 commit 是否够独立、逻辑清晰。
lincanbin
2015-10-23 03:17:49 +08:00
用个带 GUI 的 git 客户端吧,不知道为什么很多人明知道有提高效率的工具,却一直不肯用。
fengyqf
2015-10-23 09:37:07 +08:00
是不很明白楼主的意思,是不是这样:
git 跟踪的文件里有个 file.txt ,你在某次提交时,直接在本地磁盘里删除了它,而不是 git rm file.txt ,然后继续提交。
但突然发现 github 上这个文件还在,你想删除了它

如果是,继续看下面:
在本地 git status 时,是不是有
Changes not staged for commit:
.....
deleted: test.py
这样一行,确认一下,这些文件是不是都是需要在远程上删除的,如果是,请运行
git add -u
(或者运行 git add test.py ;注意,你没看错,是 add )
然后这些文件将在下次提交时从 git 仓库里移除; push 后远程仓库上也没有了


(按前面方法, git 历史里还有这个文件,还可以 checkout 出来,如果想从历史里彻底删除,请参看 git pro https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2#%E6%A0%B8%E6%AD%A6%E5%99%A8%E7%BA%A7%E9%80%89%E9%A1%B9%EF%BC%9Afilter-branch
LioMore
2015-10-23 09:51:40 +08:00
@loddit 是单引号,不是这个点
joshz
2015-10-23 12:22:56 +08:00
以前好像碰到同样的问题,搜 SO 解决的
honmaple
2015-10-23 15:11:54 +08:00
不好意思,是我的错,因为我是用框架在外部目录生成文件,然后编辑调试好后复制到本地仓库覆盖原文件,再上传的,没想到有的文件没有被覆盖,也没被删除,留了下来,今天将所有文件夹看了遍后才发现,多谢各位的回答

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/230310

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX