介绍:
用来做代码管理(文件管理)
1、帮助开发者合并开发的代码
2、如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突
3、代码版本管理
代码管理软件分为两种:
git 与svn比较:
git安装:
# 1、安装地址:https://git-scm.com/download/win# 2、下一步,完成安装# 3、检查是否安装完成 1.在cmd输入git命令 检查是否安装完成 2.鼠标右键,单击桌面 查看是否有git打开方式
# 1、安装地址:https://git-scm.com/download/win
# 2、下一步,完成安装
# 3、检查是否安装完成
1.在cmd输入git命令 检查是否安装完成
2.鼠标右键,单击桌面 查看是否有git打开方式
- git: # 版本管理软件,装在操作系统上,有很多命令- gitee: # 国内最大的开源远程仓库 # 小公司---》使用gitee的私有仓库 # 远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置 - github: # 国际上最大的开源远程仓库 # 远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置 - bitbucket: # 只有私有仓库 # 远程代码仓库- gitlab: # 公司内部的远程仓库
- git:
# 版本管理软件,装在操作系统上,有很多命令
- gitee:
# 国内最大的开源远程仓库
# 小公司---》使用gitee的私有仓库
# 远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置
- github:
# 国际上最大的开源远程仓库
- bitbucket:
# 只有私有仓库
# 远程代码仓库
- gitlab:
# 公司内部的远程仓库
# git分为三个区 -工作区 存放文件的地方 -暂存区 工作区的变更,提交到暂存区 -版本库 暂存区的内容,提交到版本库 # 三个区相互操作 -下面学的命令,就是在操作这三个区
# git分为三个区
-工作区 存放文件的地方
-暂存区 工作区的变更,提交到暂存区
-版本库 暂存区的内容,提交到版本库
# 三个区相互操作
-下面学的命令,就是在操作这三个区
1.管理文件:
# 1、打开需要被git管理的文件# 2、右键单击 git bash here# 3、输入命令 git init# 4、被管理的文件夹中出现 .git文件夹''' 也可以直接在cmd中输入命令指定需要被管理的文件路径'''
# 1、打开需要被git管理的文件
# 2、右键单击 git bash here
# 3、输入命令 git init
# 4、被管理的文件夹中出现 .git文件夹
'''
也可以直接在cmd中输入命令指定需要被管理的文件路径
2.查看文件变化:
1、在被git管理的文件下打开git命令窗口 git status # 看到有两种颜色 -红色:工作区变化了,但是没有提交到暂存区 -绿色:已经提交到暂存区,没有提交到版本库 -没有:所有东西都在版本库中了[所有文件都被git管理起来了]
1、在被git管理的文件下打开git命令窗口
git status
# 看到有两种颜色
-红色:工作区变化了,但是没有提交到暂存区
-绿色:已经提交到暂存区,没有提交到版本库
-没有:所有东西都在版本库中了[所有文件都被git管理起来了]
3.把文件移交到暂存区:
1、把工作区变更的文件(红色的文件)提交到暂存区 git add . # . 提交所有变更的文件 dit add 文件名 # 指定某个文件提交 2、把暂存区的文件拉回到工作区[由绿变红] git reset HEAD 3、把工作区的变更,回退 【还没有放到暂存区】 -增加的内容,删除 git checkout .
1、把工作区变更的文件(红色的文件)提交到暂存区
git add . # . 提交所有变更的文件
dit add 文件名 # 指定某个文件提交
2、把暂存区的文件拉回到工作区[由绿变红]
git reset HEAD
3、把工作区的变更,回退 【还没有放到暂存区】
-增加的内容,删除
git checkout .
3.把暂存区文件提交到版本库:
1、将暂存区的文件提交到版本库(作为一个版本) git commit -m '注释' # 注释内容必须填写
1、将暂存区的文件提交到版本库(作为一个版本)
git commit -m '注释' # 注释内容必须填写
4.设置作者:
1、将暂存区的文件提交到版本库,必须设置作者 # 全局作者 所有文件提交版本都用此作者 git config --global user.email "邮箱" git config --global user.name "作者名字" # 局部作者 当前文件提交版本用此作者 git config user.email "作者邮箱" git config user.name "作者名字"
1、将暂存区的文件提交到版本库,必须设置作者
# 全局作者 所有文件提交版本都用此作者
git config --global user.email "邮箱"
git config --global user.name "作者名字"
# 局部作者 当前文件提交版本用此作者
git config user.email "作者邮箱"
git config user.name "作者名字"
4.查看版本库,下载版本库:
1、查看版本库: git log # 查看详细的版本库 可以看到提交人,详细的commit信息 git reflog # 查看简单的版本库, 2、回归到某个版本 -只要被版本管理了,可以回退到任意版本 git reset --hard 版本号
1、查看版本库:
git log # 查看详细的版本库 可以看到提交人,详细的commit信息
git reflog # 查看简单的版本库,
2、回归到某个版本
-只要被版本管理了,可以回退到任意版本
git reset --hard 版本号
总结:
记住的: git add # 工作区---》提交到暂存区 git commit -m # 暂存区--》提交版本库 git reset --hard 版本号 # 回归版本会用: git init # 管理文件夹 git status # 查看被管理的文件情况 git log # 查看版本库 详细 git reflog # 查看版本库 简略了解: git checkout . # 回滚工作区的内容 git reset HEAD # 将暂存区的回到工作区 git config --global user.email "306334678@qq.com" # 设置作者 """ 1)有红色信息(工作区有内容),就执行 add 2)全绿信息(内容全部在暂存区),才执行 commit 3)只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本 空文件夹不会被git记录"""
记住的:
git add # 工作区---》提交到暂存区
git commit -m # 暂存区--》提交版本库
git reset --hard 版本号 # 回归版本
会用:
git init # 管理文件夹
git status # 查看被管理的文件情况
git log # 查看版本库 详细
git reflog # 查看版本库 简略
了解:
git checkout . # 回滚工作区的内容
git reset HEAD # 将暂存区的回到工作区
git config --global user.email "306334678@qq.com" # 设置作者
"""
1)有红色信息(工作区有内容),就执行 add
2)全绿信息(内容全部在暂存区),才执行 commit
3)只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
空文件夹不会被git记录
# 咱们项目中,有些文件,或文件夹不想被git管理 -比如: -node_models -.idea -xx.pyc # python 的编译文件 # 使用步骤 -1 在仓库目录下 .git 所在目录下 新建 .gitignore -2 在里面写忽略文件 mode_models # 直接忽略该文件 .idea # 忽略.idea文件 *.pyc # 忽略 xxx。pyc结尾的文件 *.log # 同上 -3 写的就会被忽略 -4 已经被管理过的不会被忽略 # 忽略文件写法 文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤 /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤例如: a.txt:项目中所有a.txt文件和文件夹都会被过滤 /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤 /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤 *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符) 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件
# 咱们项目中,有些文件,或文件夹不想被git管理
-比如:
-node_models
-.idea
-xx.pyc # python 的编译文件
# 使用步骤
-1 在仓库目录下 .git 所在目录下 新建 .gitignore
-2 在里面写忽略文件
mode_models # 直接忽略该文件
.idea # 忽略.idea文件
*.pyc # 忽略 xxx。pyc结尾的文件
*.log # 同上
-3 写的就会被忽略
-4 已经被管理过的不会被忽略
# 忽略文件写法
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件
什么是多分支:
通过建立分支,来保证每个阶段的项目都可以顺利运行,master分支(主分支)用来存放每一阶段完成的项目,dev(开发分支)用来开发项目,当dev分支代码编写完成时,将完成的代码合并到master分支上,接着再回到dev分支开发代码,直到项目完全编写出来,这样的好处是每一个阶段的代码都可以运行
公司常用分支方案:小公司
- master分支、dev分支、bug分支: 在dev分支发开代码,开发完成合并到master分支,master分支出现bug到bug分支修复 - master分支、dev分支、bug分支 、个人分支 在个人分支上开发,开发完成合并到dev分支
- master分支、dev分支、bug分支:
在dev分支发开代码,开发完成合并到master分支,master分支出现bug到bug分支修复
- master分支、dev分支、bug分支 、个人分支
在个人分支上开发,开发完成合并到dev分支
常用分支操作:
- 查看已建立的分支: git branch - 创建分支: git branch 分支名 - 切换分支: git checkout 分支名 - 删除分支: git branch -d 分支名 - 合并分支:(重要) 例如: 把dev分支合并到master分支 1、先来到master分支: git checkout master 2、执行合并分支命令: git merge dev # 分支合并可能会出现冲突 ---- 下面讲解
- 查看已建立的分支:
git branch
- 创建分支:
git branch 分支名
- 切换分支:
git checkout 分支名
- 删除分支:
git branch -d 分支名
- 合并分支:(重要)
例如: 把dev分支合并到master分支
1、先来到master分支: git checkout master
2、执行合并分支命令: git merge dev
# 分支合并可能会出现冲突 ---- 下面讲解
简介:
将本地的版本库提交到远程仓库
gitee搭建远程仓库: 操作步骤:
本地: 1 在 luffy_api 项目敲 git init 2 设置忽略文件(.gitignore) 3 git add . 4 git commit -m '第一次提交' ------提交到了本地版本库-------被版本管理了 远程: 1 创建gitee账号 2 创建仓库:gitee上创建仓库,右上角 + 3 填一些信息,保证仓库是空的 本地: 1 安装远端提示的步骤操作 2 设置用户和邮箱 3 咱们是已有仓库 # 添加一个远程仓库地址名字叫origin,地址是xxx git remote add origin https://gitee.com/liuqingzheng/luffy_api.git # 把本地的版本库推送到远程仓库 # 把本地当前所在分支,推送到 origin 对应的远程的master上 git push origin master # 需要输入用户名密码,输入一次,以后就不用输入了(本地保存了:凭据管理) '''1、填写的密码会被存放在本机的Windows凭据管理中'''
本地:
1 在 luffy_api 项目敲 git init
2 设置忽略文件(.gitignore)
3 git add .
4 git commit -m '第一次提交'
------提交到了本地版本库-------被版本管理了
远程:
1 创建gitee账号
2 创建仓库:gitee上创建仓库,右上角 +
3 填一些信息,保证仓库是空的
1 安装远端提示的步骤操作
2 设置用户和邮箱
3 咱们是已有仓库
# 添加一个远程仓库地址名字叫origin,地址是xxx
git remote add origin https://gitee.com/liuqingzheng/luffy_api.git
# 把本地的版本库推送到远程仓库
# 把本地当前所在分支,推送到 origin 对应的远程的master上
git push origin master
# 需要输入用户名密码,输入一次,以后就不用输入了(本地保存了:凭据管理)
1、填写的密码会被存放在本机的Windows凭据管理中
什么是ssh:
通过公钥私钥的方式链接远程仓库,不用在通过账号密码的方式链接
-私钥在本地保存-公钥配置到gitee上-以后再提交代码,不需要其他任何认证
-私钥在本地保存
-公钥配置到gitee上
-以后再提交代码,不需要其他任何认证
使用步骤:
- 1、生成公钥私钥:https://gitee.com/help/articles/4181 - 2、在cmd窗口输入命令 -ssh-keygen -t ed25519 -C "694702725@qq.com" -生成在:C:\Users\Administrator\.ssh # 两个文件,一个公钥,一个私钥(带后缀) - 3、把公钥,配置在gitee上 打开公钥文件,复制内容到gitee中配置- 4、之前origin对应的地址是 https的,现在要使用ssh提交代码,需要把它删除,再增加成ssh的协议 git remote remove origin git remote add origin 'ssh地址' # ssh地址可在仓库下载地址中选择ssh复制
- 1、生成公钥私钥:https://gitee.com/help/articles/4181
- 2、在cmd窗口输入命令
-ssh-keygen -t ed25519 -C "694702725@qq.com"
-生成在:C:\Users\Administrator\.ssh # 两个文件,一个公钥,一个私钥(带后缀)
- 3、把公钥,配置在gitee上
打开公钥文件,复制内容到gitee中配置
- 4、之前origin对应的地址是 https的,现在要使用ssh提交代码,需要把它删除,再增加成ssh的协议
git remote remove origin
git remote add origin 'ssh地址' # ssh地址可在仓库下载地址中选择ssh复制
什么是协同开发:
创建仓库之后,可以邀请多人协同开发,通过设置仓库内成员身份(开发者),对仓库代码具有读写权力
协调开发 clone 代码:
作为开发者,加入仓库后,第一件事需要将仓库内的代码 clone (克隆)下来,然后进行操作
1、将代码从远程仓库 clone 下来 git clone 仓库地址 # 可以选择clone的方式 例如:ssh链接,默认http 2、使用pycharm打开clone的代码,配置好解释器,安装项目依赖
1、将代码从远程仓库 clone 下来
git clone 仓库地址 # 可以选择clone的方式 例如:ssh链接,默认http
2、使用pycharm打开clone的代码,配置好解释器,安装项目依赖
协调开发 push 代码:
代码编辑完成后,需要将代码 push(推)至远程仓库
1、git add . # 先add至工作区2、git commit -m 注释 # 添加至本地版本库3、设置用户名和邮箱 git config user.name 作者 git config user.email 邮箱 4、将代码push至远程仓库 git push origin master
1、git add . # 先add至工作区
2、git commit -m 注释 # 添加至本地版本库
3、设置用户名和邮箱
git config user.name 作者
git config user.email 邮箱
4、将代码push至远程仓库
什么是冲突:
当多人对同一分支代码进行操作时,如果A已经push到远程仓库,那么B就无法跨过A的本本就行push,需要先将A的代码pull(拉)至本地,然后才能进行push,但是这样就会出现问题,加入A和B当前操作的代码都一样,这时就会出现冲突,冲突会将两人相同或重叠部分的代码进行标注
冲突的样子:
# 多人在同一分支开发冲突 -张三: git pull origin master 在requirements.txt,最后一行加入 lqz git add . git commit -m git push origin master -我: 在requirements.txt,最后一行加入 lqz git add . git commit -m git pull origin master # 冲突了 # 解决冲突 冲突的 箭头去掉,阅读代码,选择保留或删除别人或自己的代码,再提交 # 提交到远程仓库,这是解决后的 # 冲突出现的样子:你如果要删除别人的代码,你需要跟别人说一声 <<<<<<< HEAD 我的代码 print('刘亦菲') ======= 它的代码 print('彭于晏') >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5 # 冲突出现的原因2,分支合并出冲突 -我: 1 创建dev分支 git branch dev 2 在dev分支的views.py 中第2行加入代码 3 提交到本地仓库 -我: 1 在主分支的views.py 中第2行加入代码 2 提交到版本库 3 在主分支合并代码 git merge dev 4 冲突了,解决冲突 5 再提交代码,到此结束
# 多人在同一分支开发冲突
-张三:
git pull origin master
在requirements.txt,最后一行加入 lqz
git add .
git commit -m
-我:
# 冲突了
# 解决冲突 冲突的 箭头去掉,阅读代码,选择保留或删除别人或自己的代码,再提交
# 提交到远程仓库,这是解决后的
# 冲突出现的样子:你如果要删除别人的代码,你需要跟别人说一声
<<<<<<< HEAD 我的代码
print('刘亦菲')
======= 它的代码
print('彭于晏')
>>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5
# 冲突出现的原因2,分支合并出冲突
1 创建dev分支
git branch dev
2 在dev分支的views.py 中第2行加入代码
3 提交到本地仓库
1 在主分支的views.py 中第2行加入代码
2 提交到版本库
3 在主分支合并代码
git merge dev
4 冲突了,解决冲突
5 再提交代码,到此结束
如何避免冲突:勤拉去代码可以减少冲突的出现
# 线下分支合并 git merge dev # 线上 分支合并 - gitee上,新建一个分支 ,点点点创建出来 -本地同步远程dev分支 git pull origin dev # 拉下来了,还看不到,只有切过去,才看的到 git checkout dev -在dev上开发开发 随便加代码 git add git commit # 提交到本地的dev了 - 推到远端 dev git push origin dev -master中没有代码,dev中有提交的,现在要线上分支合并 -把远程的dev合并进远程的master - 提交pr 提交rr -在网站上,申请提交pull request -领导审核,测试,通过后,点击合并 -线上dev就合并进线上的master了
# 线下分支合并
# 线上 分支合并
- gitee上,新建一个分支 ,点点点创建出来
-本地同步远程dev分支
git pull origin dev # 拉下来了,还看不到,只有切过去,才看的到
git checkout dev
-在dev上开发开发
随便加代码
git add
git commit
# 提交到本地的dev了
- 推到远端 dev
git push origin dev
-master中没有代码,dev中有提交的,现在要线上分支合并
-把远程的dev合并进远程的master
- 提交pr 提交rr
-在网站上,申请提交pull request
-领导审核,测试,通过后,点击合并
-线上dev就合并进线上的master了
# 你不要用# 想远程的代码,是最初的状态# 步骤: 1 本地版本回退 git reset --hard 版本号 2 强行推到远端 git push origin master -f
# 你不要用
# 想远程的代码,是最初的状态
# 步骤:
1 本地版本回退
2 强行推到远端
git push origin master -f
原文链接:https://www.cnblogs.com/kangssssh/p/17173029.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728