fatal: Authentication failed 的解决方案
https://www.jianshu.com/p/8a7f257e07b8
解决方案很简单: 进入 C:\Users\用户名\.gitconfig 只留下类似以下内容
[user]
name = chencheng
email = 15875658583@163.com
这可能是因为之前使用了 credential.helper 缓存账户密码导致的问题。
但试了上面的方法还不行,就用管理员方式打开命令行,然后运行: git config --system --unset credential.helper
使用 git config --global credential.helper store 的方式永久记住账号密码,只需要输入一次。
1、输入git config --global credential.helper store
2、检查 /home/用户名/.gitconfig 会新增一项 helper = store
git 提交时遇到中文的乱码问题
git config --global core.quotepath false
1、手动处理冲突后,要add + commit才算是解决。
2、add错了的时候,使用git reset HEAD 可以取消所有的add
如何让本地既支持github、又支持gitlab?
参考文章:https://www.jianshu.com/p/f7f4142a1556
假设你的本地 C:\Users\lizhaohong\.ssh\ 已经有了 id_rsa。那我们的思路是:
1、将 id_rsa 改名为 id_rsa_fuck,
2、让github的提交指向这个文件。
方法很简单,只需要在.ssh文件新建一个config文件。
$ touch config
并加入以下代码即可
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_fuck
User 李钊鸿
接着,你就可以生成gitlab的key了。套路和流程跟github几乎一模一样。生成之后,将.pub 上传到gitlab的后台即可。
可以通过这种方法测试是否配置成功:ssh -T git@你的gitlab服务器IP
切记,这种方法只适合SSH方式,HTTP方式好像不行。
新建分支并且提交分支
删除分支使用$ git branch -D fuck
$ git branch god
$ git push origin god
天坑记录:
-2、版本回退
git log
git reset --hard <commit id>
或者
git checkout <commit id>
回滚之后,原来最新的历史会不见 git log ,但可以通过 git reflog
然后又可以使用 reset 和 checkout 回去
-1、git pull origin master 明明没有更新却提示Already up-to-date.
如果你确保线上一定是最新的话,那么可以先撤销本地修改,也就是 git checkout .,然后再执行一遍Pull即可。
0、git Bush应用崩溃If no other git process is currently running, this probably means a git process crashed
如何解决呢? 按照'XXXXXXXXX'里面说的路径找到该文件,删除就可以了
1、fatal: unable to access 'https://github.com/git/git.git/': SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
解决方案: 将git remote 的HTTPS地址 修改为 SSH 地址即可
2、小坑记录:git push -u origin master 报错:
$ git push -u origin master
To https://github.com/dragon8github/es6-Study-Notes.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/dragon8github/es6-Study-Notes.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
解决方法:
使用命令:git pull --rebase origin master 然后再尝试 git push -u origin master
1.查看版本
git --version
2.查看配置
git config --list
3.添加配置
git config --global user.email "928532756@qq.com"
git config --global user.name "dragon8github"
4、删除配置
git config --global --unset http.sslcainfo
6.初始化
git init
7、add(.表示所有),commit 必须先执行add才能执行commit
git add .
git commit -m "this is my our first commit"
9、打印详情
git log
11.可以修改txt文件或者当内容发生改变时会提示红字 modified 标示
新增两个txt文件查看情况,再一次使用git add .提交两个new file再查看status.然后再一次commit -m “two new file”
直到提示nothing to commit, working directory clean.才说明完毕
git status
12.查看更改详情,按下Q退出
git diff
13.在Commit之前,add之后依然可以查看历史
git diff --staged
16、签出(commit之前,add并且改变文本内容之后.还能还原内容)
git checkout -- 123.txt
git checkout -- .
17、reset head(在add之后,版本号会变绿色,而且当查看git status 时,文件名也会变绿色,这时我们反悔了,不想add了可以使用该命令,当然所有的文件名都可以指定“.”)
git reset head <fileName> : 回滚最近一次add操作
git reset –soft <commit id>:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard <commit id>:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
18.回到曾经的版本
git checkout 3cb727798 -- 123.txt
git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
19.使用github(先在github上注册并且创建一个仓库)
git init
git remote add origin https://github.com/dragon8github/learngit.git
git add .
git commit -m "first commit"
git push -u origin master
20.branch分支
git checkout -b dev --创建并且切换到分支
git branch dev --创建分支
git branch --查看分支
git checkout dev --切换分支
git branch -d bug0.0.0.1 --删除分支
git branch -D ffff --强制删除分支
如果要删除github上的分支,需要先删除本地分支,然后再上传一个空分支即可删除: git push origin : dev
21.merge 合并分支(先切换回master,下面的例子就是master和dev分支合并的意思)
git merge dev
22.合并冲突(当主线master和支线Lee都commit了readme的修改时,在进行合并的时候会发生警告。这是理所当然的。)这种合并的冲突可以通过git status和git diff、readme查看冲突的内容。将冲突的内容更改(Add+commit)之后再合并(或者直接删除掉某一个分支的readme再合并)就正常了.用git log --graph
命令可以看到分支合并图。
<<<<<<<
=======
>>>>>>>
23.有痕合并(方式和22雷同。但是合并和查询时多了一些参数)
git merge --no-ff -m "noff" dev
git log --graph --pretty=oneline --abbrev-commit
24、储存进度(往往开发到一半,临时有一个新的bug需要处理。这时,当前的分支(dev)需要先存档,然后切换到bug分支处理完成之后。再读档dev)
git stash list
git stash apply --读档
git stash pop --读档并且删除
25、push代码到github上
git remote rm origin
git remote add origin https://github.com/dragon8github/HuaHua.git
26、设置SSH
如果我要存储两个ssh(公司gitlab的shh和自己github的ssh)应该怎么办?:http://www.jianshu.com/p/f7f4142a1556
如果使用码云则参考这个:http://git.mydoc.io/?t=154712
1、进入C:\Users\Administrator\.ssh 先清空原本的公私钥
2、下载git并且进入到类似D:\Git\usr\bin目录中
3、ssh-keygen -t rsa -C "928532756@qq.com" --连续按三下空格
4、将C:\Users\Administrator\.ssh 中的id_rsa.pub上传到github上
5、ssh -T git@github.com --注意,这里真的是git@github.com,不需要更改其他
6、当出现Are you sure you want to continue connecting (yes/no)? 的时候,请手动输入yes
设置成功之后,所有的remote add 的 路径全部要改为ssh如:git@github.com:dragon8github/backbone.git
之后push的时候就不会询问密码和账号了,生成完成之后,进入C:\Users\Administrator\.ssh 查看
如果你是mac用户:
第1、2步其实可有可无吧
第3步生成代码为:$ ssh-keygen -t rsa -C "928532756@qq.com"
第4步生成后的秘钥放在: $ cd ~/.ssh
其他基本一样。
27.下载最新github项目
clone克隆项目(下载代码和分支)
pull是下载并且合并不同版本的代码,如果文件夹初始化git.init,那么效果和clone一致
git pull origin master
git reset --merge --如果发现和本地太多冲突,则可以回复
28.合并冲突fetch
#下载最新版本,但不合并
git fetch origin master
#比对本地的master版本和服务器上的master的不同
git diff master origin/master
#无冲突情况下直接合并
git merge origin/master
#冲突情况下,分两种模式解决
git checkout --ours 文件名 #以我为主
git checkout --theris 文件名 #以服务器为主
#设置完模式后,之后再add 和 commit 、 push即可
29、git忽略上传
在根目录新建.gitignore文件,内容示例
/node_modules/
/dist/
30、gitlab 默认创建的分支,master是不允许除了创建者以外的提交的,需要设置一下
Setting -> Repository -> Protected Branches(Expand)
点击 【Unprotect】就好了