git使用中各类问题汇总
git 报 HTTP Basic: Access denied
今天pull代码发现git 报错:
git remote: HTTP Basic: Access denied
搜了一下,应该是我改了电脑密码所致。
原因
本地git配置的用户名、密码与gitlabs上注册的用户名、密码不一致。
解决办法也很简单:
我的windows系统:
进入控制面板->用户账号->凭据管理器->windows凭据->普通凭据,在里面找到git,点开编辑密码,更新为最新密码之后就可以正常操作了。
git报 The following untracked working tree files would be overwritten by merge
原因很简单,就是有很多新增的文件没有提交,git是不允许切换分支的,如果这些文件是不需要的,那么可以使用
$ git clean -d -fx
来删除。如果是需要的,那肯定要add 和commit。
git报 The remote end hung up unexpectedly
原因是推送的文件过大。
$ git config http.postBuffer 524288000
用以上命令,把缓存还成500M,即可
git还原单个文件
$ git log
查看文件并记录commit值
$ git checkout [commit 值] [文件]
即可
Git 修改已提交的commit注释
修改最后一次注释
$ git commit --amend
进入vi,修改即可。
修改之前的某次注释
原理:先版本回退到你想修改的某次版本,然后修改当前的commit注释,然后再回到本地最新的版本
Git 修改已提交的commit注释
Git恢复之前版本的两种方法reset、revert
https://blog.csdn.net/yxlshk/article/details/79944535
1.reset,清除了提交历史,慎用!!
$ git reset --hard [commit值]
$ git push -f
push -f 慎用!!
2.revert
相反方向再做一遍,保留了提交历史
$ git revert -n [commit值]
再commit提交即可
GIT撤销commit,并且保留代码修改
这个命令非常实用,可以记一下
$git reset --soft HEAD~1 //回退一个,如果两个commit就写2
其实看一下如下几个命令,就熟悉多了:
--hard 删除工作空间改动代码,撤销commit,撤销git add .
--mixed 不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
--soft 不删除工作空间改动代码,撤销commit,不撤销git add .
git提示“warning: LF will be replaced by CRLF
解决这个问题有一篇文章写得特别好
关于git提示“warning: LF will be replaced by CRLF”终极解答
)
git diff一个小技巧
比较两个分支
$ git diff branchA...branchB
若只想看文件差异,不看文件内容
$ git diff branchA...branchB --stat
# git merge 单个文件
如果只想merge另一分支的某一个文件,不能用merge,只能用checkout
如:两个分支A、B
想要合并A的某个文件file.txt至分支B,如果使用git merge命令,会将整个A分支都合并到B
如果只想合并某一个文件,应该使用git checkout -p(--patch)
git checkout -p A file.txt
分支A可以是远程的分支,也可以是本地分支,远程分支应该写origin/A