git的使用
代码分支管理规范
- 实际开发中,一个仓库(通常只放一个项目)主要存在两条主分支:master与develop分支。这个两个分支的生命周期是整个项目周期。就是说,自创建出来就不会删除,会随着项目的不断开发不断的往里面添加代码。master分支是创建git仓库时自动生成的,develop分支是从master分支创建的。
- master:这个分支最为稳定,这个分支代表项目处于可发布的状态,所以要在项目全部完成后再往master分支合并
- develop:作为开发的分支,平行于master分支
- Feature branches:这种分支和我们程序员日常开发最为密切,称作功能分支。该分支必须从develop分支创建,完成后合并回develop分支
当需要开发新的功能时,需要从develop新建一个分支,当功能开发完成时,合并该分支到develop
- Release branches:这个分支用来分布新版本,做版本发布的相关操作,例如设置版本号等操作
- Hotfix branches:这个分支主要为修复线上特别紧急的bug准备的。必须从master分支创建,完成后合并回develop与master分支。
综上:首先新建一个项目,项目中默认有master分支,在master分支上创建develop分支,在develop上创建Feature branches用于模块的开发,多个模块可以创建多个Feature branches。开发完成后把Feature branches分支内容合并到develop分支。当所有模块开发完成后,把develop分支内容合并到master分支,等待上线。
具体git操作流程见下面附录
1.上传项目
首先进入要上传项目的文件夹,在文件夹下右键Git Bash,执行以下命令
1. git init
通过git init命令把这个目录变成Git可以管理的仓库
2. git add readme.txt(readme.txt换成自己文件名称)
用命令git add告诉Git,把文件添加到仓库,实际上就是把文件添加到暂存区
3. git commit -m "wrote a readme file"(引号内信息是本次提交的说明)
用命令git commit告诉Git,把文件提交到仓库,实际上就是把暂存区的所有内容提交到当前分支
4. git remote add origin git@github.com:michaelliao/learngit.git(把michaelliao替换成你自己的Git账户名,该命令只在第一次推送新内容的时候执行)
在本地关联远程库
5. git push -u origin master(master为分支名称)
把本地库的内容推送到远程
2.新建分支
1. git checkout -b dev
首先,我们创建名称为分支,然后切换到dev分支
2. git branch
查看当前分支
之后在该分支执行上传项目部分的命令,可上传代码到当前分支
3.合并分支
1. git checkout master
切换回master分支
2. git merge dev
合并dev分支的内容到master分支
3. git branch -d dev
删除dev分支
4.查看修改内容
1. git status
git status命令可以让我们时刻掌握仓库当前的状态,该命令只会告诉你那个文件被修改过,不会告诉你具体修改了什么。
2. git diff readme.txt( readme.txt为文件名)
该命令用来查看,具体修改了文件的哪些内容
3. git log
查看编辑过哪些信息
4. git log --pretty=oneline
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数,这样会输出关键信息
5.版本回退
版本回退功能用于修改过内容,但是没有push到远程
1. git reset --hard HEAD^
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
注意:版本回退后,看不到之前的修改记录
2. git reset --hard 1a4e(1a4e为版本号)
回退到指定版本。只有当git bash窗口没有关闭的时候,可以用版本号找回,版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了
3. git reflog
在Git中,总是有后悔药可以吃的。当git bash 窗口关闭,Git提供了一个命令git reflog用来记录你的每一次命令,可以查看对应操作的版本号
4. git log
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
5. git reflog
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
6. git diff HEAD -- readme.txt(readme.txt为文件名)
命令可以查看工作区和版本库里面最新版本的区别
7. git checkout -- readme.txt
意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作