Git01--介绍、基本命令、过滤文件、远程仓库

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
posted @ 2022-02-14 22:29  Edmond辉仔  阅读(48)  评论(0编辑  收藏  举报