1 git介绍
git是一个开源的分布式版本控制系统,是敏捷高效的代码管理工具,能实现版本控制,代码合并等。
协同开发,版本管理
# 代码的版本管理工具:
git:分布式管理,每个客户端都能进行版本管理
svn:集中管理,客户端和服务端,只能依附于服务端进行版本管理 Subversion的缩写
# git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
# 安装:win
# 下载:一路下一步安装
rm -rf 文件 (Linux命令)
# rm:删除 -f:强制删除 -rf:强制递归删除 /*:根目录下所有文件
2 git与github、gitee、gitlab有什么区别
Git:是一种版本控制系统,是一个命令,是一种工具。
GitHub:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放,
公有仓库免费,部分私有仓库收费,全球最大的开源代码托管平台
GitLab:是一个基于Git实现的在线代码仓库托管软件,可以通过GitLab自己搭建一个类似于GitHub一样的系统,
用在企业内部网络搭建Git私服,用于企业团队内部协作开发
Gitee:(码云) 是 OSCHINA 推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管,
面向互联网开发,分收费和付费,中国最大的开源代码托管平台
# git:软件,版本管理软件
# github:全球最大的开源代码仓库
-开源的代码,托管在github上,其它人就可以看到,下载,使用
-代码托管平台(托管开源代码,托管不开源代码)
-git远程仓库
# gitee:码云,国产版github,中国人用的多
-小公司,花钱使用gitee的私有仓库
# gitlab:公司内部自己的代码托管平台
3 git 工作流程
# 工作区 暂存区 版本库
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage或index。一般存放在.git目录下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
工作区修改的内容(删除,新增,修改)---》提交到暂存区---》提交到版本库
4 git 基本命令
# 1 初始化
# 创建出一个工作区,在里面操作文件
git init # 初始化当前目录作为Git仓库
git init newrepo # 初始化指定目录作为Git仓库
# 以后这个文件夹就被git管理了,生成一个隐藏的.git文件夹,包含了资源的所有元数据
# 2 查看状态
git status
-红色:表示变化了,没有提交到暂存区
-绿色:表示在暂存区,没有提交到版本库
-如果没有变化,表示所有代码被版本管理了
git status -s # 简短的输出结果
# 3 从工作区,提交到暂存区(**********)
git add s1.py # 只提交s1.py 到暂存区
git add . # 把工作区所有更改都提交到暂存区
# 4 从暂存区,提交到版本库(**********) 提交到本地仓库
git commit -m '注释'
注:在Linux系统中,commit信息使用单引号'',Windows系统,commit信息使用双引号""。
# 5 查看日志
git log # 查看版本变化的日志
git reflog # 以简略形式显示日志
git blame <file> # 以列表形式查看指定文件的历史修改记录。
-注意:
# git log 和 git reflog的区别:
-git log 命令可以显示所有提交过的版本信息如果感觉太繁琐,可以加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息
-git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
# 6 撤销版本库提交
git reset --hard 版本
# 将暂存区、工作区都与仓库某个版本版一致
版本:
版本号
HEAD 表示当前版本;HEAD^ 上一个版本;以此类推...
HEAD~0 表示当前版本;HEAD~1 上一个版本
------------ 7/8 了解不用记----------
# 7 撤销工作区的操作 (恢复工作区的更改:慎用)
git checkout . # 全部文件恢复
git checkout -- <file> # 指定文件恢复
# 暂存区不变,把工作区的内容恢复到版本库最新版
# 注:如果没有被版本管理的文件,不会变化 (修改后,不能先提交到暂存区,不然默认没有被版本管理)
# 8 撤销暂存区操作 (了解即可,没有意义:工作区有变化,直接重新提交到暂存区即可)
git reset . # 丢弃了工作区提交暂存区的修改,将暂存区与仓库最新版一致,工作区不变
# 9 配置
# 1.查看配置信息
git config --list
# 2.编辑配置文件
git config -e # 针对当前仓库
git config -e --global # 针对系统上所有仓库
# 3.设置用户和邮箱 (***)
# /用户家路径/.gitconfig
git config --global user.name '用户名'
git config --global user.email '用户邮箱'
# /当前仓库/.git文件夹/config
git config user.name '用户名'
git config user.email '用户邮箱'
# 10 克隆仓库 (从现有Git仓库中拷贝项目)
git clone <repo> # 克隆某个仓库
git clone <repo> <directory> # 克隆某个仓库到指定目录
例:
git clone git://github.com/schacon/grit.git
git clone git://github.com/schacon/grit.git mygrit
# 11 空文件夹不会被git管理
5 过滤文件
# 仓库中有些文件或文件夹,不想被git管理
# 在仓库根路径新建.gitignore 文件,在文件中写忽略文件
# : 表示注释
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
eg:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
lqz.tx? 表示任意一个字符 lqz.txt lqz.txa
# django项目常见忽略内容:
.idea
.DS_Store
/logs/*.log
__pycache__
celerybeat-schedule.
6 git分支
# 创建分支
git branch 分支名
git branch dev # 创建一个dev分支
# 查看分支
git branch
# 切换分支
git checkout dev
# 创建并切换到
git checkout -b dev
# 合并分支
# 把dev合并到master,必须先切换到master上 (******)
git merge dev
# 删除分支
git branch -d dev
7 远程仓库
# github gitlab gitee作为远程仓库
# 在gitee上创建一个空的远程仓库
新建仓库的时候,不要勾选Readme初始化,不然不是空仓库,提交远程时会冲突
# 设置账号和邮箱
git config --global user.name "egon"
git config --global user.email "3@qq.com"
# 如果本地没有仓库,则新建本地仓库
mkdir lqz
cd lqz
git init
touch README.md
git add README.md
git commit -m "first commit"
# 添加远程仓库(https协议添加)
git remote add origin https://gitee.com/liuqingzheng/test.git
# 把本地的master,提交到远程origin仓库
git push origin master
# 如果本地有仓库,则进入本地仓库
cd existing_git_repo
git remote add origin https://gitee.com/liuqingzheng/test.git
git push origin master
# 查看远程仓库
git remote
# 删除远程仓库
git remote remove origin
# 从远程仓库拉取代码
git pull origin master
注意:增加了远程仓库,最开始只需要新增一个远程仓库,以后只需要pull拉取代码,和push推送本地代码到远程
8 ssh连接远程(公司基本上都用这种)
# 推送和下载,使用http协议,需要输入用户名和密码的方式
# 现在使用ssh连接远程
-不需要再输入用户名密码
-但是需要配置公钥私钥(非对称加密:加密和解密,采用不同的方式)
# 生成公钥私钥(操作系统使用命令)
-ssh-keygen -t rsa -C "306334678@qq.com"
-用户家路径的.ssh文件夹下
-id_rsa:私钥,一定不能丢
-id_rsa.pub:公钥,可以给别人
-去gitee设置,配置公钥
# 删除origin,再增加一个
git remote add orgin git@gitee.com:liuqingzheng/test.git