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

你可能感兴趣的:(git使用中各类问题汇总)