1
vibbow 2017-01-05 19:11:35 +08:00
目测你用的 Linux/Mac
|
2
kilnyy 2017-01-05 19:12:53 +08:00
看起来像 git add 时候 add 没 add 删除的部分吧?
|
5
sinalvee 2017-01-05 19:14:26 +08:00
感觉你用的是 windows
如果是的话,应该跟 windows 路径大小写不敏感有关 |
6
coolair 2017-01-05 19:24:25 +08:00 via Android
开启 git 大小写敏感设置即可。
|
7
JasonSi 2017-01-05 19:43:41 +08:00
我大致看了一下,我认为是这样的:你改了名字,实际上是相当于你删除了 A 文件,又新建了 B 文件,于是你又 git add .,这导致 git 没有追踪到你 A 文件的删除事件,只认为你新建了 B ,然后 commit push 了,然而此时的远端是认为你有 AB 文件,而本地是只有 B 文件的,所以历史冲突,不能直接 pull 。
解决办法就是 git rm A 或者 git mv A ,其实更方便的方法是换个 IDE 吧。。 因为我之前也遇到这种问题,后来用 Atom 的时候发现直接在 Atom 里删除,重命名他都会帮我在 git 中留下记录。 当然了 Atom 只是个编辑器不算 IDE 。。 |
8
hxsf 2017-01-05 20:02:36 +08:00
很明显 lz 用的 windows , windows 不区分大小写。所以会出现这个问题。
|
9
AlisaDestiny 2017-01-05 22:06:40 +08:00
我的 IDEA 没有出现这种情况啊。
我把 A.java 文件 rename 成 B.java 。然后 git status 显示 delete A.java 和 add B.java 。 |
10
jaysun 2017-01-05 22:09:45 +08:00 via Android
ignorecase=false
|
11
ericgui OP @JasonSi 对,就是这么回事。用 git add . 仅仅记录了增加或修改的文件,要用 git add -A
git add -A = git add . + git add -u http://stackoverflow.com/questions/572549/difference-between-git-add-a-and-git-add 这帖子写的很清楚 还是我对 git 不熟啊 不过,这好好折腾一番,也算熟了,哈哈 |
12
ericgui OP @AlisaDestiny 我用 Hbuiler ,这破 IDE 唯一的好处是写 javascript , html 和 css 的时候比较省事,其他目前没看到什么优势
|
13
ericgui OP @JasonSi 我用 Hbuiler ,这破 IDE 唯一的好处是写 javascript , html 和 css 的时候比较省事,其他目前没看到什么优势
|
14
msg7086 2017-01-06 03:00:24 +08:00
我的经验是,如果一个人用不好 Git 的基本功能,我会塞给他一个好用的 GUI 。
|
15
canfoderiskii 2017-01-06 07:44:32 +08:00 via Android
直接用 GUI 压根不会遇到这种问题
|
17
chuanqirenwu 2017-01-06 10:20:58 +08:00 via iPhone
我的建议是,换个 ide ,我在 pycharm 下执行你描述的操作没有出现任何问题。
|
18
Explorare 2017-01-06 15:13:51 +08:00
@ericgui 实际上 Git v.2.x 中 `git add .`会跟踪删除记录,如下所示:
``` { New folder } » git init /cygdrive/c/Users/Explorare/Desktop/New folder Initialized empty Git repository in /cygdrive/c/Users/Explorare/Desktop/New folder/.git/ { New folder } HEAD » echo Change me > change-me { New folder } HEAD » echo Delete me > delete-me { New folder } HEAD » git add change-me delete-me { New folder } HEAD » git status /cygdrive/c/Users/Explorare/Desktop/New folder On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: change-me new file: delete-me { New folder } HEAD » git commit -m initial [master (root-commit) 4b1ff0d] initial 2 files changed, 2 insertions(+) create mode 100644 change-me create mode 100644 delete-me { New folder } master » echo OK >> change-me { New folder } master » rm delete-me /cygdrive/c/Users/Explorare/Desktop/New folder { New folder } master » echo Add me > add-me { New folder } master » git status /cygdrive/c/Users/Explorare/Desktop/New folder On branch master 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) modified: change-me deleted: delete-me Untracked files: (use "git add <file>..." to include in what will be committed) add-me no changes added to commit (use "git add" and/or "git commit -a") { New folder } master » git add . /cygdrive/c/Users/Explorare/Desktop/New folder { New folder } master » git status /cygdrive/c/Users/Explorare/Desktop/New folder On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: add-me modified: change-me deleted: delete-me { New folder } master » git --version /cygdrive/c/Users/Explorare/Desktop/New folder git version 2.8.3 ``` |
20
ericgui OP |
23
msg7086 2017-01-07 17:06:09 +08:00
@ericgui 可以试一下 SmartGit 。
不一定适合所有人,不过我们团队里大家用了感觉都不错, Git 操作比命令行时候精细了许多。 拿来做复杂的分支 Merge/Rebase 功能也非常舒服,不再像命令行下那样 Rebase 一时爽,○○×××了。 |
24
canfoderiskii 2017-01-07 22:37:48 +08:00 via Android
@ericgui windows 下 tortoisegit 挺好用。 smartgit 也不错,还跨平台
|
25
thecon 2017-01-08 11:14:19 +08:00
不关 IDE 的事吧, windows 的锅
|
26
ericgui OP |