git使用笔记

Dreamer 发布于2018-03-15 收录于 编程手册 约1694字 预计阅读 4 分钟
目录

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、撤销

1
$ git reset

9、删除

1
$ git rm  * // 不是用rm 

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、提交日志写错了修改方法

1
$ git commit --amend  

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 分支名称

或者

1
$ git checkout -b 分支名称

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命令大全,图片来源于网络
git命令大全,图片来源于网络


Dreamer
WRITTEN BY
Dreamer
Web Developer Love Photography and Cooking