常用 git 指令整理 | 您所在的位置:网站首页 › chore是什么意思中文翻译 › 常用 git 指令整理 |
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 实验室设备网 版权所有 |