使用 Git 提交文件的时候,显示新建、删除了很多文件(这些文件这一次根本没有改动到,git status 也没有显示这些文件),我实际只提交了那个圈起来的文件。
各位有谁遇到过这种情况吗,需要怎么解决呢?
![]() | 1 villivateur 2021-12-24 13:04:51 +08:00 via Android ![]() 你能把你提交的命令行步骤都贴一下吗? |
![]() | 2 xiaomimei 2021-12-24 13:06:59 +08:00 via Android ![]() git diff HEAD 看看呢,是不是被改了文件权限之类的 |
3 menghuan 2021-12-24 13:10:17 +08:00 ![]() 盲猜可能文件名大小写问题 |
4 ddllzz OP |
5 ddllzz OP |
![]() | 6 Trim21 2021-12-24 13:39:15 +08:00 via Android ![]() 看你截图里这些文件都已经 commit 了,得用 diff HEAD^1 查看修改吧 |
9 trn4 2021-12-24 14:34:52 +08:00 via iPhone ![]() @xiadong1994 吗* |
10 ddllzz OP @xiadong1994 #8 没有啊,比如 start.sh 就没有 |
![]() | 11 66beta 2021-12-24 15:11:07 +08:00 ![]() 装个 GUI 吧 |
![]() | 13 jimliang 2021-12-24 16:23:17 +08:00 ![]() 可以能是什么工具加了 git hook , `cat .git/hooks/pre-commit` 看下提交前有哪些操作 |
14 yanguoyu 2021-12-24 17:01:58 +08:00 ![]() #13 楼说的很有可能 |
![]() | 15 anzu 2021-12-24 17:38:41 +08:00 ![]() IDE 自动加的吧 |
![]() | 16 Edsie 2021-12-24 17:50:11 +08:00 ![]() 麻烦看一下 ga 的 alias 是不是缩写成了 git add . 后面跟了“点” 导致工作区的动全部都到了暂存区 |
17 ddllzz OP |
19 catxo 2021-12-24 19:26:20 +08:00 ![]() 也许你需要 git config core.fileMode true ? |
![]() | 20 xtinput 2021-12-24 19:43:00 +08:00 ![]() 你搞个 GUI 的 git 软件吧,直观 |
21 yulon 2021-12-24 19:47:13 +08:00 ![]() 盲猜是自动转换换行符,而 diff 是不会考虑换行符的 |
![]() | 22 guog 2021-12-24 19:57:09 +08:00 via Android ![]() 这里变更的都是 file mode ,是不是变成可执行文件了,比如 644 到 755 |
![]() | 23 Mutoo 2021-12-24 20:33:22 +08:00 ![]() 楼上正解,这里 log 出来的并不是文件的增删,而是文件限权的变更。 git 除了记录文件的修改历史,还会记录一份文件的权限,使得在不同的操作系统上 clone 的时候可以恢复文件的权限,例如让 bin 在 checkout 后可以运行。 https://stackoverflow.com/a/8347325 |
![]() | 24 yikang 2021-12-25 00:29:30 +08:00 |
![]() | 25 sutra 2021-12-25 00:39:14 +08:00 git diff 看看,或者 git show commit-id |
26 trn4 2021-12-25 01:54:27 +08:00 via iPhone 首先你先别用 alias 用原始的 git |
27 jinliming2 2021-12-25 03:27:11 +08:00 @ddllzz #4 看这个截图,你 gst 后的输出就显示了这些文件都发生了变更,运行 git diff 看一下具体的变更内容再做判断。 另外,你 ga 之后应该只添加了一个文件,但是 gcmsg 之后看起来是提交了多个文件。请在 ga 之后 gst 看看是不是只有一个文件变绿了? 另外,我还注意到,你 gst 之后打印的文件列表和 gcmsg 之后打印的文件列表对应不上,确认一下你的 gcmsg 都执行了什么操作? 建议不要使用 alias ,使用原始 git 并禁用 hooks 看看是否还有问题: gst => git status ga xxx => git add xxx gcmsg "xxx" => git commit --no-verify -m "xxx" (加 no-verify 是用来禁用 hooks 的) |
28 ddllzz OP @yikang #24 @sutra #25 @xiadong1994 #26 @jinliming2 #27 不使用 alias ,禁用 hooks 的效果。(感觉不是我提交文件的操作有问题,而是在此之前我的某些不当操作导致的问题,因为我删除项目中的 .git 目录,并替换成线上的 .git 目录之后,就一切正常了)     配置如下:  系统:  |
![]() | 29 sutra 2021-12-25 14:30:39 +08:00 你别光 git status 呀,你倒是 git diff 我看看。也许只是换行符之类的变化。 |
30 ddllzz OP @sutra #29 git diff 那么多我要怎样给你看呢 我撤销有问题的提交之后,执行:git --no-pager diff 最后一次 commit id | grep 文件名的结果如下 mini.php 是有改动的。admin.php 我没改动,但是提交之后显示删除的。  |
![]() | 31 sutra 2021-12-26 23:33:08 +08:00 无语。你不 git diff ,我怎么知道你那发生了什么。 |
![]() | 32 sutra 2021-12-26 23:34:02 +08:00 git diff 某个具体的文件也可以呀,也并不需要 diff all 。 |
![]() | 33 sutra 2021-12-26 23:39:53 +08:00 你这 git diff | grep filename 有啥意义,这输出不是和 git status 内容差不多,只有文件名,没有变化内容。到底发生了什么变化,不还是看不出? |
![]() | 34 tywtyw2002 2021-12-27 05:53:51 +08:00 via iPhone 看起来像是 git hash collision 了吧。 |
35 ddllzz OP @sutra #33 因为我以为:列出文件变化内容,肯定得列出文件名。 这么是 git diff 单个文件的结果 []( https://imgtu.com/i/T0xZvt) |
![]() | 36 sutra 2021-12-27 13:40:42 +08:00 via iPhone 你 diff 个 deleted file ? |
![]() | 37 wangtian2020 2021-12-28 09:20:15 +08:00 用 sourcetree 图形化界面提交 git 就不会出现这种问题 |
38 dengji85 2021-12-28 11:22:02 +08:00 以前有碰到过,有所谓对的多次逆向合并,但没深究 |
![]() | 39 index90 2021-12-28 17:12:06 +08:00 怕不是你仓库里有大小写文件名? |