一 git基础与安装
git是什么?
git是目前世界上最先进的分布式版本控制系统。
git与个github区别?
git是一个分布式版本控制系统,简单的说就是一个软件,用于记录一个或若干个文件内容的变化,以便将来查阅特定版本修订情况的软件。
GitHub(https://www.github.com)是一个为用户提供Git服务的网站,简单来说就是一个可以放代码的地方(当然不不仅限于放代码)。GitHub除了提供管理Git的Web界面外,还提供了订阅,关注,讨论组,在线编辑器等丰富的功能。GitHub被称之为全球最大基友网站。
GitHub注册?
打开git官网,点击右上角Sing up按钮
接下来会有验证图片
选择免费账户即可
接下来创建账号,验证邮箱
Git安装?
去官网下载Git安装包,得到安装包
双击,点击next
选择软件安装位置(安装位置尽量不要出现中文)
选择需要安装的组件,默认即可
然后继续next,默认即可
至此安装完成。
二 git的使用
1.本地仓库
1.1工作流程
Git本地操作的三个区域:
1.2工作流程
1.2本地仓库
什么是仓库呢?仓库又名版本库,英文名repository,我们可以简单理解为一个目录,用于存放代码的,这个目录里面的所有文件都可以被git管理起来,每个文件的修改删除等操作git都能跟踪到。
1)配置用户名和邮箱
在安装好后首次使用需要先进行全局配置,在桌面空白处右键,点击 Git Bash Here,打开Git命令窗口
2)创建仓库
mkdir pro_git
cd pro_git
3)Git仓库初始化(让git知道,它需要来管理这个目录)
git init
1.3 git添加到文件到仓库的指令
查看当前状态 git status
添加到缓存区 git add 文件名
提交至版本库 git commit -m “注释内容”
1.4 时光穿梭机–版本回退
版本回退分为两部操作:
1)查看版本,确定需要回到的时刻点
git log
git log --pretty=oneline
2)回退操作
git reset --hard 提交编号
注意:在回到过去之后,在想回到之前最新的版本的时候,则需要使用指令去查看历史操作,已得到最新的commit id。
指令:git reflog
小结:
a.要想回到过去,必须先得到commit id,然后通过git reset --hard 进行回退
b.要想回到未来,需要使用git reflog进行历史操作查看,得到最新的commit id
c.在写回退指令的时候commit id可以不用写全,git自动识别,但是也不能写太少,至少需要写前4位字符
2.远程仓库
线上仓库的操作以github为例。
2.1线上仓库创建
首先登陆github网站
线上仓库创建完毕。
2.2两场常规使用方式
2.2.1基于http协议
a.使用clone命令将线上仓库拷贝到本地
git clone 仓库地址
例如我的地址是:
mkdir shop 创建文件
cd shop 进入文件目录
git clone https://github.com/ex-zhanghao3/shop.git 克隆
b.在仓库上做对应的操作(提交暂存区,提交本地仓库,提交线上仓库,拉取线上仓库)
例子:
cd shop 进入目录
git add readme.txt 添加文件到缓存区
git commit -m “备注” 提交到本地仓库
git push 上传到线上仓库
注意:在初次往线上仓库shop提交内容的时候可能会出现403错误,原因是不是任何人都可以往线上仓库提交内容,必须需鉴权。
需修改 .git/config文件
c. 拉去线上仓库
指令:git pull
提醒:在每天工作的第一件事就是先git pull拉取线上最新版本,每天下班前要做的事git push,将本地代码提交到线上仓库。
2.2.2基于ssh协议
该方式 与前面https方式相比,知识影响github对于用户的身份鉴权方式,对于git 的具体操作(如提交本地,添加注释,提交远程操作)没有任何影响
生成公私玥对指令(需先自行安装OpenSSH):ssh-keygen-t rsa -C “注册邮箱”
步骤:
1)生成客户端公私玥文件
2)将公玥上传到github
打开提示:
创建公私玥对文件
打开id_rsa文件,将公玥复制
填写完毕后保存即可。
通过ssh提交示例:
git clone git@github.com:ex-zhanghao3/shop.git
cd shop
git add index.jsp
git commit -m “备注”
git push
2.3分支管理
2.3.1什么是分支?
在开发的时候往往是团队协作,多人进行开发,因此光有一个分支是无法满足多人同时开发的需求的,并且在分支上工作并不影响其他分支的正常使用,会更加安全,git鼓励开发者使用分支完成一些开发任务。
2.3.1分支相关指令?
查看分支:git branch
创建分支:git branch 分支名 (git branch dev)
切换分支:git checkout 分支名 (git checkout dev)
删除分支:git branch -d 分支名 (git branch -d dev)
注意:在删除分支的时候,一定要先退出要删除的分支,然后才能删除。
合并分支:git merge 被合并的分支 (比如在master分支下 git merge dev,可以将dev分支的内容合并到master分支)
注意:当前分支前边有个标记"*"
如果需要线上生效,需要git push才可以。
2.3.4冲突的产生与解决
比如上班前并未进行拉取,直接push,可能会产生冲突。
案例:
注意:此时我本地仓库的内容与线上不一致的
第二天上班的时候,我没有做git pull操作,二是直接修改了本地对应文件的内容
需要在下班的时候将代码修改提交到线上仓库(git push)
提示我们要在git push前先git pull操作,线上的文件并未进行任何改动。
解决冲突:
先git pull
打开冲突文件,解决冲突
解决办法:需要和同事(谁先提交的)进行商量,看代码如何保留,将改好的文件再次提交即可。
重新提交即可。
3.忽略文件
场景:在项目目录下有很多万年不变的文件目录,css js images等,或者还有一些目录即便有改动,我们也不想让其提交到远程仓库的文档,此时我们可以使用"忽略文件"机制来实现需求。
忽略文件需要新建一个名为.gitignore的文件,该文件用于声明忽略文件或不忽略文件的规则,规则对当前目录及其子目录生效。
注意:该文件没有文件名,没办法直接在windows目录下直接创建,可以通过命令Git Bash来touch创建
案例:
再次提交,发现js文件并未提交到线上仓库。