首页 > 其他分享 >Git基本使用

Git基本使用

时间:2024-04-27 12:34:22浏览次数:26  
标签:基本 origin git -- 代码 dev Git 使用 分支

目录

序言

Git是什么?

Git:分布式 版本控制 的软件

​ 文件版本控制的方式:文件复制--->本地版本控制--->集中式版本控制(中央服务器, 例:SVN, NAS)--->分布式

image

为什么要做版本控制?

  1. 放置线上代码出问题, 做回滚

安装git

  • 安装在自己的电脑上, 只能用这个软件完成在本地的版本控制, 若要多电脑使用, 需要依赖中心(仓库: GitHub gitlab )

  • 官网链接 Git - 安装 Git (git-scm.com)

image

下载完毕后, 一直点next安装即可, 安装好后在鼠标右键菜单上会有显示

image

image

使用

大体流程

版本控制--->git管理文件夹

1. 进入要管理的文件夹, 鼠标右键选择`Git Bash Here`, 在命令框输入 初始化命令 进行初始化, 会在当前路径下创建`.git`隐藏文件夹, 该文件夹存储所有的该文件夹的版本信息及配置
get init #初始化, 让git帮助我们管理当前文件夹

输入检测当前文件状态命令 新的没有在版本中的文件会红色表示

git status #检测当前目录下文件状态

输入增加文件命令 后面是文件名称, 按tab补全.

git add readme.txt #增加一个文件
git add . #增加当前路径下的所有文件
# 红色:新增的文件/修改了原老文件 --->git add
# 绿色:git已经管理起来了, 文件未存档--->git commit -m ''
# 无色或不可见, 表示文件已被管理且创建了新版本, 文件已存档

个人信息配置:用户名、邮箱 【一次即可】

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

生成版本

git commit -m '描述信息' #生成版本

若你修改了文件, 则需要重新检测文件改动, 然后增加需要更新到git的文件或文件夹, 最后生成版本

git log #查看版本记录

回滚

若需要恢复到上一个版本, 那么则需要进行回滚

回滚至之前版本

git log 
git reset --hard 版本号 #回滚

示范:

$ git log
commit 4a7ca6fb18b0a7c728a709759c1a99270f9207f3 (HEAD -> master)#这里的4a7c...就是版本号
Author: 舟清颺 <[email protected]>
Date:   Sat Apr 22 17:05:13 2023 +0800

    测试

Super@YU-ROG MINGW64 /c/MyDatabase/00 临时处理/临时 (master)
$

回滚之之后版本

git reflog 
git reset --hard 版本号

撤销修改

git checkout --文件名称#例如对文件进行了修改, 当需要恢复之前状态时.

从暂存区回滚到工作区

git reset HEAD 文件名称

image

商城&紧急修复bug

分支

分支可以给使用者提供多个环境的可以,意味着你可以把你的工作从开发主线上分离开来 ,以免影响开发主线。 git的文件只保留修改的文件, 别的是通过链接的方式保存的.

紧急修复bug方案

image

主干线master(线上内容), dev分支(新功能分支)

​ 当项目开发到C3时, 创建分支dev(新功能分支, 会自动将C3快照一份),

​ 然后再C3基础上开发C4时(测试版新功能), 发现正式版C3有bug

​ 切换为master分支, 然后创建bug分支, 切换到bug分支, 然后临时创建bug修复版C5

​ 合并: 切换到master分支, 将bug分支C5合并到master, 没问题后删除bug分支.

​ 继续开发: 切换到dev分支, 继续开发C6功能(但是bug还没修复, 因为是继承于C3), 切换到master分支, 将dev分支合并到master分支上

​ 冲突: 若在合并时, 同一文件均做了不同修改, 例如C6没有修复bug但有新功能, C5修复了bug但无新功能. 系统会将C5和C6冲突文件放在一起, 等待你手动修改为唯一, 然后自己创建为C7版本

因为C5和C3指向同一个源头, 故而合并无冲突. 而C6指向C3, C5在master且比C3高级, 所以不同源, 会冲突

