Part 0. 密钥公钥
- 设置用户名
git config --global user.name "username"
- 设置用户名邮箱
git config --global user.email "email"
- 检查设置
git config --list
- 生成公钥
ssh-keygen -t rsa -C "email"
- 打开
Github
—> Settings
—> SSH and GPG keys
- 添加
New SSH key
Part 1. 首次使用
- 建立git仓库:
git init
- 将项目文件**(全部)**添加至暂存区:
git add .
- 将暂存区文件提交至仓库:
git commit -m "first commit"
- 在 Github 上创建新Repository,得到ssh
- (可跳过)获取远程仓库内容:
git clone [ssh]
- 将本地仓库关联至远程仓库,
rename
一般为origin
,后默认origin
:git remote add [rename] [ssh]
- 同步本地与远程仓库数据:
git pull origin master
- 上传代码至远程仓库:
git push -u origin master
Part 2. 远程地址
- 查看远程地址:
git remote -v
(正常情况下会有两条地址 fetch 和 push ,那么 fetch 表示我们要获取到的地址,push则表示我们要推送的地址) - 添加远程地址:
git remote add origin [ssh]
- 修改远程地址:
git remote set-url origin [ssh]
- 用默认编辑器打开
global
级别的配置文件:git config --global --edit
Part 3. 修改提交
- 初始化,在当前文件夹下建立“.git”文件夹:
git init
- 将文件修改请求提交至暂存区:
git add [filename]
- 删除当前分支上的文件:
git rm test1.txt
- 查看文件修改状态:
git status
- 查看文件是如何被修改的:
git diff [file name]
- 将暂存区的修改提交至当前分支:
git commit -m '注释' [filename]
Part 4. 分支
- 创建分支:
git branch dev
- 切换分支:
git checkout dev
或 git switch dev
- 创建并切换分支:
git checkout -b dev
或 git switch -c dev
- 查看所有分支:
git branch
- 合并分支:
git checkout master
git merge dev
Part 5. 版本回退
git reset --soft HEAD^
git reset --soft
- 回退到某个版本,只回退了
commit
的信息,如果还要提交,直接commit
即可 - 把 HEAD 指针移动到 commit ID 上,暂存区和工作区不变
git reset --mixed
- 默认方式,等同于不带任何参数的
git reset
- 把 HEAD 指针移动到 commit ID 上,暂存区被清空,工作区的修改保留。
git reset --hard
- 彻底回退到某个版本,本地的源码也会变为上一个版本的内容,所有修改的内容都会丢失
- 直接把 HEAD 指针移动到 commit ID 上,无论修改是否被 add 、 commit ,都直接重置(此时暂存区被清空,工作区的修改被清空),所做的修改将全部丢失
- 也就是说,添加
--hard
参数后,会回到上次commit
的状态,也就是说从上次commit
之后的的修改都将被重置,换句话说这些数据都丢失了 - 数据误删可以参考git reset --hard 操作后的数据恢复
- 通过
git log
或git reflog
获取 commit ID
参数 | HEAD | 暂存区 | 工作区 | 原有文件内容变化 |
---|
soft | 是 | 否 | 否 | 修改内容还在,变成未commit的状态 |
mixed(default) | 是 | 是 | 否 | 修改内容还在,变成未add的状态 |
hard | 是 | 是 | 是 | 修改内容丢失 |