记录 Git & GitHub 一些使用方法
Git 基本操作
SSH key
- 创建 SSH key
1 | ssh-keygen -t rsa -C "812359326@qq.com" |
复制 key 到 Github SSH 设置中
验证连接
1 | ssh -T git@github.com |
配置用户名、email、默认文本编辑器
1 | git config --global user.name "Frank" |
Check config
1 | git config --list |
工作区、暂存库、版本库

进入仓库、初始化
1 | git init |
克隆仓库
1 | git clone git://github.com/CS0522/GitTest.git ./ideaTest |
Git基本操作命令


提出更改,添加到暂存区
1 | git add ./src/ |
查看仓库当前的状态,显示有变更的文件
1 | git status |
比较文件的暂存区和工作区的差异
1 | git diff |
改动提交到 HEAD 版本库, 但还没到远端仓库
1 | git commit -m "test" |
回退版本,可以指定退回某一次提交的版本
1 | git reset [--soft | --hard | --mixed] [HEAD] |
--soft 参数用于回退到某个版本, 只进行对commit操作的回退,不影响工作区
--hard 参数撤销工作区中所有未提交,将暂存区与工作区都回到上一版本
--mixed 为默认,可以不用带该参数,重置暂存区与上一次的commit保持一致,工作区文件内容保持不变
删除文件
1 | git rm [-- cached] [-f | -r] [file] |
不带参数时,将文件从暂存区和*工作区中删除
-- cached 文件仅从暂存区域移除,工作目录保留
查看历史提交记录
1 | git log |
添加远程仓库
1 | git remote add [alias] [url | server] |
删除远程仓库、重命名远程仓库
1 | git remote rm [name] |
查看当前配置的远程仓库
1 | git remote -v |
把远程仓库master分支下载到本地并存为temp分支
1 | git fetch origin master:temp |
合并本地的temp分支和master分支
1 | git merge temp |
拉取远程代码并合并
1 | git pull <远程主机名> <远程分支名>:<本地分支名> |
推送代码至远程并合并
1 | git push <远程主机名> <本地分支名>:<远程分支名> |
Git分支管理
Git分支
创建分支
1 | git branch [branchname] |
切换分支
1 | git checkout [-b] [branchname] |
-b 表示创建新的分支并切换到该分支下
切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容,所以多分支不需要多个目录
切换远程分支
列出远程所有分支:
1 | git branch -r |
拉取所有信息:
1 | git fetch -a |
切换到远程分支:
1 | git checkout -t origin/<branch_name> |
将temp分支和本地的master分支合并
1 | git merge temp [--allow-unrelated-histories] |
- --allow-unrelated-histories 参数会允许合并无关历史,当远程版本远高于本地版本时,可能需要
Fork后本地项目同步他人更新
1 | ### 添加上游仓库 |
Git可能会出现的问题
鉴权失败
用户名和密码的登录方式失效,需要到 Dev Settings 设置 Token.
每次 pull/push 都要鉴权
1 | git config --global credential.helper store |
无法合并
本地版本太老,先远程下载分支,然后本地合并:
1 | git fetch origin master:temp |
想要忽略某个文件(文件夹)
使用 .gitignore 文件
1 | # 忽略 Holiday Homework |
已经上传至版本库后,想要忽略某个文件(文件夹)
git清除本地缓存(改变成未track状态),然后再提交
1 | git rm -r --cached . |