首页 > 其他分享 >git 日常使用

git 日常使用

时间:2023-03-05 23:59:04浏览次数:30  
标签:git remote 版本 -- 日常 branch 使用 分支

原理部分

代码版本控制发展历程

  1. 手动复制,命令不同不版本,缺点:容易出错。
  2. CVS,集中式代码管理版本控制系统,缺点:单点故障。
  3. DVCS,分布式代码管理版本控制系统。

工作原理

  1. 在项目文件发生变更时,保存所有变更文件快照。
  2. 在本地管理项目,除了用push推送项目变更到远程时。
  3. 对目录中文件的任何变更,git都能发现,因为这些文件都有sha1完整性校验。
  4. 对于版本的任何变,git都是以增量方式进行保存,不会弄乱版本内容。

相关内容

  1. 工作区(Working Directory):某个版本所有文件的拷贝,用来编辑。
  2. 暂存区(Staging Area):git add后生成的索引文件,保存已修改的文件索引。
  3. 新建/修改文件 (工作区) -> git add (暂存区) -> git commit (工作区)
  4. 文件状态只有三种:staged (已暂存),modified (已修改),commited (已提交)

配置部分

安装 git

  1. windows下直接下载安装版本并下一步。
  2. linux下sudo yum install git

配置 git

  1. 配置提交用户账号信息:
$ git config [--global] user.name "John Doe"
$ git config [--global] user.email [email protected]
  1. 查看已配置信息:
    git config --list 查看所有配置
    git config user.name 查看单个配置
  2. 相关参数:
    --global 为全局设置,保存在:/etc/gitconfig
    不加 --global 时,保存在项目目录:.git/config

使用部分

开始项目

  1. 在新建项目,或已有的代码中使用 git
    git init //在一个空项目目录中,初始化仓库(生成当前目录文件快照,方便后续进行管理)
  2. 使用网上已有的或开源项目生成项目
    git clone [项目git地址] [为空时克隆到当前目录,不为空时克隆到该名称目录中]

管理工作区

git status //查看工作区中,相对上次 commit,修改了的文件列表。
git rm [文件名] -f //取消某个文件的版本控制,并删除文件,如果已暂存,可以用 -f 强制删除。
git rm --cached [文件名正则] //取消某个文件的版本控制,但不删除本地文件,相当于 ignore 文件。
git mv [原文件名] [新文件名] //修改本地文件名,并生效在版本控制中。
git diff [--staged] [文件名] //查看工作区或暂存区中,相较上次 commit,各个文件做了哪些修改。
git checkout -- [文件] -b //谨慎使用。取消工作区对某文件的修改,使它恢复到上次版本提交时的状态,-b 切换并检出切换分支。

管理暂存区

git add [ . 或 文件名] //提交所有变更文件(用“.”),提交指定文件用文件名,到暂存区(staged)。
git reset HEAD [文件名] //可以把 git add 到暂存区的修改取出来。

管理提交 (一个提交包含了本次修改文件列表,修改内容,提交信息)

git commit -m "新的版本说明" -a //提交暂存区所有变更为新版本,-a 为自动 git add 操作。
git log [-p] [-2]//查看所有历史提交版本,-p 显示版本的diff差异,-2 为只显示最近2个版本。
git log --pretty=oneline //只显示单行的历史版本信息,版本+备注。
git commit amend //覆盖上次提交,可做为提交补充。[amend 修正]

管理分支

分支只是一个只指向提交的一个指针,不同分支指向了不同的提交版本,HEAD标识当前分支。
分支可以用来保存多个正在编辑的工作区状态,以便适应各种紧急、分状态情况。
git branch [-v] //查看所有分支,带*表示当前的分支,-v为详情,--no-merged为未合并的分支。
git branch [branch-name] //新建分支,不会切换。
git branch -u [remote-branch-name] //跟踪分支 1
git branch --set-upstream-to [remote:remote-branch] //跟踪分支 2
git checkout --track [branch-name] //检出并切换分支,--track 跟踪分支 3
git checkout -b [branch-name] [remote [:remote-bracn-name]] //拉取并跟踪分支 4
git branch -vv //查看本地所有分支跟踪情况
git merge [branch-name] //合并某分支到当前分支,即同步变更,会从最近的共同父版本开始。如果两个分支中间有跨度,会自动生成新的分支,除非有冲突,即各自做了不同修改,需要手动处理,可以使用 git mergetool 工具来帮助处理冲突。
git mergetool // 根据提示选择一个工具来解决冲突
git branch -d [branch-name] //删除本地分支。
git push [local-branch] --delete [remote-branch] //删除远程分支,删除指针,数据延迟删除。
git rebase [branch] //变基,将当前分支变更做为某分支的补丁,需要回到被补丁分支上 merge。
git rebase --onto [branch1] [branch2] [branch3] //将3基于2的变更,变基到 1 上
git rebase [branch1] [branch2] //将分支 2 的修改变基到分支 1 上,变基有风险。
//变基是指删除一些提交,然后整合到一起,rebase需谨慎,如果rebase造成混乱,可使用rebase应对。

