Git工具

Git工具

git简介

最主流的代码管理软件,同为代码管理软件还有少部分公司使用svn。

它们的主要功能有:

  1. 帮助开发者合并开发的代码,协同开发

  2. 如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突

  3. 代码版本管理

git与svn的比较

svn:集成式管理,服务端挂掉就做不了版本管理,代码合并

git:分布式管理,服务端挂掉,本地还可以继续做版本管理,代码合并

git、gitee、github、gitlab

git:版本管理软件,装在操作系统上,有很多命令

gitee:远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置

github:远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置

bitbucket:只有私有仓库

gitlab:公司内部的远程仓库

git安装

git官网

git官网下载

傻瓜式下一步即可。

在win的任何文件位置,可以右击鼠标在当前位置使用git的bash终端,这个终端的特点是可以输入一些linux指令。

image

安装后,git所在目录也会添加到环境变量中,可以直接使用git指令。

调整win右击菜单

在注册表中添加,只要执行以下bat指令即可。

reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
taskkill /f /im explorer.exe & start explorer.exe

git操作区

image-20230222184116353

本地操作区

  • 工作区:存放文件的地方,会被检测改动
  • 暂存区:工作区的变更,可以提交到暂存区
  • 版本库:暂存区的内容,可以提交到版本库

远程仓库

git基础命令

指令 功能 补充
git init 在当前文件夹进行git管理 目录中会多出一个隐藏文件夹.git
git init xx git管理xx文件夹 在当前目录下的xx文件夹进行管理
git status 查看工作区和暂存区的状态 红色表示发生变化的工作区文件,绿色表示提交到暂存区的文件,没有的文件都提交到版本库了。
git add 文件夹/. 将工作区变更提交到暂存区 . 表示提交所有变更
git commit -m '版本注释' 暂存区的内容作为一个版本提交到版本库 暂存区的内容清空,版本库出现一个新版本,提交版本时需要作者和邮箱
git config --global user.email "邮箱" 全局设置邮箱 全局是指本操作系统
git config --global user.name "leethon" 全局设置用户名
git config user.name "lee" 当前git环境设置 局部是指本git管理目录
git log 查看版本库版本信息
git reflog 查看版本库版本信息 更精简一些,版本号只展示前几位
git checkout . 将工作区的变更回退到上次提交的状态 回退前的变更内容会消失,妥善使用
git reset HEAD 将暂存区的内容拉回工作区
git reset --hard 版本号 工作区回退到某个版本 查看版本库信息有版本号,输入版本号不用输全,前几位能区分即可
git reset --soft 版本号 暂存区回退到某个版本 工作区不受影响

git忽略文件

在.git同级目录下,添加文件.gitignore,然后在内部按行书写需要忽略的文件名和文件夹名:

  • 直接匹配所有文件夹下的同名文件(夹)

    .idea
    __pycache__
    
  • 带指定路径下的同名文件

    \x\xx
    
  • 模糊匹配(*表示0~无数个所有字符)

    *.pyc
    

解决pyc文件提交过后,再尝试忽略无效的问题

pyc文件是缓存文件,无关紧要,我们先将所有的pyc文件删除,然后再重新提交一遍即可,以后再产生的pyc文件就不会被git管理了。

可以在git bash环境中执行以下代码来删除所有pyc

find . -name "*.pyc" -exec git rm -f "{}" \;

git分支

git管理只在单线开发显然是不够的,对于项目而言至少有主分支,测试开发分支,有时候需要拉出bug分支。对于协同合作而言,每个人又有个人分支。

不过对于git而言,除了有本地分支,还有线上分支,我们可以在线上部署针对项目的分支,在每个人的本地依据个人的习惯建立分支。所以不必凌乱。

本地分支操作

指令 功能 补充
git branch 查看所有存在分支
git branch 分支名 创建一条新的分支 基于当前分支克隆得到
git checkout 分支名 切换到指定分支 加-b可以创建加切换
git branch -d 分支名 删除分支 一般不删
git merge 分支名 将指定分支合并到当前分支 分支合并可能出现冲突

本地分支是基于版本的分支,工作区和暂存区只存在一个公用区域,当我们在一个分支下进行commit时,无论是什么分支,工作区和暂存区都会清空改动,不过当前分支的工作区使用的是新版本的未改动,而切换到其他分支则工作区会回到上个版本的未改动。

