git、github使用过程中记录的一些笔记,遇到的问题及其解决办法。
1、创建SSH密匙
这步工作应该是最麻烦的吧。回到桌面,打开git bash,输入以下命令。
ssh-keygen -C 'your@email.address' -t rsa
确认使用默认路径,然后输入两次你要是用的密码就行(一般直接敲几个回车不使用密码)。
2、提交密匙
现在又要回到github的页面上,在右上方工具栏里找到Account Settings。在这个页面上有一个SSH Public Keys标签,选择Add another public key。Title随便取,Key是一段东西。
找到刚才创建密匙的那个目录下(默认是C:\Documents and Settings\你的windows用户名.ssh,OSX是~/.ssh)找到id_rsa.pub文件,把它打开可以看到一堆文字,拷贝下来黏贴到github页面key的空白处。然后点击Apply确认。
3、测试链接
ssh -v git@github.com
会要求输入你刚才设置的密码,如果成功的话可以看到类似下面的成功的提示信息。
1
2
3
4
5
6
Hi wuhuanhost! You' ve successfully authenticated, but GitHub does not provide bash access.
debug1: channel 0: free: client-session, nchannels 1
Connection to github.com closed.
Transferred: sent 3648, received 2064 bytes, in 0.6 seconds
Bytes per second: sent 5703.0, received 3226.7
debug1: Exit status 1
4、创建一个新仓库
先在github上创建并写好相关名字,描述。
1
2
3
4
5
6
$ cd ~/thinkblog //到thinkblog目录
$ git init //初始化
$ git add . //把所有文件加入到索引(不想把所有文件加入,可以用gitignore或add 具体文件)
$ git commit //提交到本地仓库,然后会填写更新日志( -m “更新日志”也可)
$ git remote add origin git@github.com:wuhuanhost/demo.git //增加到remote
$ git push origin master //push到github上
5、更新项目
新加了文件
1
2
3
4
$ cd ~/demo
$ git add . //这样可以自动判断新加了哪些文件,或者手动加入文件名字
$ git commit //提交到本地仓库
$ git push origin master //不是新创建的,不用再add 到remote上了
修改和删除文件
1
2
3
$ cd ~/demo
$ git commit -a //记录删除或修改了哪些文件
$ git push origin master //提交到github
6、忽略一些文件
1
2
3
$ cd ~/demo
$ vim .gitignore //把文件类型加入到.gitignore中,保存
然后就可以git add . 能自动过滤这种文件
7、clone代码到本地
1
$ git clone git@github.com:wuhuanhost/demo.git
8、撤销
9、删除
10、把代码更新到本地
方法一
1
$ git pull origin master
方法二 (推荐)
1
2
3
$ git fetch origin master # 获取远程最新版本到本地
$ git log -p master.. origin/master # 查看远程分支和本地分支的差别
$ git merge origin/master # 合并远程分支到本地分支
方法三 (推荐)
1
2
3
$ git fetch origin master:tmp # 获取远程分支到本地
$ git diff tmp # 比较差异
$ git merge tmp # 合并
11、文件恢复
恢复单个被删除的文件
1
$ git checkout [ 单个文件的名称]
恢复所有被删除的文件
1
$ git ls-files -d | xargs -i git checkout {}
12、提交到多个origin
1
$ git remote set-url --add origin git@github.com:wuhuanhost/demo.git
可以同时将本地仓库提交到多个远程仓库(例如,github、gitlab)
13、提交日志写错了修改方法
14、回滚到某一次提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#1、显示提交日志
$ git log
commit be7cf8bc8f497964db355b07a5e68c7ff98f7d0b ( HEAD -> master, origin/master, origin/HEAD)
Merge: 979ced9 df49089
Author: wuhuanhost <wuhuanhost@163.com>
Date: Thu Nov 8 09:28:42 2018 +0800
测试提交2
commit 979ced92594b3027377310b161c688e57320960d
Author: wuhuanhost <wuhuanhost@163.com>
Date: Thu Nov 8 09:24:45 2018 +0800
测试提交1
#2、回退操作,例如我们回退到**测试提交1**这个版本,使用如下命令
$ git reset —hard 979ced92594b3027377310b161c688e57320960d
## 979ced92594b3027377310b161c688e57320960d 字符串就是每次提交的唯一id,上一步中的commit字段
#3、强制更新到远程仓库(不推荐)
$ git push -f origin master
注:回退到测试提交1 之后会覆盖本地测试提交1 之后提交的内容,所以使用回退操作需谨慎,必要时候使用一个零时新分支来做回退操作。
15、新建分支和切换
1
2
3
4
# 创建新的分支
$ git branch 分支名称
# 切换到新分支
$ git checkout 分支名称
或者
16、分支合并
1
2
3
4
# 首先切换到主分支
$ git checkout master
# 将新分支合并到主分支,合并时候有冲突先解决冲突然后再合并
$ git merge 分支名称
常见错误解决方法
1、$ git remote add origin git@github.com:wuhuanhost/demo.git
错误提示:fatal: remote origin already exists.
解决办法:$ git remote rm origin
然后在执行:$ git remote add origin git@github.com:wuhuanhost/demo.git
就不会报错误了
2、$ git push origin master
错误提示:error:failed to push som refs to
解决办法:$ git pull origin master
//先把远程服务器github上面的文件拉先来,再push 上去。
本人遇到的还有一个错误就是,工程传进github 了可是里头缺少文件,
解决方法 $git add .
(注意一点)表示添加所有文件,
3、错误提示:** The authenticity of host 192.168.0.xxx can’t be established.**
解决办法: $ ssh -o StrictHostKeyChecking=no 192.168.0.xxx
附录
git命令大全,图片来源于网络