1.创建git版本库
1、版本库又名仓库,英文名repository,你可以简单理解成一个目录,
2、这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便 任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
3、所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目
4、瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository)
5、细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没 事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
mkdir s15_gitpro #先创建一个项目
cd s15_gitpro/ #切换到这个项目目录
git init #初始化这个
2.工作区、暂存区、代码仓库
1、工作区: 就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。
2、暂存区 : 暂存区就是文件夹 .git中的一个小部分(.git文件夹就是版本库)
3、版本库:工作区有一个隐藏目录.git,这个不属于工作区,这是版本库, 版本库中还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD
4、 把文件添加到版本库分为以下三步:
1)vim Readme #工作区(Working Zone) 比如在mkdir s15_gitpro下执行创建文件命令
2)git add #暂存区(Stage zone)
3)git commit #代码仓库(Repository master) 只有提交到代码库才能被git管理
3.本地git基本命令
1.将文件添加到仓库
git add Readme #指定将Readme文件添加到暂存区
git add . #将当前目录中的所有文件全部添加到暂存区
git status #查看更改了哪些,创建了哪些,哪些没有添加到仓库,哪些添加到了仓库
git status diff readme #查看readme文件具体修改了哪些
git commit -m "commit tag" # git commit告诉Git,把文件提交到仓库-m后面输入的是本次提交的说明(版本名字)
说明:
# 执行git commit 命令时必须配置用户信息
git config --global user.name "Tom Git"
git config --global user.email tom@example.com
2.回滚
git log #查看所有提交到仓库的版本记录: git log -2
git reflog #查看所有操作记录(状态的md5值和改变的值)
git reset --hard d9e0ed0 #回到指定版本(d9e0ed0是创建版本的MD5值得前6位或者7位)
git reset --hard HEAD^ #回到上一个版本
注:这样可以回到第一次提交到仓库的状态,但再使用git log看不到其他几次的md5值了
3.撤销修改
vim Readme #我们在Readme文件中写了一些错误的代码
git add . #然后又一不小心将文件从工作区提交到了 stage区
git reset HEAD Readme #将Readme中刚提交到 stage区 的代码撤回到工作区
git status #查看目前工作区状态
git checkout -- Readme #将Readme在工作区错误的代码丢弃
4.删除操作(两种方法)
- 方法1:这种方法需要执行git add .
rm Readme
git add .
git commit -m "delete file by git rm"
git reset --hard HEAD^
- 方法2:这种方法可以省去执行git add .
git rm Readme
git commit -m "delete file by git rm"
git reset --hard HEAD^
注: 在没有git commit前,使用 git checkout – Readme 可以恢复删除的文件(Readme)
5.强制使用master覆盖本地代码
$ git fetch --all
$ git reset --hard origin/master
$ git pull
注:git更新被驳回问题
1. git pull origin master --allow-unrelated-histories
2.git pull origin master
3.git init
4.git remote add origin ssh://git@git.limikeji.com:10022/yanhui/webweb.git (可忽略)
5.git add .
6.git commit -m 'testst'
7.git push -u origin master
git分支管理(创建与合并)
1.分支管理的作用
1、假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码
还没写完,不完整的代码库会导致别人不能干活了
2、如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
3、现在有了分支,你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作
4、而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,
又不影响别人工作
5、 其他版本控制系统如SVN等都有分支管理,但是用过之后你会发现,这些版本控制系统创建和切换分支比蜗
牛还慢,简直让人无法忍受,结果分支功能成了摆设,大家都不去用
6、 但Git的分支是与众不同的,无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本库是1
个文件还是1万个文件
2.分支管理----创建分支
git branch #查看现有分支
git checkout -b dev #创建并切换到分支dev, -b参数指切换dev分支
git checkout master #从dev分支切换到master
git branch -D bug-101 #删除本地分支bug-101
此时对项目进行修改
git add . #提交到舞台区
git commit -m "update readme" #提交到仓库
git push origin dev #将跟新内容提交到分支dev中而不是master中
3.如何将分支dev中的代码合并到主分支master中
git checkout master #从dev分支切换到master
git pull #将master上的项目下载到本地
git merge dev #在master上执行这条命令,试图合并master和dev(报错,master更新了)
vim Readme #将不一致的地方手动合并
git add .
git push origin master #手动合并后就可以将dev分支上修改的东西上传到GitHub的master中了
git log –graph #查看从什么地方出现的分支
4.分支取名规范
1、方法1: 使用人名作为分支名(传统开发每个人负责一个功能模块)
2、方法2: 根据功能模块设置分支名(如: feature-100 hotfix-99)
5.全局dev分支(相当于上生产环境前的测试分支)
1、master是不能再上面开发的(master必须是一个稳定版本)
2、所以会有一个全局dev分支,这样就有三种,master,dev,和每个人自己的分支
3、只有在全局dev中没问题后才会真正pull到master中
bug分支(git stash)
1.git stash 使用场景
1、当正在其它分支写代码时突然有一个在master上发现一个bug需要立刻修改
2、这时当然你可以将正在修改的内容先提交到自己的分支中再切换到bug分支,但比较麻烦
3、这里就可以执行git stash 命令可以将现在这个状态临时保存起来
2.git stash使用
1、在dev工作区正在写东西,突然有个bug需要立刻修改
vim Readme #突然出现了一个bug
git stash #将dev中未保存的文件放到一个临时区(以免带到了bug分支中)
2、切换到bug-100分支,修复bug,并提交到本地仓库
git checkout -b bug-100 #创建并切换到bug-100分支
vim Readme #在bug-100分支中修复bug
git add . #将修改内容保存到bug-100分支的舞台区
git commit -m 'commit-100-bug' #提交到仓库
3、切换到master合并bug-100并提交到GitHub
git checkout master #切换到master
git merge bug-100 #合并master和bug-100分支
git push origin master #将修改后的内容推送到GitHub上(即可更新master)
4、再次切换到dev分支,恢复以前的状态
git checkout dev #再次切换到dev分支
git status #dev分支的工作区没有东西
more Readme #发现以前在dev工作区正在修改未提交到本地仓库的东西没有了
git stash list #查看使用git stash 临时保存的文件
git stash apply #恢复上次使用git stash 临时保存的文件
git status #可以看到又回到了,切换到bug-100分支前的修改状态了
5、git stash的其他操作
git stash drop #删除最久的那个使用git stash 保存的临时状态
git stash apply stash@{0} #指定恢复到那个临时状态
git stash pop #恢复并删除上一个临时状态
注1:git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除
注2:另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。