命令总结

  • 查看分支

    git branch #查看分支,  默认主分支为master
    
  • 创建分支

    git branch 分支名称
    # git branch dev
    
  • 切换分支

    git checkout 分支名称
    # git checkout dev
    
  • 分支合并(可能产生冲突)

    git merge 要合并的分支#这里是将要被合并分支合并到现在所在分支, 所以要切换到合并分支 git merge  C5
    
    注意:切换分支再合并
    
  • 删除分支

    git branch -d 分支名称#git branch -d bug  修复bug以后, bug分支就没用了, 可以删除了
    

工作流

工作的思维

至少有2个分支, 一个master, 一个dev(开发 )

image

GitHub

代码托管的仓库

GitHubs代码托管平台, 公共开发的免费, 私有的协同的需要租赁

gitlab是代码托管工具,可以自己搭建代码托管仓库

第五阶段:进军三里屯

有钱之后就要造呀,一个人在三里屯买了一层楼做办公室。

image

第一天上班前在家上传代码

首先,需要注册github账号,并创建远程仓库,然后再执行如下命令,将代码上传到github。

image

1. 给远程仓库起别名
	git remote add origin 远程仓库地址
2. 向远程推送代码
	git push -u origin 分支

初次在公司新电脑下载代码

1. 克隆远程仓库代码
	git clone 远程仓库地址 (内部已实现git remote add origin 远程仓库地址)
2. 切换分支
	git checkout 分支

在公司下载完代码后,继续开发

1. 切换到dev分支进行开发
	git checkout dev 
2. 把master分支合并到dev [仅一次]
	git merge master
3. 修改代码
4. 提交代码
	git add . 
	git commit -m 'xx'
	git push origin dev 

下班回到家继续写代码

1. 切换到dev分支进行开发
	git checkout dev 
2. 拉代码
	git pull origin dev 
3. 继续开发

4. 提交代码
	git add . 
	git commit -m 'xx'
	git push origin dev 

到公司继续开发

1. 切换到dev分支进行开发
	git checkout dev 
2. 拉最新代码(不必再clone,只需要通过pull获取最新代码即可)
	git pull origin dev 
3. 继续开发

4. 提交代码
	git add . 
	git commit -m 'xx'
	git push origin dev 

开发完毕,要上线

1. 将dev分支合并到master,进行上线
	git checkout master
	git merge dev 
	git push origin master
2. 把dev分支也推送到远程
	git checkout dev
	git merge master 
	git push origin dev 

在公司约妹子忘记提交代码

1. 拉代码
	git pull origin dev 
2. 继续开发

3. 提交代码
	git add . 
	git commit -m 'xx'

注:忘记push了

回家继续写代码

1. 拉代码,发现在公司写的代码忘记提交...
	git pull origin dev 
	
2. 继续开发其他功能
	
3. 把dev分支也推送到远程
	git add . 
	git commit -m 'xx'
	git push origin dev 

到公司继续写代码

1. 拉代码,把晚上在家写的代码拉到本地(有合并、可能产生冲突)
	git pull origin dev 
	
2. 如果有冲突,手动解决冲突
	
3. 继续开发其他功能
	
4. 把dev分支也推送到远程
	git add . 
	git commit -m 'xx'
	git push origin dev 

其他

git pull origin dev
等价于
git fetch origin dev
git merge origin/dev 

image

rebase的作用?

rebase可以保持提交记录简洁,不分叉。

image

快速解决冲突

  1. 安装beyond compare

  2. 在git中配置

    git config --local merge.tool bc3
    git config --local mergetool.path '/usr/local/bin/bcomp'
    git config --local mergetool.keepBackup false
    
  3. 应用beyond compare 解决冲突

    git mergetool 
    

小总结

  • 添加远程连接(别名)

    git remote add origin 地址
    
  • 推送代码

    git push origin dev 
    
  • 下载代码

    git clone 地址
    
  • 拉取代码

    git pull origin dev 
    等价于
    git fetch origin dev
    git merge origin/dev 
    
  • 保持代码提交整洁(变基)

    git rebase 分支
    
  • 记录图形展示

    git log --graph --pretty=format:"%h %s"
    

第六阶段:多人协同开发工作流

image

创建项目&邀请成员

