
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 |