汇总工作中常用以及使用频次不高但能有效提高工作效率和体验的指令,以实用为主不涉及底层逻辑和原理
1. 文件操作
1.1 将文件添加到暂存区
git add .将工作区所有文件添加到暂存区
git add [file_name] [file_name] ...将指定文件添加到暂存区(file_name为文件的完整路径)
1.2 将文件移出暂存区
git reset将所有文件移出暂存区
git reset HEAD [file_name]将指定文件移出暂存区(file_name为文件的完整路径)
1.3 撤销工作区文件的修改
git checkout -- .撤销本地所有文件的修改
git checkout -- [file_name]撤销本地指定文件的修改(file_name为文件的完整路径)
2. 提交(commit)
git commit -m [message]将暂存区所有文件添加到本地仓库(message为提交注释,可选)
git commit [file_name] [file name] ... -m [message]将暂存区指定文件添加到本地仓库
git commit -am [message]将工作区文件直接添加到本地仓库,省略git add . (只能用于提交跟踪过的文件,新文件不生效)
2.1 修改最近一次commit的内容
git commit --amend 将当前文件修改合并到最新的commit,提交时间更新为当前时间
在终端中输入指令后会进入编辑器,操作同Linux系统的vim文本编辑器。
默认状态为普通(查看)模式,输入
i回车进入插入模式,可编辑文本,编辑完成后ESC回到普通模式。输入
:进入指令模式,指令模式下输入w回车保存,输入q回车退出编辑器。可组合使用,如:wq保存并退出
2.1.1 修改文件
- 将文件添加到暂存区
- 输入指令
git commit --amend- 【可选】输入
i进入插入模式,修改commit注释信息,输入完按ESC退出插入模式- 输入
:wq回车结束操作- commit信息更新成功
2.1.2 仅修改commit注释
- 将文件添加到暂存区
- 输入
git commit --amend -m [message]回车- commit注释更新成功
2.2 合并
git merge [branch_name]合并指定分支
git merge --quit取消当前合并操作(可用于合并遇到较多冲突时取消合并)
git cherry-pick [commit_id]按commit合并代码
3. 查看记录
3.1 查看本地操作记录
git reflog显示本地所有操作记录(包含提交/撤回/切换分支/拉取代码...等)
3.2 查看提交记录
git show查看当前分支最后一次记录
git show [commit_id | branch_name]查看指定提交记录
git log显示所有commit日志
以下为git log选项
-p | --path展示每次提交的差异
--stat展示每次提交的简略信息(改动的文件)
-[number]限制展示记录条数
--graph以图形形式展示分支关系
-S [string]只展修改内容包含指定字符串的提交
--pretty=[oneline | short | full | fuller | format]以不同格式展示提交记录
oneline将提交记录放在一行展示
short简要展示
full详细展示
fuller最详细
format以指定格式输出记录 参考链接
--oneline将提交记录放在一行展示(单独使用时展示7位hash值)
[branch_1]..[branch_2]查看在2分支同时没有合并到1分支的提交
4. 推送代码
git push将代码推送到远程仓库
git push -f强制推送,会覆盖远程仓库代码慎用(可用于远程仓库版本回退)
git push origin [branch_name]将当前分支代码推送到指定远程分支
5. 分支操作
git branch [branch_name]创建分支
git checkout -b [branch_name]创建并切换至该分支
git branch查看本地所有分支
git branch -a查看本地和远程所有分支
git branch -r查看所有远程分支
git branch -vv查看本地分支与远程分支对应关系
git branch -d [branch_name]删除本地分支(若删除的分支中存在未合并到其他分支的代码,即删除分支后会丢失代码,则无法直接删除,需要使用强制删除)
git branch -D [branch_name]强制删除本地分支
git push origin --delete [branch_name]删除远程分支
6. 版本控制
6.1 回滚
代码回滚有三种方式:
soft回滚代码,但保留内容至暂存区mixed回滚代码,但保留内容至工作区hard回滚代码,完全删除代码(这是git为数不多的完全丢弃代码的操作慎用) 三种回滚方式的指令完全相同,下面以hard作为示例
git reset --hard HEAD^回滚至上一版本
git reset --hard HEAD^^回滚两个版本
git reset --hard HEAD~[number]回滚N个版本
git reset --hard [commit_id]依据commit回滚指定版本
6.2 撤销
使用git revert [commit]撤销代码,revert并不会删除代码,而是生成新的commit提交记录将改动的代码还原
输入指令后同样会进入编辑器,操作同
git commit --amend
git revert [commit]撤销单个commit
git revert [commit6] [commit5] [commit4] [...]撤销多个commit(严格按照提交顺序排序,最新提交在前)
git revert [commit新]...[commit旧]撤销某几次连续commit注:将A分支的代码合并至B分支,并在B分支revert撤销部分代码后,再次将A合并到B,并不会带过来被撤销的代码,因为B分支已经有这些代码,但是被标记为撤销。需要在B分支将
revert的commit再次revert
7. 暂存
使用git stash暂存代码,此暂存与暂存区的概念不同,是将暂存区、工作区的代码临时存储在本地。可用于需要切换分支但当前分支存在开发中代码的场景,避免提交未完成的业务逻辑使得commit记录混乱。
git stash暂存当前代码
git stash save [message]暂存当前代码并添加注释信息
git stash list查看暂存记录
git stash apply恢复最新一次暂存代码,但保留暂存记录(可重复使用)
git stash apply stash@{[index]}恢复指定的暂存代码,但保留暂存记录(index为记录索引,通过git stash list查看)
git stash pop恢复最新一次提交,并删除记录
git stash pop stash@{[index]}恢复指定的暂存代码,并删除记录
git stash drop stash@{[index]}删除指定的暂存记录
git stash branch [branch_name]依据最新一次提交建立新分支,并删除记录
git stash branch [branch_name] stash@{[index]}依据指定提交记录建立新分支,并删除记录
git stash clear删除所有记录
git stash show stash@{[index]}查看指定记录中修改了哪些文件
git stash show -p stash@{[index]}查看指定记录中修改了哪些文件内容