初始设置
前提条件 - 电脑安装了 Git - 拥有一个 GitHub 账号
- 设置姓名和邮箱地址 之后可以在 .gitconfig 文件中看到这些信息
1
2git config --global user.name "用户名"
git config --global user.email "邮箱地址"
建议git config --global color.ui auto
配置 SSH key
1
2
3
4
5$ ssh-keygen -t rsa -C "邮箱地址"
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): 按回车
Enter passphrase (empty for no passphrase): 输入密码
Enter same passphrase again: 再次输入密码查看公钥内容
1
2$ cat ~/.ssh/id_rsa.pub
ssh-rsa 公钥内容 邮箱地址连接 GitHub 在 GitHub 的 Setting > SSH Keys 将公钥内容(以 ssh-rsa 打头)添加进去
测试是否已经连接成功
1
2
3$ ssh -T git@github.com
Enter passphrase for key 'C:\Users\WANG/.ssh/id_rsa': 输入密码
Hi You've successfully authenticated, but GitHub does not provide shell access.
Git 基础操作
初始化仓库
1
git init
查看仓库状态
1
git status
向暂存区添加文件 添加单个文件
git add 文件名添加所有文件git add .提交记录
一般 commit 命令在 add 命令后使用,不过如果没有添加新文件只是修改原有文件可以直接用1
git commit -m "提交信息"
1 | git commit -am "提交信息" |
如果想添加详细信息,直接用git commit打开编辑器
查看提交日志 详细版
git log简略版git log --pretty=shortID 版git log --pretty=oneline显示文件最近一次提交和上次提交的改动git log -p (文件名)查看区别 查看工作树和暂存区的差别
git diff查看工作树和最近一次提交的差别git diff HEAD查看远程仓库和本地区别git diff origin/分支名
Git 分支操作
- 显示所有分支 当前所在分支前有*标记
1
git branch
若在 branch 后加 -span 参数,可以同时显示远程仓库状态
- 创建分支或者获取远程分支
1
2创建:git branch -b 分支名
获取:git checkout -b 分支名 origin/分支名 - 切换分支
1 | git checkout 分支名 |
返回上一个分支 1
git checkout -
1 | git checkout -b 分支名 |
- 合并分支进当前分支
1 | git merge --no-ff 分支名 |
如果出现CONFILCT (content): Merge conflict in 文件名 就将该文件修改成你想要的样子,注意不能留下>>>>>>>和<<<<<<<
使用 --no-ff 参数能在历史记录中留下记录
1 | git add 文件名 |
- 删除分支
1 | git branch -D 分支名 |
- 图表形式查看分支
1 | git log --graph |
Git 回溯操作
==暂时==回到以前的提交状态
注意这样操作会从原来分支中分离出来,不能长久停留,之后再用1
git checkout ID前六个字符
git checkout 分支名回到原来分支的最近一次提交状态回溯历史版本
这样做了等于回到了以前的版本,最近的所有提交被放弃1
git reset --hard ID前六个字符
检出所有操作日志
记住1
git reflog
git log只能检出以当前状态为终点的提交日志修改上一次提交的提交信息
1 | git commit --amend |
- 压缩历史
1 | git rebase -i HEAD^数字 |
数字代表显示前多少个记录,把要压缩的记录前的 pick 改成 fixup 之后保存关闭编辑器,这些记录就消失了
推送远程仓库
克隆仓库或者连接远程仓库
1
2克隆:git clone 仓库的链接
连接:git remote add origin ssh链接获取其他分支
1
git checkout -b 分支名 origin/分支名
推送分支
若在 push 后加 -u 参数,会将本地仓库当前分支的上游(upstream)设置成 origin 分支名分支,便于 pull 更新1
git push origin 分支名
更新分支
1 | git pull origin 分支名 |
fork 的仓库更新
- 给原仓库设置名字
1 | git remote add 名字 原仓库地址 |
- 获取最近数据
1 | git fetch 原仓库名 |
- 更新
1 | git merge 原仓库名/master |
这样,当前分支就与原仓库的 master 合并了
GitHub URL 操作
- 查看分支间差别
1 | 仓库链接/分支名...另一分支名 |
- 查看分支几天前的差别
1 | 仓库链接/分支名@{7.day.ago}...分支名 |
可以用 day, week, month, year,区别太大则只会显示最近一部分
- 查看与指定日期的区别
1 | 仓库链接/分支名@{年-月-日}...分支名 |
差别太大无法显示
- 获取 pull request 的 diff 或 patch 文件
1 | pull链接/编号.diff或pull链接/编号.patch |
团队合作
用自己的账号 fork 仓库
clone 自己账号下的仓库
git clone 链接名创建特性分支
git checkout -b 分支名上传特性分支
git push origin 分支名本地修改文件后提交
git commit -am "提交信息"申请合并 Pull Request
发送 Pull Request

2.

3.

4.

5.

接收 Pull Request
clone 原仓库
设置发送者仓库为远程仓库
fetch 发送者的仓库
创建用与检查的分支
把两分支合并
检查是否有问题
删除检查分支