常用 git 指令整理 您所在的位置:网站首页 chore是什么意思中文翻译 常用 git 指令整理

常用 git 指令整理

2023-04-22 14:35| 来源: 网络整理| 查看: 265

Git

git 可分为 工作区(working dir) 和 git仓库(repository)

而git仓库又分为 暂存区(staging area) 和 提交区(commits)

git 每次提交追踪文件变化,而不是重复存储,所以占用空间小

branch 是分支

head 是目前所在的位置,detach head 是不从属于提交,独立的头

当签出到分支时,head为分支的最新提交

当签出到某个具体提交时,为 detach head

git指令解析

常用命令汇总

为了使命令更加语义化,更面向某个方面,更多使用新的指令,如

switch 切换分支,创建新分支 restore 恢复工作区文件、暂存区文件 配置、帮助相关 git --version 查看版本 git help [command] 查看某命令的帮助 git config --list 列出所有配置 git config [如user.name] 查看某项配置 常规指令 git init 初始化仓库 git status 查看 git 状态 git log 查看 git 日志 git add . 添加所有文件到暂存区 git commit -m "[message]" 提交,附带提交信息 git commit -am "[message]" 添加所有文件到暂存区并提交 = git add . + git commit -m "" git checkout [commit id | branch name] 签出到某个提交或某个分支 git branch 查看分支 git branch [branch name] 创建分支 若分支名已存在则切换分支 git branch [-d | -D] 删除分支, d 为正常删除,D 为强制删除,无论分支是否被合并 git branch -m [old branch name] [new branch name] 重命名分支 git checkout -b [branch name] 创建分支并立即签出 git switch -c [branch name] 如上 git merge [branch name] 合并某分支 git reflog 更详细的git操作历史 还原文件

还原文件主要是

工作区文件还原为 head 状态 暂存区文件还原到 工作区

管理暂存区文件

git add [file] 添加某文件到暂存区 git ls-files 查看暂存区文件 git rm [file] 从暂存区删除文件

还原不在暂存区的文件

git checkout [file name] 将当前分支的某文件还原为 head 状态 git checkout . 全部文件还原为 head 状态 git restore [file] 用于代替上两行指令 git restore . 等效于 git checkout .

删除未被追踪的文件

git clean [-d | -dn | -df]

-d 删除未被追踪的文件和文件夹 -n 只列出,不删除 -f 强制删除

将暂存区的文件还原到工作区

git reset [file] 将某个暂存区文件移出暂存区,覆盖当前工作区的该文件 git restore --staged [file] 等效于上 回退分支

reset 的本质:移动 head,以及它指向的branch

会删除之前的 commit,推送时可能需要强制推送

git reset --soft head~1 回退分支 1个提交

将提交删除,并保持暂存区的文件状态,分支回退之后的改动合并到回退前的暂存区

git reset head~1 回退分支 1个提交

将提交删除,并删除暂存区的状态,也就是说,分支回退之后的改动全部合并到工作目录,暂存区的文件也会合并至 unstaged

git reset --hard head~1 回退分支 1个提交

删除staged和unstaged的状态,也就是说,回到刚提交回退的那条commit时的状态

revert :反向操作,新建用于回滚的commit

git revert [-n] [commit hash| head~n] 回滚某个commit [-n] 是不提交,保存到 staged

git revert [-n] [commit hash | headn]..[commit hash| headn] 将两个commit 间的所有更改回滚,并且前一项时间更早

如 git revert -n head~2..head 是回退前1、2个更改

暂存更改 stash

使用 git stash

git stash list 列出暂存 git stash 或 git stash push -m "" 压入暂存,可附带信息 git stash apply [index] 应用某个暂存 git stash pop [index] 应用并删除该暂存 git stash drop [index] 删除某个暂存 git stash clear 删除所有暂存 合并分支

fast-forward

如果当前分支和要合并的分支相比,没有额外的提交,那么合并只需要将 要合并的分支的head移至当前分支即可,不需要额外的commit

non fast-forward (recursive merge)

含额外提交,需要创建一个新的 merge commit

git merge --squash [branch name] 将要合并的分支所做的更改合并为一个未提交的commit git merge --no-ff [branchName] 强制 non fast-forward 合并

合并产生冲突

git merge --abort 合并产生冲突时,取消合并 git log --merge 查看两个合并的commit git diff 查看两个commit的不同

变基

git rebase 教程

原理:将要合并的分支中的当前分支更新

当前分支和要合并的分支一般是由同一个commit分出来的(m.2),变基会先应用要合并的分支的每个更改

然后以要合并的分支的最新提交作为基点,逐一应用 当前分支之后所做的更改

只能在本地分支进行这样的操作,因为变基会影响历史记录

git rebase [branch name] 将当前分支变基到某分支 git rebase --continue 继续变基 git rebase --skip 跳过此次rebase操作

使用 rebase 合并多次commit

git rebase -i [commit hash | head~n] 进入交互式变基

然后在编辑界面中保留第一个commit,修改 commit 信息

然后将后方的 commit 合并

pick:保留该commit(缩写:p)

reword:保留该commit,但修改该commit的注释(缩写:r)

edit:保留该commit, 但要停下来修改该提交(不仅仅修改注释)(缩写:e)

squash:将该commit和前一个commit合并(缩写:s)

fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)

exec:执行shell命令(缩写:x)

drop:我要丢弃该commit(缩写:d)

打标签 git tag 列出 tag git tag [tag name] [branch name] 轻量设置tag git tag -a [tag name] [commit id] -m "" 将 commit设为tag,并含tag注释 git show [tag name] 展示tagName对应的commit git checkout [tag name] 签出到某tag,detach head 模式 git tag -d [tagName] 删除tag

标签默认不会传输到remote repo,需要使用

git push [repo name] [tag name] 提交某标签 git push [repo name] --tags 提交所有不存在的标签 远程协作 git remote 列出远程仓库 git ls-remote [repo name] 展示远程仓库的所有分支 git remote add [repo name(别名)] [URL] 添加某个远程库 git remote rm [repo name] 删除某个远程库 git remote show [repo name] 展示远程库详情 git branch -a 列出所有分支,包括 remote tracking branch git branch -r 列出 remote tracking branch git branch [-v -vv] 更详细的分支说明, -v 显示最新提交注释,-vv 显示 local tracking branch 对应的 remote tracking branch git branch --track [branch name] [remote tracking branch name] 创建 local tracking branch,使本地分支追踪某 remote branch git branch --delete --remotes [branch name] 删除 remote tracking branch

有了 local tracking branch 后,该分支就对应某个remote tracking branch 也对应remote branch 就可以直接执行git pull / git push了

git fetch [repo name] 拉取远程仓库,创建 remote tracking branch git clone [URL] 克隆某仓库 git push [repo name] [branch name] 推送 git push -u [repo name] [branch name] 推送,同时将该分支设置为 local tracking branch (set upstream) git push [repoName] --delete [branchName] 删除 remote branch,并删除该 remote tracking branch git push --force 强制推送

当目前所在的分支为local tracking branch 时,可以直接使用

git push git pull 其他 常用 commit message type feat:新特性 fix:修复问题 docs:文档修改 style:代码格式修改 refactor:代码重构 build:构造工具或外部依赖的改动 revert:回退 test:测试用例修改 pref:提高性能的改动 ci:与持续集成服务有关的改动 chore:其他修改,如构建流程、依赖管理


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有