常用的Git命令
提交规范
- feat: 新功能
- fix: 修复问题
- docs: 文档更新
- style: 代码格式(不影响代码运行的变动)
- refactor: 代码重构(既不是修复bug也不是添加新功能的代码更改)
- perf: 性能优化
- test: 添加测试或更新测试
- build: 构建系统或外部依赖项的更改(如webpack,npm)
- ci: 持续集成相关的变动
- chore: 其他不修改 src 或测试文件的更改
- revert: 回滚某次提交
基础操作
git add . // 将文件添加到缓存区 git status // 查看状态 git commit -m "注释内容" // 将暂存区文件提交至版本库 git log // 查看近期提交状态 git branch // 查看分支 git branch dev // 新建 dev 分支 git checkout dev // 切换到 dev 分支 git push -u origin 分支名称 // 第一次提交分支(推送到云端origin仓库中) 注意:必须切换到此子分支下才能提交!!!-u就表示第一次, git merge 分支名称 // 必须先切换到主分支!!!然后在合并分支 # 如果不下心在master分支上写了代码,直接git checkout -b test 就能将修改的文件分配到test分支上,然后在 git add 等操作
日志
git log // 查看历史记录 git log -p // 查看详细历史 git log --stat // 查看简要统计
git show // 查看当前的 commit 的改动内容 git show comiitID // 查看某个具体的 commit 的改动内容 git show comiitID a\b.txt // 看指定 commit 中的指定文件
git diff // 比对工作目录和暂存区 git diff --staged // 比对暂存区和上一条提交 git diff HEAD // 比对工作目录和上一条提交 git reflog // 查看记录的每一条指令
clone分支
# 切换到 dev 分支 git checkout dev # 创建并立即切换到dev子分支 git checkout -b dev # 查看所有本地仓库分支和远程分支 git branch -al # 检出远程的demo分支到本地 git checkout -b 本地demo分支 origin/远端demo分支 # clone 远端某分支 git clone -b yourBranch https:.../branch
推送分支
# 提交本地分支到远程分支
git push origin 本地分支:远程分支
# 推送本地的空分支(冒号前面的分支)到远程origin的demo(冒号后面的分支)(没有会自动创建)
git push origin demo:demo
删除分支
# 删除本地的bug分支 git branch -d bug # 删除远程分支demo git push origin --delete demo
同步本地和远端的分支
# 查看本地分支和追踪情况
git remote show origin
# 同步删除分支
git remote prune origin
git强制覆盖
git fetch --all
git reset --hard origin/master
git pull
暂存
临时需要打包,暂时将本地更改推到暂存区,打包完成后恢复之前的本地更改
变基
rebase——在新位置重新提交,展开来说就是,把你指定的 commit 以及它所在的 commit 串,以指定的目 标 commit 为基础,依次重新提交一次。
git checkout branch1
git rebase master
另外,在 rebase 之后,记得切回 master 再 merge 一下,把 master 移到最新的 commit :
git checkout master git merge branch1 // 重要的!! git rebase --help // 查看帮助,里面有一张图
多次commit未push
git add a.txt // 更新一个文件内容 git commit // commit 到暂存区,没有push // 重新编辑 a.txt git add a.txt // 更新一个文件内容 git commit --amend // 该命令并不会再生成一个commit,而是在之前的commit修改
amend 就是重新修改 commit
删除提交错误的push
错误提交到了版本库,此时无论工作区、暂存区,还是版本库,这三者的内容都是一样的,这个时候,我们必须撤销版本库的修改才能解决问题!
git reset有三个选项,--hard、--mixed、--soft
// 仅仅只是撤销已提交的版本库,不会修改暂存区和工作区 git reset --soft 版本库ID //仅仅只是撤销已提交的版本库和暂存区,不会修改工作区 git reset --mixed 版本库ID //彻底将工作区、暂存区和版本库记录恢复到指定的版本库 git reset --hard 版本库ID
具体步骤:
git log // 查看log日志,复制撤销的commitID git reset --hard commitID // 强制撤销, soft hard mixed 视情况而定 git push origin HEAD --force // 推送到远端
撤销错误添加到暂存区里的文件
# 撤销错误添加到暂存区里的文件 命令行 : git rm --cache 文件名 # 上面代码仅仅删除暂存区的文件而已,不会影响工作区的文件 # 删除暂存区和工作区的文件 命令行: git rm -f 文件名
出错的内容在你自己的 branch,修改已经push了的commit信息注释
- step1:使用【git commit --amend】命令,会进入到vim编辑器。
- step2:输入【i】,即进入编辑模式,此时编辑提交信息。
- step3:编辑好之后,按键【Esc】,输入【:wq】,即保存和退出。
- step4:输入【git push -f】强制提交。
- 操作完之后,再看提交记录,即可看到修改的注释信息。
出错的内容已经合并到 master,恢复一个版本
git revert HEAD^
上面这行代码就会增加一条新的 commit ,它的内容和倒数第二个 commit 是相反的,从而和倒数第二个 commit 相互抵消,达到撤销的效果。
git revert HEAD //撤销最近一次提交 git revert HEAD~1 //撤销上上次的提交,注意:数字从0开始 git revert 0ffaacc //撤销0ffaacc这次提交
git追踪文件夹/文件名称更新
git mv -f oldfolder newfolder git add -u newfolder (-u选项会更新已经追踪的文件和文件夹) git commit -m "changed the foldername whaddup" git push origin yourBranch
git工作流