1. clone
// 克隆仓库
git clone [URL];
2. status
// 查看文件状态
git status;
3. 添加/移除文件
// 添加
git add [FILE];
// 移除
git rm [FILE];
// 移除(只移除版本控制,不删除文件)
git rm --cached -r [FILE];
// 恢复操作(回滚)
git reset HEAD [FILE];
// 开启不更新远程修改,不提交本地修改(关闭git跟踪)
git update-index --assume-unchanged [FILE];
// 关闭不更新远程修改,不提交本地修改(开启git跟踪)
git update-index --no-assume-unchanged [FILE];
// 开启只更新远程修改,不提交本地修改
git update-index --skip-worktree [FILE];
// 关闭只更新远程修改,不提交本地修改
git update-index --no-skip-worktree [FILE];
4. git使用
// 提交
git commit;
// 加备注提交
git commit -m ["COMMENT"];
// 获取最新版本
git pull;
// 更新服务器最新版本
git push;
5. 分支
// 查看当前所有分支及所在分支(*)
git branch;
// 创建分支(以当前分支为基准)
git branch [BRANCH];
// 创建分支,并切换到新分支
git checkout -b [BRANCH];
// 切换分支
git checkout [BRANCH];
// 删除分支
git branch -d [BRANCH];
// 删除远程分支
git push origin --delete [REMOTE_BRANCH];
// 合并分支(将某分支合并到当前分支)
git merge [BRANCH];
// 把当前修改暂存到暂存区
git stash;
// 把当前修改暂存到暂存区(加注释)
git stash save ["COMMENT"];
// 查看当前所有暂存记录
git stash list;
// 取出并删除最近一条暂存记录
git stash pop;
// 取出最近一条暂存记录
git stash apply;
// 移除暂存记录
git stash drop [STASH];
// 清空暂存记录
git stash clear;
6. 标签
// 查看已有标签
git tag;
// 创建标签
git tag [TAG];
// 删除标签
git tag -d [TAG];
// 查看此版本所有的修改内容
git show [TAG];
7. 覆盖本地代码操作
> 将'Local origin/master'库(本地版本)覆盖为与'Remote origin/master'库(远程版本)一致
git fetch --all;
> 将本地代码重置为与'Local origin/master'库(本地版本)
git reset --hard origin/master;
> 更新
git pull;
8. 合并多个commit
> 查看commit记录
git log;
> 根据输入的'commit hash'合并(不包含'START_COMMIT',包含'END_COMMIT',不输入'END_COMMIT'时合并到最后)
git rebase -i [START_COMMIT] [END_COMMIT];
> 编辑指令:
p, pick: 保留该commit;
r, reword: 保留该commit, 但是需要修改该commit的注释;
e, edit: 保留该commit, 但是需要修改该commit;
s, squash: 将该commit和前一个commit合并;
f, fixup: 将该commit和前一个commit合并, 但不保留该commit的注释;
x, exec: 执行shell命令;
d, drop: 丢弃该commit;
> 合并注释信息
9. cherry-pick
// 将某分支的某次提交合并到当前分支
git cherry-pick [COMMIT];
// 将某分支的最近一次提交合并到当前分支
git cherry-pick [BRANCH];
// 将多个提交合并到当前分支
git cherry-pick [COMMIT1] [COMMIT2];
/* 将两个提交之间的多个提交合并到当前分支(不包含'START_COMMIT',包含'END_COMMIT',不输入'END_COMMIT'时合并到最后,'START_COMMIT'必须早于'END_COMMIT',否则命令无效,不报错) */
git cherry-pick [START_COMMIT]..[END_COMMIT];
yoojyn - 博客园