使用 Git 提交文件的时候,显示新建、删除了很多文件(这些文件这一次根本没有改动到,git status 也没有显示这些文件),我实际只提交了那个圈起来的文件。
各位有谁遇到过这种情况吗,需要怎么解决呢?
1
villivateur 2021-12-24 13:04:51 +08:00 via Android 1
你能把你提交的命令行步骤都贴一下吗?
|
2
xiaomimei 2021-12-24 13:06:59 +08:00 via Android 1
git diff HEAD 看看呢,是不是被改了文件权限之类的
|
3
menghuan 2021-12-24 13:10:17 +08:00 1
盲猜可能文件名大小写问题
|
4
ddllzz OP |
5
ddllzz OP |
6
Trim21 2021-12-24 13:39:15 +08:00 via Android 1
看你截图里这些文件都已经 commit 了,得用 diff HEAD^1 查看修改吧
|
8
xiadong1994 2021-12-24 14:34:36 +08:00 via iPhone 1
@ddllzz #4 status 不是显示了这些文件了猫
|
9
xiadong1994 2021-12-24 14:34:52 +08:00 via iPhone 1
@xiadong1994 吗*
|
10
ddllzz OP @xiadong1994 #8 没有啊,比如 start.sh 就没有
|
11
66beta 2021-12-24 15:11:07 +08:00 1
装个 GUI 吧
|
13
jimliang 2021-12-24 16:23:17 +08:00 1
可以能是什么工具加了 git hook , `cat .git/hooks/pre-commit` 看下提交前有哪些操作
|
14
yanguoyu 2021-12-24 17:01:58 +08:00 1
#13 楼说的很有可能
|
15
anzu 2021-12-24 17:38:41 +08:00 1
IDE 自动加的吧
|
16
Edsie 2021-12-24 17:50:11 +08:00 1
麻烦看一下 ga 的 alias
是不是缩写成了 git add . 后面跟了“点” 导致工作区的改动全部都到了暂存区 |
17
ddllzz OP |
19
catxo 2021-12-24 19:26:20 +08:00 1
也许你需要 git config core.fileMode true ?
|
20
xtinput 2021-12-24 19:43:00 +08:00 1
你搞个 GUI 的 git 软件吧,直观
|
21
yulon 2021-12-24 19:47:13 +08:00 1
盲猜是自动转换换行符,而 diff 是不会考虑换行符的
|
22
guog 2021-12-24 19:57:09 +08:00 via Android 1
这里变更的都是 file mode ,是不是变成可执行文件了,比如 644 到 755
|
23
Mutoo 2021-12-24 20:33:22 +08:00 2
楼上正解,这里 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
xiadong1994 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 目录之后,就一切正常了) ![image.png]( https://s2.loli.net/2021/12/25/SqPIZcWzsAeRUCQ.png) ![image.png]( https://s2.loli.net/2021/12/25/R6Tg8YwPDqf9m5y.png) ![image.png]( https://s2.loli.net/2021/12/25/7BiwdHcMuojWfEK.png) ![image.png]( https://s2.loli.net/2021/12/25/y8zdiKbRMXVt76s.png) 配置如下: ![image.png]( https://s2.loli.net/2021/12/25/tsuOlna1edoWRAI.png) 系统: ![image.png]( https://s2.loli.net/2021/12/25/dCfEgIm7t96UVKb.png) |
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 我没改动,但是提交之后显示删除的。 ![image.png]( https://s2.loli.net/2021/12/25/iUbKQJdHZaz1ARO.png) |
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 单个文件的结果 [![T0xZvt.png]( https://s4.ax1x.com/2021/12/27/T0xZvt.png)]( 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
怕不是你仓库里有大小写文件名?
|