1、代码写错分支
git add . (把所有改动暂存)
git stash (把暂存的文件提交到git的暂存栈)
git checkout 本该提交代码的分支
git stash pop (将暂存栈中的代码放出来)
2.代码写错分支了,还push提交了怎么办。
git reset HEAD~1 (最近一次提交放回暂存区, 并取消此次提交)
git stash (把暂存的文件提交到git的暂存栈)
git checkout 该提交代码的分支
git stash pop
git add . 再 git commit -m ' '
git pull 拉下代码 再 git push origin branchname
但是呢 该提交的分支是提交好了, 但是那个错的分支依旧有提交的内容 这个时候要再切换回去再提交一次如下:
git checkout branchname 此时是 不该提交的那个分支
git log 看下 因为reset的缘故 本地的提交已经不见了,但远端是存在的
git push origin branchname -f (把不该上去的文件回退掉)
3 error: Your local changes to the following files would be overwritten by merge:.......
Please commit your changes or stash them before you merge.
1 如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
git stash
git pull
git stash pop
然后可以使用git diff -w +文件名 来确认代码自动合并的情况.
2 反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:
git reset --hard
git pull
其中git reset是针对版本,如果想针对文件回退本地修改,使用
error: You have not concluded your merge (MERGE_HEAD exists).
git add . git commit -m 'log'. 再git pull 一下 看是否成功
4记录一次操作git 的愚蠢行为(本地代码只 git add 过,没有 commit ,push 过,然后版本回退 导致本地代码丢失)
这个情况就比较麻烦了, 作死的操作
git fsck --lost-found,然后到.git/lost-found目录下找找看有没有你丢失的文件 实在没有的话本人无解 所以 记住这样一句话 慎重 慎重 慎重 提交 提交 提交
1 Pulling is not possible because you have unmerged files.
在git pull的过程中,如果有冲突,那么除了冲突的文件之外,其它的文件都会做为staged区的文件保存起来
5 Git操作的过程中突然显示Another git process semms to be running in this repository, e.g. an editor opened by ‘git commit’. Please make sure all processes are terminated then try again. If it still fails, a git process remove the file manually to continue…
就是git被另外一个程序占用,重启机器也不能够解决。原因在于Git在使用过程中遭遇了奔溃,部分被上锁资源没有被释放导致的。解决方案:进入项目文件夹下的 .git文件中(显示隐藏文件夹或rm .git/index.lock)删除index.lock文件即可。
6 [!] The file `/Users/xxx/Desktop/GitAPPTest/xxx/xxx.xcodeproj/project.pbxproj` is in a merge conflict.
xxx代表目录 此问题是工程文件冲突,一般都是出现在拉取代码后出现这个情况,找到 project.pbxproj 显示包内容 找到冲突的部分 删除三个 <<< ==== >>>> 三个标示符号 即可解决冲突。
7 fatal: Unable to create '/Users/yyj/Desktop/Git开源管理/gitcc1/xxx/.git/index.lock': File exists.
删除 index.lock 文件即可
8 git add . 如果没有commit 文件都已加到缓存区 这时想反悔 有些文件不想提交
此情况 git reset HEAD +文件名即可。 如果都想撤销add的操作 git reset HEAD 即可
如果已经commit了 :git log 查看提交的id 然后撤销到上个版本 git reset +id 即可 这时查看一下文件状态 git status 即可 这些操作不会导致你的代码丢失。
8.合并后,执行 git pull 或者 push 或者 merge 命令操作的时候,都会出现了以下错误提示
问题根源
问题原因:
问题出现的原因很好发现,因为在错误提示中已经说明,但是因为英文太渣,习惯性忽略。。。这真的不是一个好习惯。
以下是英语渣博主的大概翻译:
当打开 git/MERGE_MSG 文件的时候,发现有 git/MERGE_MSG.swp 文件的存在,并且从时间上来看, MERGE_MSG 比 MERGE_MSG.swp 要更新。
造成这种情况的原因有以下两种可能
(1)另外一个应用正在打开此文件。这种情况,要小心修改,防止出现同一个文件,两种修改版本的出现。完了之后可以选择退出或者更加小心的继续 。
(2)编辑该文件的时候,该文件不正常关闭了。这种情况,如果需要,可以选择 “:recover” or “vim -r project-path/.git/MERGE_MSG” 命令来恢复文件关闭前的修改。
上述两种情况确认完毕后,删除 MERGE_MSG.swp 文件,就可以避免该错误提示。
关于 MERGE_MSG.swp 文件的说明:
.swp 文件和 git 无关,在使用 VIM 开始编辑某文件时,都会产生该文件对应的 .swp 文件。正常的退出,VIM 会自动删除此类型文件,非正常退出情况下, VIM 不会删除 ,.swp 文件会作为文件编辑状态的内容备份。
其实多次打开多次不正常关闭,会一直产生 .sw* 文件
第一步:回到合并前状态
git merge --abort // 中止合并
rm .git/.MERGE_MSG.sw* //删除 vim 非正常关闭产生的文件
第二步:重新合并
合并提交信息页面,使用 :wq! 或者 :q! 正常退出 VIM ,就能正常合并啦。
如果 .git/MERGE_* 文件中 只有 MERGE_MSG 文件的话,不用执行 git merge -abort ,直接删除 .MERGE_MSG.sw* 文件就好。
8.git pull 时提示错误 导致NO scheme
找到 xxxx.xcodeproj 展示包内容 找到 project.pbxproj 编辑器打开 查找冲突 搜索 <<< 或者 === 或者 >>> 找到删除即可