git
分布式版本控制
本地仓库使用
git仓库
git status
暂存区
git commit -m "提交描述"
git status
工作区
git add hello.php
git仓库操作
理解成一个目录
所有代码都可以被git管理起来
1 进行全局配置
1 git bash here
git config --global user.name "shenjh"
git config --global user.email "itcast.pw"
2 创建仓库
让git管理某个新项目或者已存在项目时候,需要创建仓库。
mkdir pro_git
命令行中进入目录
cd pro_git
仓库初始化
git init
执行之后会在目录下创建".git"文件夹
3 常用指令操作
查看当前状态 git status
添加到缓存区 git add 文件名
语法1 git add 文件名
语法2 git add 文件名1 文件名2
语法3 git add. 将当前目录添加到缓存区
git add readme.txt
git status
提交到版本库 git commit -m "注释内容"
git add index.php
git commit -m "提交index.php文件"
git add .
git commit -m "提交了两个文件"
git版本回退
两个步骤
1 查看版本
git log
git log --pretty=online 显示所有版本号 根据注释判断选择
2 回退操作
git reset --hard 提交编号
案例
回到创建好第一个readmee.txt的时候
git log --pretty=online
git reset --hard 89u94h3hkjfkgjh
此时回到最早的版本
回到过去后,想再回到最新的时候
使用指令查看历史版本
git reflog
git reset --hard 9809jj
小结
想回到过去,先得到commit_id;
git reset --hard 进行回退
想回到未来
git reflog 查看历史操作 得到commit id;
写回退指令,commit_id可以不用写全。
远程仓库创建
就是创建仓库
远程仓库使用 https协议 方式一
mkdir shop
cd ./shop
克隆线上仓库到本地
git clone 线上仓库地址
仓库上做对应操作
(提交暂存区,提交本地仓库,提交线上仓库,拉去线上仓库)
进入到目录下
cd shop
git add readme.txt
git commit -m "初始化readme.txt文件"
git push
首次往吸纳上仓库shop提交出现了403 ,因为首次需要鉴权。
需要修改config文件
url=https://bjitcast:Zz9887@github.com/bjitcats/shop.git
git push
没有fatal。说明提交成功。
为了保证线上和本地一致 拉取线上最新版本
git pull
方式二 ssh
1 生成公私钥对指令 安装openssh
将公钥上传到github
ssh-keygen -t rsa -C "itcast@cherish.pw"
//默认存放位置
执行指令后连续回车即可
找到公钥文件并打开
粘贴 保存
之后操作和之前一样
cd ..
mkdir withSSH
cd ./withSSH
git clone git@github.com:bjitcast/shop.git
不需要提交账号密码的鉴权方式
git add index2.php
git commit -m "添加"
git push
Git分支操作
git branch 查看分支
当前分支带有*
git checkout -b 创建并切换分支
相当于
git branch 分支 创建分支
git branch dev
加上
git checkout 分支名 切换分支
冲突产生与解决
案例
模拟产生冲突
合并冲突
先git pull
打开冲突文件,解决冲突,
解决方法,和同事商量,代码如何保留,。
再提交商量后的代码。
git add readme.txt
git commit -m "解决了冲突"
git push
冲突原因,上班没有先pull。
了解图形化使用界面
github for desktop
source tree
tortoseGit
svn
忽略文件操作
项目目录下有很多万年不变的文件目录,我们不希望提交到远程仓库,对此使用”忽略文件“
新建一个.gitignore文件
用于声明忽略文件或不忽略文件的规则,对当前目录及其子目录生效,
/mtk/ 过滤整个文件夹
*.zip 过滤所有.zip文件夹
/mtk/do.c 过滤某个具体文件
lindex.php 不过滤某个具体文件
案例
提交到本地和线上
git add .
git commit -m "提交js文件夹"
git push
新增.gitignore文件并添加规则
touch .gitignore
因为该文件没有文件名,在windows目录下无法直接创建,通过命令行touch创建;
/js/
同文件夹下再新增文件,并推送
git add.
git commit -m "推送"
git push
之后在线上看不到