git的基本使用

文章目录

  • 导出项目依赖
  • git安装和介绍
  • git的使用流程
  • git 忽略文件
  • git 多分支操作
  • git 远程仓库
  • ssh链接远程仓库
  • 远程连接仓库的两种方式
  • 图片显示
  • 协同开发
  • 协同开发演示
  • 解决冲突问题
    • 分支合并出冲突
    • 多人在同一分支开发出现冲突
    • 线上合并分支
  • pycharm使用git

导出项目依赖

以后项目给别人—》项目装了哪些模块[模块版本]–》别人用是不知道的—》需要导出项目依赖—》放在项目路径下—》以后在运行项目前–》先安装依赖[版本号要对应]

# 一般约定俗成都叫 requirements.txt,但是会有别的

# 1 虚拟环境---》所有装的第三方,都应该是该项目的依赖---》直接导出虚拟环境的所有第三方模块即可
 
# 在命令行中安装这个模块 会自动生成一个  requirements 文件 里面有对应的模块名字和版本号
pip freeze  > requirements.txt


git安装和介绍

软件开发一个功能后---》把代码提交到某个位置---》大家都能拿到

 现在存在的问题
	1 多人在同一项目上开发---》代码合并--》多人协同开发
	2 做版本管理--》版本回退,查看。。。

# SVN 、 GIT 能完成上述操作
	-svn 比较老,用的公司不多
    -git比较流行
    
git是什么?
	版本控制[软件] - 控制的对象是文件

# 下载:
	https://git-scm.com/downloads
    -win:Git-2.43.0-64-bit.exe 下载,一路下一步安装即可

git的使用流程

  1. 初始化仓库 —仓库目录下会出现 .git 文件夹–》文件夹千万不要删除
git init   # 管理该文件夹
git init 文件夹 # 在当前文件夹下创建文件夹,并把新创建的文件夹作为仓库
  1. 查看仓库状态
只要初始化的文件有 增删改查操作 查看仓库的时候都会变成红色
git status 
git status -s  #查看仓库状态的简约显示

颜色区别介绍
# 红色:工作区有变更,但是没有提交到暂存区  
# 绿色:工作区变更提交到暂存区,但是没有提交到版本库---》还没有被版本管理起来
# 白色:所有变更都被版本管理了
  1. 把工作区提交到暂存区
git add 文件名 文件夹   # 可以指定文件提交到暂存区
git add .  # 所有变更  点代表所有
  1. 把暂存区提交到版本库
git commit -m '注释'    # 只要提交一次,就会有个版本号,以后根据版本号我们可以回退到任意版本 
# 一定要注释 比如这个文件进行了什么操作
  1. 设置用户名和邮箱–》一般写在git init之后,只设置一次
# 全局设置  以后再建项目 就不需要重新添加用户了
	git config --global user.name '用户名'
    git config --global user.email '用户邮箱'

# 局部设置: 只对当前仓库有效
    git config user.name 'xxx'
    git config user.email '[email protected]'

查看版本记录
git log
  查看时间点之前|之后的日志:
        >: git log --after 2018-6-1
        >: git log --before 2018-6-1
        >: git reflog --after 2018-6-1
        >: git reflog --before 2018-6-1
    查看指定开发者日志
        >: git log --author author_name
        >: git reflog --author author_name
	回滚到指定版本:
        回滚到上一个版本:
            >: git reset --hard HEAD^
            >: git reset --hard HEAD~
        回滚到上三个版本:
            >: git reset --hard HEAD^^^
            >: git reset --hard HEAD~3
        回滚到指定版本号的版本:
            >: git reset --hard 版本号 (重点)
            >: eg: git reset --hard 35cb292

git reflog
按 Q 退出

两个查看版本的区别
# git log
commit 7884b345a03ec8a1dfae5976d3e1c4ec55a2f785 (HEAD -> master) #  版本号
Author: xxx <4@qq.com>  										 # 作者
Date:   Mon Jan 22 12:29:13 2024 +0800 							 # 日期
    xxx              											 # 注释
# 如果做了代码回撤---》这里的日志看不到,就通过git reflog来查看
git reflog # 可以看得到所有的提交记录 包括回退的版本
$ git reflog
a12627a (HEAD -> master) HEAD@{0}: commit: 宝贝上号吧
c0da972 HEAD@{1}: commit (initial): xxx

  1. 回退命令
git checkout .  # 把工作区变更回退(还没放到暂存区)
git checkout 文件名

git reset - HEAD  # 暂存区回退到工作区

git reset --soft 版本号  # 唯一表示,可以不写全 版本区拉回暂存区 版本号是唯一标识

git reset --mix  版本号 # 把版本库直接拉回到工作区

git reset --hard 版本号   # 版本库直接回到工作区

回滚到上一个版本 或者其它版本
git reset --hard HEAD^
git reset --hard HEAD~
回滚到上三个版本:
git reset --hard HEAD^^^
git reset --hard HEAD~3
回滚到指定版本号的版本:
git reset --hard 版本号 (重点)
git reset --hard 35cb292
# 只要是被版本管理了,后期我们可以回退到任意版本

