常用的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工作流

 

posted @ 2018-12-17 15:05  U型枕  阅读(300)  评论(0编辑  收藏  举报