远程同步

git remote [-v] //查看所有远程仓库,-v是详细信息。
git remote add [remote-name] [remote-url] //新增远程仓库地址。
git remote show [orgin] //查看远程仓库指定分支
git ls-remote //远程分支和标签查看
git fetch [remote-name] //从指定远程仓库拉取差异代码。
git pull //从远程分支上拉取差异代码
git push [origin] [master [:remote-branch-name]] //推送项目变更到远程服务器。
git remote rename [name1] [name2] //变更远程仓库标识名。
git remote rm [remote-name] //删除指定远程仓库链接。

管理标签 (轻量标签:版本别名;附注标签:完整文件的版本)

git tag //查看已有标签
git tag -l 'tag-name' //查看指定标签
git tag [标签名] [sha1前七位] //新建轻量标签
git tag -a [标签名] -m ['标签备注'] [sha1前七位] //新建附注标签
git push origin [标签名] [--tags] //推送标签名,--tags 为自动推送所有标签
git checkout -b [branch] [tagname] //检出指定标签为新分支 branch

管理命令别名

git config --global xxx [ alias.xxx ] //给命令取别名
git config –global credential.helper cache //缓存密码

实际应用

使用长期分支

例如仅在 master 上保留稳定版本代码,在 dev 版本上保存开发过程中的分支,在release中保存发行版本,在feature中保存各种特性的版本,另外还有 beta测试版本。一般 origin 为远程父分支,master 为本地主分支。

使用短期特性分支

特性分支用来实现工作中的某个单一特性,在它不成熟的时候可以一直不合并,一直到功能完善以后,再选择将它合并到主分支。

标签:git,remote,版本,--,日常,branch,使用,分支
From: https://www.cnblogs.com/juriln/p/17182212.html

相关文章

  • 轻量级压测平台RunnerGo简介及使用教程
    RunnerGo是一个功能强大,使用简单的性能测试平台,它基于go语言开发,支持接口管理、自动化测试、性能测试等功能。更重要的是,RunnerGo完全开源。下图为RunnerGo首页的数据大屏......
  • Vue过滤器的使用详解(代码实现)
    过滤器的功能是对要显示的数据进行格式化后再显示,其并没有改变原本的数据,只是产生新的对应的数据 过滤器,其实不是必须要用的东西,它只是vue给我们提供的新的数据处理方式......
  • 33 openEuler使用LVM管理硬盘-管理逻辑卷
    33openEuler使用LVM管理硬盘-管理逻辑卷33.1创建逻辑卷可在root权限下通过lvcreate命令创建逻辑卷。#lvcreate[option]vgname其中:option:命令参数选项。常用的参......
  • .Net 使用扩展方法将Where扩展成WhereIf
    官方的Linq中并没有WhereIf方法,为了方便我们的日常开发,使用扩展方法实现WhereIf。publicstaticclassQueryableExtensions{publicstaticIQueryable<T>Whe......
  • git 日常使用
    原理部分代码版本控制发展历程手动复制,命令不同不版本,缺点:容易出错。CVS,集中式代码管理版本控制系统,缺点:单点故障。DVCS,分布式代码管理版本控制系统。工作原理在......
  • Git操作
    目录一、Git命令行操作1.1本地库初始化1.2设置签名1.3基本操作1.3.1状态查看1.3.2添加1.3.3提交1.3.4查看历史记录1.3.5前进后退1.3.6reset的三个参数比较1.3.7删......
  • 使用注解开发SpringMVC,也是以后开发的模板(重点)
    注解版配置SpringMVC(重点)第一步:新建一个moudel,添加web支持!建立包结构top.lostyou.controller第二步:由于maven可能存在资源过滤问题,我们将配置完善<!--在build中......
  • Fireasy3 揭秘 -- 使用 SourceGeneraor 实现动态代理(AOP)
    目录Fireasy3揭秘--依赖注入与服务发现Fireasy3揭秘--自动服务部署Fireasy3揭秘--使用SourceGeneraor改进服务发现Fireasy3揭秘--使用SourceGeneraor......
  • salesforce零基础学习(一百二十六) Picklist Value Set 优缺点和使用探讨
    本篇参考:https://help.salesforce.com/s/articleView?id=sf.fields_creating_global_picklists.htm&type=5当我们创建Picklist字段时,比如很多表很多字段都会用到同样的p......
  • MapTalks地图滤镜使用
    背景    最近看到ArcGISMapsSDKforJavaScript官网有个聚焦效果的例子,于是想在MapTalks上也试试。原理    滤镜的原理主要是用的convas的cssfilter属性,让它......