git大全(入门)

版本控制器

Git就是版本控制器,控制的对象是开发的项目代码。

主要有以下两大功能:

# git的两大功能:
    -多人协同开发代码合并
    -对版本进行管理,能切换回老版本

版本管理软件

主要有两类:Git和 svn(很老),

两者的区别:

-svn:CVCS(集中式管理系统),要是服务器被黑或者出现不可逆宕机情况,会影响开发进度
-git:DVCS(分布式管理系统),如果服务器崩了可以用一台客户端作为备用服务器,不会影响开发进度

 

git的工作流程

Git的使用

Git安装

# 1.下载对应版本:https://git-scm.com/download
# 2.安装git:
# 一路下一步
# 任意位置右击,能看到 
    -git bash here  # 通过命令来操作文件
    -git gui here   # 图形化界面,一般不用

Git的三个区域

工作区、暂存区、版本库,如下:

工作区            暂存区                       版本库
代码存放区域 代码改完放到暂存区 管理了历史代码 修改删除代码 才能提交到版本库 必须从暂存区提交过来

Git命令

初始化

-初始化:git init 文件夹名  # 管理指定文件夹
-初始化:git init   # 当前路径全被管理

# 初始化仓库,在某个想被git管理的文件夹下执行,会创建出 .git隐藏文件夹,代表该文件夹被git管理了

查看仓库状态

# 查看仓库状态
git status
# 红色表示未被管理
# 绿色表示提交到暂存区了

工作区到暂存区

git add a.txt    # 把a提交到暂存区
git add .        # 把当前路径下所有数据批量提交到暂存区

添加用户信息

数据要提交到版本库之前必须配置用户信息,否则无法提交到版本库

# 设置全局用户信息
git config --global user.name 'yessir'  
git config --global user.email '983410683@qq.com'  
# 在在全局文件 C:\Users\用户文件夹\.gitconfig可以查看用户信息,在所有仓库下都可以使用



# 设置局部用户信息--->只对当前仓库有效
git config user.name 'lqz'
git config user.email '2333@qq.com'

#注:在当前仓库的.git文件夹下,config可以查看到局部的用户信息

暂存区到版本库

数据要提交到版本库之前必须配置用户信息,否则无法提交到版本库

git commit -m '注释,我新增了a'  # 把暂存区的所有数据都提交到版本库 需先添加作者信息
# 提交的时候必须加注释 不加注释无法提交成功

查看版本库的版本信息

git log      # 查看版本管理的日志
git reflog   # 查看日志,查看的条数更多,内容更少

回滚:(两种)

1.  git checkout .    (使用的少)

2.  git reset --hard 版本号   (使用的多)

git reset --hard 版本号  # 指定将版本库中某个版本恢复到工作区

把a的新增提交到版本管理
新建b,在a中新增一行
git checkout .  # 回复到提交版本的位置,a是空的,b没有被git管理,所以,是什么样,还是什么样

示例:

-在a.py 中加入一行代码
-git status   # 红色的a.py,没有提交到暂存区
-git add .    # 提交到暂存区
-git commit -m '注释' # 提交到 版本库 
-删除 a.py  
-git status   # 红色
-git add .    # 提交到暂存区
-git commit -m '注释' # 提交到 版本库 
# 到此,总共提交了三次(新建a,修改a,删除a)
-git log   #查看日志
-git reset --hard b9b7824  # 回到某个版本
-git reset --hard 5de4a6b

过滤/忽略文件

# 有些文件,不想被git管理,就要设置忽略文件

# 在项目根路径,跟.git文件夹一个路径,新建.gitignore.  在里面配置(.gitignore文件本身不要忽略)

过滤文件内容:
#号是注释,没有用 文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤 eg: a.txt:项目中所有a.txt文件和文件夹都会被过滤 /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤 /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤 *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符) 空文件夹不会被提交(检测不到),空包会被提交,包可以被提交(包中有一个init空文件) /dist 表示根路径下的dist文件夹,不被管理 *.py 表示后缀名为py的文件,都被忽略 *.log* 表示后缀名中带log的都被忽略

 git分支操作

-查看分支: git branch   # 查看所有分支,分支是绿的,表示在当前分支上

-创建分支: git branch 分支名

-创建并切换: git checkout -b 分支名  # 可以不记,分两步

-删除分支: git branch -d 分支名  # 无法删除当前所在的分支

-切换分支: git checkout 分支名

-合并分支: git merge 分支名  # 把dev分支合并到master分支:切换到master分支,执行合并dev分支的命令
# 分支1想吞了分支2,必须在分支1上执行,反之亦然
git merge dev # master分支吞并了dev分支

示例:

创建分支:
git branch dev
git branch bug
git branch env

切换分支:
git checkout dev

删除分支:
git branch -d env  # 无法删除当前所在的分支

合并分支:
git merge bug  # dev分支把bug分支合并了

创建并切换分支:
git checkout -b sdiao

切换到sdiao分支下
git checkout sdiao
在sdiao分支下添加一个a.txt文件,然后添加到暂存区并提交到版本库
git add .
git commit -m 'sdiao分支新增了a.txt文件'
这时切到dev分支,发现看不到a.txt文件,其他分支也一样,只有sdiao分支能看到
git checkout dev

 删除远程仓库的文件

在git上只能删除仓库,却无法删除文件夹或文件, 所以只能通过命令来解决,

首先进入项目master文件夹下, Git Bash Here ,打开命令窗口

$ git pull origin master             # 将远程仓库里面的项目拉下来
$ dir                                # 查看有哪些文件夹
$ git rm -r --cached target          # 删除target文件夹
$ git commit -m '删除了target'        # 提交,添加操作说明

 

posted @ 2022-05-31 14:39  _yessir  阅读(75)  评论(0编辑  收藏  举报