本文主要描述 git 配合 github 使用。
首先是下载安装 git 环境,具体过程不必细说,三大操作系统都有对应版本。下面是官网地址:
https://git-scm.com/download/
(1)配置git
a) 产生密钥
[user]$ssh-keygen –t rsa –C 'github注册邮箱地址'
//之后连按两次回车
注释:ssh-keygen之间是没有空格的,其他的之间是有空格的
回车之后,会出现一行,让你输入一个保存密钥的地方,括号里面是它默认的位置,可以在冒号后面自己写一个位置保存。 之后它生成两个一个叫id_rsa,一个叫id_rsa.pub,我这么做了之后,发现生成的密钥目录里少了一个文件known_hosts,如果按照默认的目录的话是有这个文件的,如果没有这个文件,后序出现了问题,因此,建议还是直接用他的默认路径就好,这里就不要自己填路径了,直接回车。
回车之后,会设置密码,我这里没有设置,直接点了回车两次,这样密钥就生成了,可以打开 id_rsa.pub 来查看,我使用的是记事本直接打开的这个文件,里面的所有内容就是这个密钥,一会需要使用的时候,就直接全选复制就可以了。除了邮箱地址,也可以直接cat命令查看。
b) 现在转到github网站上去配置一下ssh key
- 点击箭头指示图标 Account settings,然后点击左侧的SSH Keys,
- 之后点击右侧的 Add SSH Key,这样就会出现添加SSH Key的界面,
- 之后打开刚才生成的那个文件 id_rsa.pub ,全选复制里面的内容到Key这一栏中,点击Add Key按钮完成操作,
注释:这时你填的邮箱会收到一封确认的邮件,不用管它。
c) 验证是否连接github成功
在 bash下输入如下命令:
ssh –T git@github.com
如果你的是出现不是
Hi 某某某! You've successfully authenticated, but GitHub does not provide shell access.
这样的内容,而显示的是
Permission denied (publickey).
类似权限问题。那么你可以检查是否是我上面提到的那种情况,回顾一下生成密钥时操作是否正确、目录下是否有那个known_hosts这个文件。
如果不是操作问题,就可能是这里的采纳答案的问题,解决方法也就是执行一步命令:
[user]$ssh-add
其他问题请上网查询。
f) 现在配置一下用户名和邮箱:
git config –global user.name “github用户名”
git config –global user.email “github主邮箱”
(2)基本使用git
(a) 远端和本地建立repository
在github端创建一个repository,然后在本地进入项目的文件夹内,使用 命令 :
git init
作用:初始化后,在当前目录下会出现一个名为 .git 的目录,使得该文件夹成为git本地仓库
(b) 连接本地和远端的repository
$git remote add origin git@github.com:0lidaxiang/your repository.git
(c)更新本地内容
git pull git@github.com:0lidaxiang/repository名称..git
(d)将本地文件纳入版本控制
即添加到本地暂存区中:
git add .
add后面加了一个点,是想要提交所有文件,如果想提交指定的文件,可以写文件名,执行完增加命令后,要执行提交命令,如下:
git commit –m “v1.0版本”
-m后面跟提示信息,这个提示信息是一定要写的,不仅是规则,同时也方便我们记录我们提交的过程.
(e)提交本地更改到远端
提交完成后,我们就要把它推送到远程仓库上去了,命令如下:
git push git@github.com:0lidaxiang/仓库(repository).git
(3)其他 git 使用
(a) 检查当前暂存区状态
$ git status
正常结果应该显示工作目录相当干净。换句话说,当前没有任何跟踪着的文件,也没有任何文件在上次提交后更改过。
(b)使提交时忽略某些文件
通过更改gitignore文件使得提交时忽略某些文件, gitignore文件类似于:
*.[oa]
*~ # 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件(一般是编译过程的临时文件)
!lib.a # lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
文件 .gitignore 的格式规范如下:
1. 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
2. 可以使用标准的 glob 模式匹配。 ’ * ’ 匹配模式最后跟反斜杠 ’ / ’ 说明要忽略的是目录。
3. 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号 ’ ! ’ 取反。
(c)删除文件
$git rm \*~
(d) clone项目
$git clone git://github.com/schacon/simplegit-progit.git
(e) 查看所有历史
$git log
查看最近的两次更新历史:
$git log -p -2
(f) 撤销操作
$git commit --amend
参考文章
http://www.open-open.com/lib/view/open1328069733264.html
http://www.open-open.com/lib/view/open1423810370232.html