协同开发时,需要所有成员都可以对同一个项目进行操作,需要邀请成员并赋予权限,否则无法开发。github支持两种创建项目的方式(供多人协同开发)。

  1. 合作者,将用户添加到仓库合作者中之后,该用户就可以向当前仓库提交代码。
    image

  2. 组织,将成员邀请进入组织,组织下可以创建多个仓库,组织成员可以向组织下仓库提交代码。

扩展:Tag标签管理

为了能清晰的管理版本,在公司不会直接使用commit来做版本,会基于Tag来实现:v1.0 、 v1.2 、v2.0 版本。

git tag -a v1.0 -m '版本介绍'        创建本地创建Tag信息
git tag -d v1.0                     删除Tag
git push origin  --tags             将本地tag信息推送到远程仓库
git pull origin  --tags             更新本地tag版本信息

git checkout v.10                   切换tag
git clone -b v0.1 地址               指定tag下载代码

小弟开发

  • 小弟注册Github 或 Gitlab账号

  • 邀请小弟进入组织(默认对组织中的项目具有读权限)
    image

  • 邀请小弟成为某项目的合作者

image

  • 小弟在自己电脑上下载代码并开发

    git clone https://github.com/oldboy-org/dbhot.git
    cd dbhot
    git checkout dev
    git checkout -b dzz 
    写代码...
    
    git add .
    git commit -m '斗地主功能开发完成'
    git push origin ddz
    

code review

  1. 配置,代码review之后才能合并到dev分支。
    image
    image

  2. 小弟提交 code review申请
    image
    image

  3. 组长做 code review
    image

image

提测上线(预发布)

由专门团队或团队leader执行以下步骤:

  1. 基于dev分值创建release分值

    git checkout dev
    git checkout -b release
    
  2. 测试等

  3. 合并到master

    使用pull request
    或
    本地将release合并到master分支
    
  4. 在master分支打tag

    git tag -a v2 -m '第二版 斗地主功能'
    git push origin --tags
    
  5. 运维人员就可以去下载代码做上线了

    git clone -b v2 地址
    

第七阶段:给开源软件贡献代码

  1. fork源代码
    将别人源代码拷贝到我自己的远程仓库。
  2. 在自己仓库进行修改代码
  3. 给源代码的作者提交 修复bug的申请(pull request)

其他

配置

  • 项目配置文件:项目/.git/config

    git config --local user.name '武沛齐'
    git config --local user.email '[email protected]'
    
  • 全局配置文件: ~/.gitconfig

    git config --global user.name 'wupeiq'
    git config --global user.name '[email protected]'
    
  • 系统配置文件:/etc/.gitconfig

    git config --system user.name 'wupeiq'
    git config --system user.name '[email protected]'
    
    注意:需要有root权限
    

应用场景:

git config --local user.name '武沛齐'
git config --local user.email '[email protected]'

git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup false

git remote add origin 地址 ,默认添加在本地配置文件中(--local)

免密码登录

  • URL中体现

    原来的地址:https://github.com/WuPeiqi/dbhot.git
    修改的地址:https://用户名:密码@github.com/WuPeiqi/dbhot.git
    
    git remote add origin https://用户名:密码@github.com/WuPeiqi/dbhot.git
    git push origin master 
    
  • SSH实现

    1. 生成公钥和私钥(默认放在 ~/.ssh目录下,id_rsa.pub公钥、id_rsa私钥)
       ssh-keygen
    2. 拷贝公钥的内容,并设置到github中。
    3. 在git本地中配置ssh地址
    	git remote add origin [email protected]:WuPeiqi/dbhot.git
    	
    4. 以后使用
    	git push origin master 
    
  • git自动管理凭证

git忽略文件

让Git不再管理当前目录下的某些文件。

*.h
!a.h
files/
*.py[c|a|d]

更多参考:https://github.com/github/gitignore

github任务管理相关

  • issues,文档以及任务管理。
  • wiki,项目文档。

结课

感谢各位同学的关注和学习,希望git实战课程对你能够有所帮助,更多资源关注:

  • 小猿圈 <www.apeland.cn>
  • 路飞学城 <www.luffycity.com>
  • 老男孩IT教育 <www.oldboyedu.com>