git 忽略文件

# 在仓库中,某些文件或文件夹,不期望被git管理,不被版本管理
比如 前端文件:
	-node_models
    -.idea
    -.vscode
    ...
怎么作呢?
# 在仓库目录下新建一个文件:.gitignore
	标明哪些不被git管理,标明语法如下:
    -如果是文件,直接写文件名
    -如果是文件夹,直接写文件夹名
""" 过滤文件内容
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤

例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)

注意:
# 以'#'开始的行,被视为注释.                                                                                                                          
# 忽略掉所有文件名是 lqz.txt的文件.
	lqz.txt
# 忽略所有生成的 html文件,
*.html
# lqz.html是例外,不在忽略范围内
!lqz.html
# 忽略所有.o和 .a文件.
*.[oa]

## 后端项目的忽略文件
luffy.log
__pycache__
*.pyc

.idea
scripts
.vscode
**/migrations/*.py
!**/migrations/__init__.py

#### 空文件夹不被git管理
所有会在空文件夹下创建一个 __init__.py的文件

git 多分支操作

注意: 以后再创建分支之前---》先保证 所有文件都被git管理起来
1 查看分支
git branch    
* master  # 只有一个master分支  
  dev

2. 创建一个dev分支
git branch dev  # 创建一个dev分支

3 切换分支
	git checkout dev  # 切换到dev分支
	git checkout -b 分支名 # 创建后直接切换的该分支
	切换分支之后再查看 
	* 在谁身上 就是当前所在的分支

	* master  # 只有一个master分支  
  	  dev
  	  
4 删除分支(不能自己删自己)
	git branch -d dev

5 合并分支
	-切换到master上
    -git merge dev  # 把dev合并到当前分支

git的基本使用_第1张图片

git 远程仓库

1. 注册账户
https://gitee.com/
2. 在gitee建立一个仓库 新建仓库

3. 在本地执行

git config --global user.name 用户
git config --global user.email 邮箱
比如:
git config --global user.name "liuqingzheng"
git config --global user.email "[email protected]"

添加远程仓库地址
git remote add origin https://gitee.com/liuqingzheng/lqz2.git # 添加远程
git remote add origin 地址

本地提交到远程仓库
git push  origin master # 也可能是其他分支

ssh链接远程仓库

# 远程仓库命令
git renote  
git remote -v  # 查看具体链接地址

# 查看remote命令帮助文档
git remote -h

# 删除远程源
git remote remove 源名
git remote remove origin

# 添加远程源
git remote add 源名 源地址
git remote add orgin https://gitee.com/liuqingzheng/app01.git

# 提交代码到远程源(以后会经常用)
git push 源名 分支名

# 克隆远程源(以后会经常用)
git clone 远程源地址

# 从远程仓库拉去代码(以后会经常用)
git pull 源名 分支名

远程连接仓库的两种方式

# 之前咱们添加远程仓库,地址是 http开头的,使用的是http链接远程仓库
# 输入了用户名和密码---》记录在操作系统本地---》以后就不用在输入用户名密码了
git remote add orgin https://gitee.com/liuqingzheng/app01.git

# 咱们要学习---》ssh方案---》不需要输入用户名密码了---》公钥私钥认证方式
-本地机器 保留  私钥
    -在远程仓库配置  公钥
    -远程仓库地址,就不是http的了,而是
    git@gitee.com:liuqingzheng/lqz2.git#ssh方案,需要公钥私钥

# 如何生成公钥私钥? 所有操作系统都支持这个操作
"""
教程地址:
https://help.gitee.com/enterprise/code-manage/%E6%9D%83%E9%99%90%E4%B8%8E%E8%AE%BE%E7%BD%AE/%E9%83%A8%E7%BD%B2%E5%85%AC%E9%92%A5%E7%AE%A1%E7%90%86/%E7%94%9F%E6%88%90%E6%88%96%E6%B7%BB%E5%8A%A0SSH%E5%85%AC%E9%92%A5#article-header0
"""

# 操作步骤
1 cmd/git bash here 命令窗口中执行 两个命令窗口都可以
ssh-keygen -t ed25519 -C "[email protected]"
ssh-keygen -t ed25519 -C "用户邮箱"

2 在操作系统用户--家路径中生成一个 ssh文件夹 里面有公钥私钥 pub结尾的是公钥
        id_ed25519.pub # 公钥--》给别人
        id_ed25519 # 私钥---》自己留着

3 去gitee配置公钥
    	https://gitee.com/profile/sshkeys
    	ssh -T git@gitee.com  # 输入yes
    	
4 以后可以免密操作

5 增加一个远程仓库地址:指定是ssh链接
    	git remote add origin git@gitee.com:liuqingzheng/lqz2.git
    	
6 把代码推送到远端
   		git push origin master
   		
### 以后用https还是ssh呢?
	-公司里用ssh居多
    
# 公司中你们的使用流程
	1 要么自己注册,公司给你注册好了---》账号密码和gitee地址
    2 登录到gitee上,能看到一个项目(别人创建的,但你是开发者,你能看到)
    	2.1 本地生成ssh公钥和私钥--->把公钥配置在gitlab
        2.2 继续后续操作
    3 把代码拉取到本地(已经配置好了ssh公钥和私钥)
    	git clone git@gitee.com:liuqingzheng/lqz2.git
    4 修改代码,加代码
    5 本地提交
    6 推送到远端
# 补充:加密
	-0 编码:
    	base64 
        url编码和解码
	-1 摘要算法
    	md5
        sha1
    -3 对称加密
    	加密和解密使用同样的秘钥
        DES
        3des
        aes
    -4 非对称加密
    	加密使用一个秘钥,解密使用另一个秘钥:公钥和私钥
        公钥加密---》私钥解密
    	RSA
        DSA

图片显示

git的基本使用_第2张图片
git的基本使用_第3张图片
git的基本使用_第4张图片
git的基本使用_第5张图片

协同开发

多人合作开发一个项目
步骤
在本地拉取项目
    git clone git@gitee.com:liuqingzheng/luffy_api.git
    
在拉取的仓库中加代码

先把它加入git管理 然后用pycharm打开 完成开发之后在提交

记得先写好忽略文件 把不需要提交的加入忽略文件在提交
    git add .
    git commie -m '我的第一次'
    git push origin master

以后都开发当时拉下来这个文件夹

#####注意:#####
	如果某个文件或文件夹已经被版本管理了,后期再设置忽略,就无效了
    -如何让它再被忽略呢?
    	-把这个文件删除后,以后就被忽略了

协同开发演示

# 新人来的时候操作
# 1 组长,把你加成开发者 然后登录自己的gitee 就可以看得到项目了 然后再拉取下来
	git clone https://gitee.com/liuqingzheng/luffy_api.git
    
# 2 使用pycharm打开

# 3 git 操作
	修改 user 的app下 __init__.py,写入
    print("hello world")
    git add .
    git commit -m ''
    git push origin master
------先提交的----


# 第二个人
# 1 拉取(本地早就有)
	git clone https://gitee.com/liuqingzheng/luffy_api.git
    
# 2 使用pycharm打开

# 3 git 操作
	修改 user 的app下 __init__.py,写入
    print("lqz")
    git add .
    git commit -m ''
    git push origin master
    # 不允许提交---》跨版本了
    git pull origin master  # 拉取远端和本地保持一致
    # 我出冲突了,解决冲突
    # 再提交
    git add .
    git commit -m '处理问题'
    git push origin master
    
 # 提交完之后 你提交代码的远程仓库添加了新的代码 你自己的用户也会更新项目 继续从自己那里拉取下来开发 在提交的远程 这样子循环操作
    

解决冲突问题

分支合并出冲突

# 1 创建dev分支
# 2 创建bug分支
# 3 在bug分支修改 发现user文件有问题---> 在bug分支修改好了
# 4 合并进主分支---》没有冲突

# 5 dev分支开发,新增一个xx.py 文件---》提交到版本库
# 6 另一个人也发现了这个问题--->然后他也修改了这个文件
# 7 跟主分支合并--》出冲突---》解决冲突
# 8 如果两个人修改的是同一个功能 跟同事商量 保留一个即可
###冲突的样子
<<<<<<< HEAD
print('sssssl')
=======
print('lsssss')
>>>>>>> dev

多人在同一分支开发出现冲突

# 张三:
	git pull origin master
    xx.py 第四行加入 print('张三')
    git add .
    git commit -m '加了张三'
    git push origin master
    
    
    
# 我
# 如果我pull,在最新的基础上,写,不会出冲突
 git pull origin master
# 我没有pull,尽管写---》写了同一个位置,pull下来就会冲突 原因是同事提交的新的代码
只需要重新pull 重新提交 push即可

线上合并分支

# 之前学过,本地分支合并
	git merge 分支名

# 学习直接在线上合并分支

## 远程创建分支,拉取到本地##
	-远程创建分支,拉取到本地
    	-点点点创建
    -在本地执行:
    	git pull origin  # 拉下来,但是看不到,只有切进去才能看到
        git checkout bug

# 本地创建,推送到远端##
	-本地创建分支
    	git branch dev
        git checkout dev # 切到dev分支
        git push origin dev # 把本地当前分支,推动到远端dev分支 
        
# 线上分支合并
	-在本地dev分支加入xx.py 加入 一句话
    -推送到远端 dev分支
    -在远端 把dev合并进maste
    
# 你提合并请求---》你领导审核代码---》同意---》你才合进来

注意: ####  commit 的时候 单引号有时候提交有问题 就用双引号

pycharm使用git

git的基本使用_第6张图片
git的基本使用_第7张图片
git的基本使用_第8张图片

你可能感兴趣的:(git,elasticsearch)