基本概念
版本库.git文件 -- 当我们使用git管理文件时,一般它会多出一个.git文件,我们将称为版本库
工作区 -- 本地项目存放文件的位置。
暂存区 -- 顾名思义就是暂时存放文件的地方,是通过git add 命令将工作区的文件添加到缓冲区。
本地仓库 -- 通常情况下,我们使用git commit 命令可以将暂存区的文件添加到本地仓库。
远程仓库 -- 举个例子,当我们使用GItHub托管我们项目时,它就是一个远程仓库。
git文件状态
通过git status
untracked : 在暂存区没有该文件
modified : 修改改文件
staged 使用 git add 暂存
分支管理规范
master分支:
主分支,用于部署生产环境的分支,确保稳定性。
master分支一般由develop以及hotfix分支合并,任何情况下不能直接修改
develop分支:
develop为开发分支,通常情况下,保存最新完成以及bug修复后的代码
开发新功能时,feature分支都是基于develop分支下创建的
feature分支:
开发新功能,基于上以develop为基础创建feature分支
分支命令 : feature/开头的为特性分支,命令规则: feature/user_module 、 feature/cart_module
release分支:
release为预上线分支,发布提测阶段,会release分支代码为基准提测。
比如develop完善后准备上线,就release合并develop,检车下是否有问题,没问题就提测。【这个步骤可略过】
hotfix分支:
线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支。
分支命名:hotfix/开头的为修复分支,他的命名规则与feature分支类似。
小规模流程分支:
简单一点的话,其实可以只需要master 、dev、hotfix就即可。
master作为线上,dev作为开发并且测试环境, hotfix是修改bug/或者开发新功能。
hotfix完成了提交到dev, dev测试环境没问题,再把hotfix提交到master线上去。
新bug或者新需求,再从master中检出分支。
常用命令:
1、初始化新仓库 git init 2、克隆代码 git clone 3、克隆指定分支 git clone -b dev 4、查看状态 git status 5、提交单个文件 git add index.php 6、提交所有文件 git add -A 7、使用通配符提交 git add *.js 8、提交到仓库中 git commit -m '提示信息' 9、提交已经跟踪过的文件,不需要执行add git commit -a -m '提交信息' 10、删除版本库与项目目录中的文件 git rm index.php 11、只删除版本库中文件但保存项目目录中文件 git rm --cached index.php 12、修改最后一次提交 git commit --amend
创建版本库
git clone //克隆远程仓库 git init //初始化本地版本库 git fetch //刷新远程分支(当远程创建,本地还没检索到使用)
配置命令
git config --list //列出当前配置 git config --local --list //列出Repository配置 git config --global --list //列出全局配置 git config --system --list //列出系统配置 /**配置用户信息**/ //全局加global ,项目中配置去掉global git config --global user.email "邮箱" //配置用户邮箱 git config --global user.namel "名字" //配置用户名
alias别名操作
git config --global alias.a add //表示取a别名代表add 操作 git config --global alias.s status //表示取s别名代表status 操作
或者去.gitconfig文件中配置alias取别名
工作区操作
git checkout -- [文件/目录所有内容] //撤销工作区的内容
暂存区操作
git rm --cached xxx.php //暂存区撤销到工作区(针对第一次入暂存区撤回) git reset HEAD xx.php //暂存区撤销到工作区 (针对已提交过commit,第二次后进入暂存区操作)
仓库管理操作
git commit -m '提交' //提交仓库 git commit --amend //提交到当前commit日志 git pull //拉取远程库的内容[默认是推送当前分支同名] git pull origin lmq //拉取远程库的lmq分支内容 git pull origin lmq:lmq //拉取最新远程lmq分支到本地lmq分支 git push //推送内容到远程 [默认是推送当前分支同名] git push -f //强制推送(针对合并的时候) git push origin lmq //推送内容到远程库的lmq分支 git push --set-upstream origin lmq //本地lmq分支关联远程分支并推送 git remote add origin [仓库地址] //添加远程仓库地址(本地关联远程) git remote -v //查看远程库 git mremote rm origin //删除远程
缓存(存储)区管理
git statsh //当前代码缓存起来 git statsh list //获取所有缓存标识 git stash apply //恢复缓存区内容(缓存区标识存在) git stash drop stash@{0} //删除缓存区某个标识(0-代表第一个) git stash pop (恢复缓存区内容并且删除缓存区)
分支管理
git branch //查看本地分支 git branch -r //查看远程分支 git branch -a //查看本地和远程分支 git checkout <branch-name> //从当前分支,切换到其他分支 git checkout -b <branch-name> //创建并切换新建分支 git branch -d <branch-name> //删除本地分支(本地) git branch -D <branch-name> //强制删除分支(提交记录并没合并过 -d是删除不了 ) git merge <branch-name> //当前分支与指定分支合并 git merge --abort //合并冲突时(merging),取消git合并分支 git branch --merged //查看哪些分支已经合并到当前分支 git branch --no-merged //查看哪些分支没有合并到当前分支 git branch -v //查看各个分支最后一个提交对象信息 git push origin --delete <branch> //删除远程分支 git branch -m <old-name> <new-name> //重命名分支 git checkout -b 本地分支 origin/远程分支 //拉取远程分支并创建本地分支 git rebase <branch-name> //衍合指定分支记录到当前分支(不产生分支合并-推荐用) git rebase --abort //衍合冲突(rebase)的时候,取消衍合
查看历史记录
git log //查看提交的日志 git log -1 //查看最近一次提交 git log -p //查看每一次的变动信息 git log --oneline //查看日志(简短展示) git log --oneline -p //查看文件变动信息(简短展示) git log --name-only //查看哪些文件发生了变化? git log --name-status //查看文件哪些内容弄变化?(add/save) git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset' --abbrev-commit //美化后
版本回滚
--mixed: 暂存区清空,工作区保留 (不删除工作空间改动代码,撤销commit ,并撤销git add 操作)
--soft: 暂存区保留,工作区保留 (不删除工作空间改动代码,撤销commit,不撤销git add)
--hard : 暂存区清空,工作区清空 (删除工作空间改动代码,撤销commit ,撤销git add)
//--hard : 回退全部,--mixed:回退部分,包含HEAD ,index, --soft:只回退HEAD git reset --(soft|mixed|hard) <HEAD ~(num)> | commit ID git reset --hard HEAD^ 回退到上个版本 git reset HEAD~1 //撤销前一次的操作 git reset --hard HEAD~3 //回退到前3次提交之前,以此类推,回退到n次提交之前 git reset --hard commitId //退到/进到,指定commit ,使用这个,需要强推远程 git push origin HEAD --force git revert HEAD // 撤销前一次 commit git revert HEAD^ //撤销前前一次 commit git revert commitId //撤销指定的版本,撤销也会作为一次提交进行保存 git reflog //查看你每一次对仓库的操作
revert与reset不同 revert不会舍弃原来的提交记录,而是生成了一次新的提交。
reset是撤回到某个指定的版本,而revert则是将某个指定的版本撤销,也就是撤回到指定版本之前的一个版本上。
标签管理
git tag //列出本地所有标签 git tag <tag-name> //基于最新提交创建标签 git tag -d <tag-name> //删除标签
其他命令
//生成zip压缩包 git archive master --prefix='lmq' --forma=zip > lmq.zip //压缩master分支的内容
问题汇总:
问题1:Ping 请求找不到主机 github.com。请检查该名称,然后重试。
获取Github地址 : 访问 http://github.com.ipaddress.com/#ipinfo,
记下IP地址,有多个IP的话,随便选一个IP就好了。然后添加到host
问题2: OpenSSL SSL_read: Connection was reset, errno 10054
$ git config --global http.sslVerify "false"
参考:
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn