git安装与使用
# 代码管理软件 -git -svn # 他们能做的事情---》咱们用来做代码管理 [文件管理] 1 帮助开发者合并开发的代码,协同开发 2 如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突 3 代码版本管理 # git 与svn比较 svn:集成式管理,服务端挂掉就做不了版本管理,代码合并 git:分布式管理,服务端挂掉,本地还可以继续做版本管理,代码合并
# git:版本管理软件,装在操作系统上,有很多命令 # gitee:远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置 -国内最大的开源远程仓库 -小公司---》使用gitee的私有仓库 # github:远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置 -国际上最大的开源远程仓库 # bitbucket:只有私有仓库 -远程代码仓库 # gitlab:公司内部的远程仓库
# 双击 安装软件, 一路下一步安装完成 -任意路径下点右键,多出两个东西 -cmd :git 有反应
# 三个区 -工作区 存放文件的地方 -暂存区 工作区的变更,提交到暂存区 -版本库 暂存区的内容,提交到版本库 # 三个区相互操作 -下面学的命令,就是在操作这三个区
#1 文件夹想被git管理,文件夹作为仓库 # 先来到某个文件夹下敲 git init # 初始化仓库 ,当前文件夹多出 .git 文件夹,这个文件夹不要删,如果删除,这就不是git仓库了,之前的版本再也找不回来了,也不能被git管理 git init xxx # 在上一级敲 # 2 查看文件变化 在 .git 所在文件夹下 [只看暂存区和工作区] git status # 看到有两种颜色 -红色:工作区变化了,但是没有提交到暂存区 -绿色:已经提交到暂存区,没有提交到版本库 -没有:所有东西都在版本库中了[所有文件都被git管理起来了] # 3 把工作区变更提交到暂存区 git add 文件夹 git add . # 当前路径下所有变更都提交 # 4 把暂存区所有内容,提交到版本库作为一个版本 git commit -m '提交了1.txt' # 5设置作者(全局,局部) # 全局的意思是当前操作系统下所有仓库,提交到版本库时,都用这个作者 # 局部只针对于当前仓库 git config --global user.email "306334678@qq.com" git config --global user.name "liuqingzheng" # 6 查看版本库版本信息 -git log -git reflog # 更精简一些 ------了解 # 7 把工作区的变更,回退 【还没有放到暂存区】 -增加的内容,删除 git checkout . # 8 把暂存区,拉回到工作区[由绿变红] git reset HEAD ------- 了解 # 9 回到某个版本 -只要被版本管理了,可以回退到任意版本 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管理 -比如: - node_models - .idea - xx.pyc # python 的编译文件 # 使用步骤 -1 在仓库目录下 .git 所在目录下 新建 .gitignore -2 在里面写忽略文件 mode_models .idea *.pyc *.log -3 写的就会被忽略 -4 已经被管理过的不会被忽略 # 忽略文件写法 文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤 /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤 例如: a.txt:项目中所有a.txt文件和文件夹都会被过滤 /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤 /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤 *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符) 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
git多分支
# 1.为什么要有分支 - 可以保证,主分支的版本都是可以查看的版本 - 我们都在开发分支开发,开发完成后1才会合并到主分支 # 2.分支操作 - 查看分支 git branch - 创建分支 git branch 分支名 git branch dev - 切换分支 git checkout dev # 切换到dev分支 - 删除分支 git branch -d dev - 合并分支(重要) :分支合并可能会起冲突 -1. 把dev合并进master -2.来到master分支: git branch checkout master -3.执行合并命令: git merge dev # 把dev合并到master身上 # 3.公司里的分支方案(小公司) - master分支,dev分支,bug分支,所有人在dev分支开发,开发完成合并到主分支 - master分支,dev分支,bug分支,个人分支,个人在个人分支上开发,开发完成合并到dev分支
git远程仓库
# 1.把本地的版本提交到远程仓库 - gitee,github,gitlab... # 2.gitlab搭建过程 - https://zhuanlan.zhihu.com/p/413217715 # 3.在本地把代码提交到远程仓库gitee - 操作步骤: -> 1.本地: -1. 在luffy_api敲git init -2. 设置忽略文件(.gitignore) -3. git add . -4. git commit -m '第一次提交' ————提交到本地版本库:被版本管理了———— -> 2.远程: - 1. gitee界面,右上角+ 点击创建 - 2.填写一些信息保证仓库是空的 -> 3.本地 - 1.安装远端提示的步骤操作 - 2.设置用户的邮箱 - 3.已有仓库的话按下面指令操作 - cd luffy_api # 添加一个远程仓库地址名字叫origin,地址是xxx - git remote add origin https://gitee.com/juzijunjun/luffy_api.git # 把本地版本库推送到远程仓库 # 把本地当前所在分支,推送到origin对应的远程的master上 - git push origin master # 需要输入用户名密码,输入一次,以后就不用再输入了(本地保存:凭据管理) # 4.如果提交了,再写忽略文件的步骤 - luffy.log--->暂存区--->版本库 - .gitignore--->写上忽略,但是不好被忽略,只要luffy.log有变化还是会被监控到 - 删除luffy.log--->会被监控到--->add - commit--->版本库中已经没有luffy.log - 再出的luffy.log就不会再被管理了
ssh方式连接远程仓库
# 1.提交代码到git远程仓库上(使用的是https协议提交的代码) - 需要输入用户名的密码 # 2.但是一般使用ssh方式:设置公钥私钥 - 私钥保存到本地 - 公钥配置到gitee - 配置成功后,提交代码到远程仓库,无需认证 # 3.使用步骤 - 生成公钥私钥 - https://gitee.com/help/articles/4181 - 在命令窗口中执行,一路回车 - ssh-keygen -t ed25519 -C "1585801492@qq.com" - 生成在:C:\Users\Administrator\.ssh路径下,有两个文件,一个公钥,一个私钥 - 把公钥,配置在gitee上 - 之前origin对应的地址是https的,现在使用ssh提交代码,需要把其删除,再增加成ssh的协议 - git remote remove origin - git remote add origin git@gitee.com:juzijunjun/luffy_api.git
协同开发
# 仓库管理员创建了仓库
- 其它角色对仓库有各种权限 # 多人开发
- 开发人员在自己仓库中无法看到开发的项目 # 仓库管理员设置角色成为仓库的开发者
- 设置完成后,开发人员就可以看见这个项目了 # 1.仓库管理员,邀请开发者进入 - 被邀请的开发者,对该仓库拥有读写权限,可以开发代码,提交 # 2.作为开发者,本地没有代码 - 1.把代码从远程仓库clone下来 git clone git@gitee.com:juzijunjun/luffy_api.git - 2.使用pycharm打开,配置好解释器,安装依赖 - 3.开发代码,开发结束 - git add # 设置用户名和邮箱 - git config user.name juzi - git config user.email 1585801492@qq.com - git commit - git push origin master
冲突解决
# 1.出现冲突的原因 - 1.多人在同一分支进行开发 - 2.分支合并时出现冲突 # 2.多人在同一分支开发冲突 - 角色:张三 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 """ 冲突了:解决冲突,冲突的箭头去掉,阅读代码,选择保留或者删除别人或自己的代码,在进行提交。解决后提交到远程仓库 """ # 3.出现冲突的样子: <<<<<<< HEAD 我的代码 print('刘亦菲') ======= 它的代码 print('彭于晏') >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5 # 4.如何避免出现冲突 - 少出现冲突需要,勤拉取代码 # 5.分支合并出现冲突 - 角色:我 -1. 创建dev分支 git branch dev -2. 在dev分支的views.py 在第2行加入代码 -3. 提交到本地仓库 - 角色:我 -1. 在主分支的views.py 在第二行加入代码 -2. 提交到版本库 -3. 在主分支合并代码 git merge dev -4. 冲突了,解决冲突 -5. 提交代码到仓库,结束
线上分支合并
# 1.线下分支合并 git merge dev # 2.线上分支合并 - 1.gitee上,新建一个分支。 - 2.本地同步远程dev分支 # 拉下来了,还看不到,只有切过去,才看得到 - git pull origin def - git checkout dev - 3.在dev上开发 - git add - git commit # 提交到本地的dev了 - 4.推到远端dev - git push origin dev - 5.master中没有代码,dev中有提交的,现在要线上分支合并 - 6.把远程的dev合并进远程的master - 7.提交pr,提交rr - 8.在网站上,申请提交pull request - 9.领导审核,测试,通过后,点击合并 - 10.线上dev就合并到线上的master
远程仓库回滚
# 1.尽量不要用 # 2.远程仓库回滚可以让,远程的代码回到最初的状态 # 3.步骤: -1. 本地版本回退 git reset --hard 版本号 -2. 强制推到远端 git push origin master -f
为开源项目贡献代码
# github,gitee看到好的开源项目,发现有bug,为他增加新功能。想合并到开源项目,如何做? #步骤: 1.先fork开源项目 复制这个项目到我的仓库中 2.clone下来,改代码,一路提交到远端(我的) 3.提交派任,等作者同意
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律