今天在代码的合并中出现了原本不该出现的错误,这令我非常尴尬!!! 完全不应该出现的错误,然后在懵逼的状态中同事美女同事帮忙搞定的!尴尬倒还好,毕竟我脸皮够厚! 最重要的耽误其他同事的下班时间。毕竟已经很晚了,车有不好叫… 在这里老哥对部门同事道歉了(这算是公开道歉吗… … )!
整理一下今天的低级错误归根就是对git的命令不够熟悉所导致的,也怪我之前公司没有用够git,(小破老的公司,都是一人独立开发的小系统)然后也没有认真的学习git的使用。今天我就整理一下,后续会更新,今天是比较基础的一些操作和命令,还有分享一些git工具。
Git的工作流程
一般的工作流程如下:
- 克隆Git资源作为工作目录
- 在克隆的资源上添加或修改文件
- 如果其他人修改了,可以更新资源
- 在提交前查看修改
- 提交修改
- 在修改完成后,如果发现错误,可以撤回提交并在次修改提交
Git 工作区、暂存区和版本库
基本概念
- 工作区:就是你在电脑上看到的目录
- 暂存区:英文叫stage,或者index。一般存放在“.git”目录下的index文件(.git/index)中。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是git的版本库。
图中左侧为工作区,右侧为版本库。在版本库中标记为“index”的区域是暂存区(stage,index),标记为“master”的是master分支所代表的数目录。
图中可以看出此时“HEAD”实际指向master分支的一个游标。所有图中的命令中出现HEAD的地方可以用master来替换。
图中的objects标识的区域为Git的对象库,实际位于“.git/objects”目录下,里面包含了创建的各种对象及内容。
当对工作区修改(或新增)的文件执行git add
命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作git commit
时,暂存区的目录树写到版本库(对象库)中,master分支会做相应的更新。 即master执行向的目录树就是提交时暂存区的目录树。
当执行git reset HEAD
命令时,暂存区的目录树会被重写,被master分支指向的目录树锁替换,但是工作区不受影响。
当执行git checkout HEAD
或者git checkout head <file>
命令时,会用HEAD指向的master分支中的全部或者部分文件替换暂存区和以及工作区中的文件,这个命令也是极其危险的,因为不但会清除工作区中为提交的改动,也会清除暂存区中未提交的改动。
git 的常用命令
git status 查看修改过得文件
git add -all 全部暂存
git add . 全部暂存
git commit 提交到当前分支
git commit -m 添加user信息 提交并描述修改内容
git pull 下拉
git push 推送
git checkout dev 切换到dev分支
git pull 下拉
git push 推送
git merge my_branch dev合并my_branch分支
git checkout my_branch 切换到my_branch分支
git checkout -b new_branch 创建新的分支 new_branch 并切换到new_branch分支
git branch -d new_breanch 删除new_branch分支