分支合并冲突:

假设:我在master克隆创建了一条新的分支dev,dev对代码进行了改动,并commit提交,master也对代码相同位置进行了改动并提交了,那么当master对dev进行合并时就会产生冲突,此时,合并得到的代码,会在冲突处标记出来,在工作区等待人工处理冲突。

git远程仓库

远程仓库有github、gitee、gitlab,在工作环境中,公司可能会自己搭建gitlab,并给员工账号。

这里选择在gitee上操练一下远程仓库:

创建与连接远程仓库

创建空的远程仓库

image

从本地仓库建立

image

本地连接远程仓库(http)

image

第一次提交代码需要输入用户名密码连接,后续会存储到win的凭据管理器中,以后再连接会自动输入。

本地连接远程仓库(ssh)

通过ssh连接,需要先生成公钥私钥,并将公钥部署到项目上

gitee教你生成公钥私钥

生成的公钥文件存在指定的.ssh文件夹下,打开将公钥部署到项目或者个人公钥上。

image

部署完成后,去复制项目的ssh地址。

image

复制ssh地址后,建立连接。

git remote add origin ssh地址
# origin前文我们用过,如果提示这个名字已被用,我们也可以选择断开之前的连接
git remote remove origin
# 或者选择个新的连接名

建立连接后就可以提交和拉取代码了。

本地同步仓库代码

克隆代码

将整个项目克隆到本地,克隆后记得安装依赖。

git clone 远程仓库地址

提交代码

提交的代码必须是本地commit过的。

# git push 连接名 线上分支名
git push origin master

提交有可能遇到一些问题,最常遇到的就是提示需要先拉取代码再上传。

因为要同步到线上的版本库,版本库是整体变新的,那在之前拉取代码在本地更改良久后,可能线上的版本已经迭代了几次,我们基于老版本的更改可能就存在冲突,为了保证冲突可以被解决,所以需要开发者先再拉取一次线上的新版本与本地代码合并,如果有冲突解决冲突并commit再push提交到线上,如果没有冲突则可以直接提交。

拉取代码

拉取代码就是将线上最新版本库的代码和本地合并。

# git pull 连接名 线上分支名
git pull origin master

对于社畜而言,我们可能最多的操作就是add、commit、pull、push

提交分支

当我们提交的分支的名字线上没有时,git线上管理平台上,会产生一条新的分支,这条分支可以被审核测试后合并,也可以丢弃,我们建立主分支时其实也是用此原理。

image

解决冲突

git会在分支合并时或者拉取代码(本质也是分支合并)时识别明显的冲突,并按照以下形式显示:

<<<<<<< HEAD   
我的代码
=======   
拉取合并过来的代码
>>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5

如果比对后,发现代码功能重复,则需要删除自己的代码,或与他人沟通删除他人的代码,如果代码只是修改到同一位置,则只需要排列开即可。

如果想减少出现冲突,提高拉取代码的频次

git线上分支

建立线上分支

image

image

合并线上分支

dev迭代多次后,现在我想将其合并到master主分支上:

使用Pull Requests工具,创建一个合并的方向dev->master

image

在这里管理者等待审查和测试通过后,即可通过线上合并,审查和测试能够指派人员。

image

git线上回滚:

不推荐,将最初版本的代码通过以下代码强推到线上:

git push origin master -f

为开源项目贡献代码

了解一下即可,毕竟好的项目,作者懒得理你,小的项目,你提交上去作者偷摸自己就改了,还是要搞出自己的名望才有贡献代码的机会。

forked一个库:
image

将自己库上的分支clone下来,自己改动代码(贡献!!)

改动好之后,提交PR给作者等待作者同意合并代码,这样就可以成为代码的贡献者!(作者也许会说,我讨厌没有边界感的人)

image

pycharm使用git

几乎所有的git指令都被封装到pycharm的可视化界面上了。

右击呼出菜单使用git功能
image
上方菜单栏有关git的常用操作
image
右下角使用分支功能
image
左下角查看一些版本信息
image
代码文件版本历史功能
image
image

posted @ 2023-03-01 19:50  leethon  阅读(141)  评论(0编辑  收藏  举报