Git常用指令汇总

146 阅读6分钟

汇总工作中常用以及使用频次不高但能有效提高工作效率和体验的指令,以实用为主不涉及底层逻辑和原理

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保存并退出

Snipaste_2023-08-22_22-47-33.png

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]} 查看指定记录中修改了哪些文件内容