标签:基本,origin,git,--,代码,dev,Git,使用,分支
From: https://www.cnblogs.com/zqingyang/p/18161913

相关文章

  • 使用 chezmoi & vscode, 管理你的 dotfiles
    什么是dotfilesInUnix-likeoperatingsystems,anyfileorfolderthatstartswithadotcharacter(forexample,/home/user/.config),commonlycalledadotfileordotfile.任何以.开头去命名的文件或者目录都可以称为dotfile,在Unix-like系统一般用的比较多......
  • 硬盘保存及维护基本常识
    目录目录硬盘使用寿命简介硬盘供电简介硬盘保存简介硬盘使用寿命简介硬盘在连续使用3-4年后就需要注意了(一般为质保期时间后一点),5-6年后就需要更换硬盘了.五年左右的时候留意更换机械硬盘,如果不是特备重要的数据,可以考虑观察,一旦有任意一块硬盘出现故障,不要犹豫,立刻重建数......
  • 使用restful请求华三模拟器上的设备接口数据
    一、resful介绍RESTful采用C/S模型。RESTful客户端为使用Python、Ruby或Java等编程语言开发出的RESTful客户端程序或脚本。RESTful服务器为网络设备。通过RESTful功能配置和维护设备的过程为:(1)客户端向服务器发送HTTP/HTTPS请求报文,通过HTTP的方法来操作指定的RESTfulAPI......
  • 使用Files.walk删除文件
    摘要:使用Files.walk删除指定文件名的文件。  使用Files.walk工具,递归判断指定目录中的常规文件路径名是否符合约定名称,如果满足条件就删除。publicclassDelFile{//文件名在此集合就删除privatestaticSet<String>givenFileNames=newHashSet<>();publ......
  • access数据库批量更新中无法使用replace,出现“表达式中 'replace' 函数未定义”的替代
    如果我们想要批量修改数据库table_name表中aa字段中数据,将“|bbbb”删除sql的批量更新中,通用语法是:UPDATEtable_nameSETaa=REPLACE(aa,'|bbbb','')但是,如果是access数据库,就可能出现以下的报错信息:MicrosoftJETDatabaseEngine错误'80040e14'表达式中'replace'函......
  • 使用 Docker 部署 Nuxt.js 应用程序
     来源:https://medium.com/@jkpeyi/deploying-a-nuxt-js-application-with-docker-69bf822c066d  WhendevelopingaNuxt.jsapplication,it’sessentialtobeabletodeployiteasilyandreproducibly.Inthisarticle,wewillexplorehowtouseDockertod......
  • git命令合集(持续更新)
    环境配置设置用户信息gitconfig--globaluser.name“用户名”gitconfig--globaluser.email“邮箱”查看配置信息gitconfig--listgitconfiguser.name初始化本地仓库(新本地仓库只需要操作一次即可)gitinit本地仓库的操作git操作的文件状态* untracked 未......
  • kube-state-metrics和cAdvisorc结合使用的好处
    kube-state-metrics是Kubernetes监控系统的重要组成部分,它提供了对集群中对象状态的实时监控。具体来说,kube-state-metrics通过监听APIServer生成有关资源对象的状态指标,比如Deployment、Node、Pod等。kube-state-metrics只是简单提供一个metrics数据,并不会存储这些指标数据,所以......
  • 谷歌 hackbar 不能使用的问题
    谷歌hackbar不能使用的问题下载hackbar插件:https://github.com/Mr-xn/hackbar2.1.3解压文件,将其拖入chrome扩展程序中点击详情,点击下面来源的链接 会跳转到插件的安装位置,进入theme/js文件,打开hackbar-panel.js文件,将以下三处disable_hackbar()函数替换成init(),并......
  • 动画的12项基本法则
    目录挤压与伸展(Squashandstretch)预期动作(Anticipation)演出方式(Staging)接续动作与关键动作(Straightaheadactionandposetopose)跟随动作与重叠动作(Followthroughandoverlappingaction)渐快与渐慢(Slowinandslowout)弧形(Arcs)附属动作(Secondaryaction)时间控制(T......