Config

1
2
3
4
git config --global user.name "name"
git config --global user.email "email"
# 查看
git config --global --list

init

1
git init

clone

1
git clone <repository-url>

add

1
2
3
4

git add <file-name>
# 添加所有更改文件
git add .

commit

1
git commit -m "message"

合并

1
2
git rebase -i
git merge --squash

stash

1
2
3
4
5
6
7
8
9
10
11
12
13
git stash -m "message"
# 查看
git stash list
# 应用
git stash apply
# 应用并删除最新一个
git stash pop
# 删除最新一个
git stash drop
# 删除指定暂存的记录
$ git stash drop <stash@{0}>
# 清空
git stash clear

查看

1
2
3
4
5
# 状态
git status
# 日志
git log
git show

branch

1
2
3
4
5
6
7
8
9
10
# 创建
git branch <branch-name>
# 切换
git checkout <branch-name>
# 创建并切换
git checkout -b <branch-name>
# 删除,-D 强制删除
git branch -d <branch-name>
# 删除远端
git push origin --delete <branch-name>

合并分支

命令 合并后的历史记录分支 解决冲突 是否产生新 commit
git merge 保留两条并行的线 会自动解决一些冲突
git rebase 变基 合并为一条线,更整洁 需要自己处理所有冲突

rebase 建议用于对自己 commit 的操作,避免修改别人的记录

相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# merge 合并到当前分支
git merge <source-branch>
# 合并冲突时,可以执行这个命令放弃本次 merge
git merge --abort
# 合并 commit,后续还有复杂的操作
git merge --squash

# rebase 将当前分支的所有提交移动到另一个分支的顶部
git rebase <target-branch>
# 解决冲突并继续变基
git add <resolved-file>
git rebase --continue
# 跳过当前冲突的提交并继续变基
git rebase --skip
# 中断或取消变基
git rebase --abort
# 合并 commit,后续还有复杂的操作
git rebase -i
#将特定的提交应用到当前分支
git cherry-pick <commit-hash>

添加远程仓库

1
2

git remote add origin <repository-url>

拉代码

1
2
3
4
# 不自动合并
git fetch
# 自动合并
git pull

push

1
2
3
4
5
6
git push
# 强制推送到远端,可能会覆盖或删除一些 commit
git push -f
# 推送本地分支到远程仓库并绑定
git push --set-upstream origin <your-local-branch>
git push -u origin <your-local-branch>

回滚

1
2
3
4
5
# 删除已有的 commit
git reset --soft <commit-hash>
git reset --hard <commit-hash>
# 保留已有的 commit
git revert <commit-hash>