Git零基础到入门

一、开始工作区

  1. clone: 克隆一个仓库到新的目录。

    git clone https://github.com/username/repository.git
  2. init: 创建一个新的空 Git 仓库或重新初始化现有的仓库,新建git项目。

    //创建项目两种方式
    //一、本地项目自己创建项目,先创建好工作文件夹,通过init指定,生成隐藏.git文件即为管理成功
    //二、多人协作,本地clone下来
    git init myproject
    cd myproject

二、当前工作上的变更(增删改)

  1. add: (增)将文件内容添加到索引(准备提交)。

    git add file.txt//添加文件从工作区到暂存区,类似svn选中文件,多了一步
    git status//查看文件管理状态
    git commit//从暂存区提交到本地仓库,输入提交备注:wq保存,类似svn点击ok提交git commit -a//合并添加并提交两步
  2. mv: (改)移动或重命名文件、目录或符号链接。

    git mv file.txt newfile.txt //改名
    git commit //提交改名
  3. restore: 恢复工作树中的文件。

    git restore file.txt
  4. rm: (删)从工作树和索引中删除文件。

    git rm file.txt//删除文件
    git commit//提交删除
    

三、查看历史和状态

  1. bisect: 使用二分查找来定位引入错误的提交。

    git bisect start
    git bisect bad
    git bisect good v1.0
    # 测试代码,直到找到引入错误的提交
    git bisect reset
  2. diff: 显示提交之间的差异,提交与工作树之间的差异等。

    git diff
    git diff --cached
    git diff HEAD~1 HEAD
  3. grep: 打印匹配模式的行。

    git grep "search_term"
  4. log: 显示提交日志。

    git log//查看提交记录
    git log --oneline//每条记录一行显示
    git log --author="John Doe"//查看提交记录为john的
    git log -help //查看日志常用帮助
    git log -n//查看几条 
    git log -state //统计具体改进
    git log --grep='test'查看提交记录中含有test的
  5. show: 显示各种类型的对象。

    git show HEAD
    git show 1234abcd
  6. status: 显示工作树的状态。

    git status

四、发展、标记和调整公共历史

  1. backfill: 在部分克隆中下载缺失的对象。

    git backfill
  2. branch: 列出、创建或删除分支。

    git branch//列出所有分支
    git branch new-feature//创建一个新的分支new-feature
    git checkout new-feature//切换到新的分支
    git checkout -b new-feature//合并上面两步的操作
    git branch -d old-feature//删除指定分支
  3. commit: 记录对仓库的更改。

    git commit file1.name file2.name file3.name .. –m "commit messages"
    //commit指提交修改到本地的仓库里,file*.name指的是带commit的文件 
    //–m后面的内容指提交的信息,即备注。git commit –a –m "commit messeages"
    //添加的-a参数会把当前暂存区里所有的修改(包括删除操作)都提交git commit
    //可能有时候手抖忘记输入-m参数,直接输入了git commit,于是出现了下面这个界面,即打开了一个vim编辑
    //界面,敲入i键后保存,输入要添加的message后,输入“ESC”按键退出编辑界面,然后再敲入“:wqa”后会保存
    //message内容,并且提交此次修改,如果敲入“:q”会取消这次提交。git commit --amend
    //把此次提交追加到上一次的commit内容里,并且会回显上次的commit的内容。git commit -m "Add new feature"//提交及备注git commit -am "Fix typo"//合并commit(回退commit到指定版本,重新提交一次)
    reset --soft commitid//修改历史提交记录
    git rebase -i 428726c//先输入rebase插入到指定提交版本
    修改pick为edit
    git commit --amend//修改后提交
    git rebase --continue//提交后再次执行
  4. merge: 合并两个或多个开发历史。

    git merge feature-branch
  5. rebase: 在另一个基础之上重新应用提交。

    git rebase main//变动根基到main
  6. reset: 将当前 HEAD 重置为指定状态。

    git reset --hard HEAD~1
    git reset --soft HEAD~1
    git reset --mixed HEAD~1
  7. switch: 切换分支。

    git switch main
    git switch -c new-feature
  8. tag: 创建、列出、删除或验证一个由 GPG 签名的标签对象。

    git tag v1.0
    git tag -l
    git tag -d v1.0
    git tag -s v1.0 -m "Release version 1.0"

五、协作开发命令

  1. fetch: 从另一个仓库下载对象和引用。

    git fetch //执行后更新了本地提交记录
    git status//再执行此句,可以看到领先落后情况
    git pull//落后拉取
  2. pull: 从另一个仓库或本地分支获取并合并。

    git pull
  3. push: 更新远程引用及其关联的对象。

    git commit -a//先增加到本地仓库
    git push //再推送到远端仓库

注意:协作开发先clone,clone输入远端仓库的账号和密码,拉去成功后,可以通过git config配置域

六、其他有用的命令

  1. help -a: 列出所有可用的子命令。

    git help -a
  2. help -g: 列出一些概念指南。

    git help -g
  3. git config:用于配置提交者邮箱和用户名       
    git config --global user.name
    git config --get user.name

系统级配置 (--system): 影响所有电脑用户(admin和user)和所有仓库,适合系统管理员设置全局默认值。
全局级配置 (--global): 影响当前电脑用户(user1)的全部仓库,适合用户设置个人偏好。     
仓库级配置 (--local 或默认): 仅影响当前仓库,适合项目团队成员设置项目特定的配置,在指定仓库指定名字提交

七、HEAD 的概念

1.指向当前分支的最新提交:

HEAD 总是指向当前分支的最新提交。

例如,如果你在 main 分支上,HEAD 就会指向 main 分支的最新提交。

2.动态变化:

每当你进行一次提交、切换分支、合并或变基等操作时,HEAD 都会更新,指向新的最新提交。

3.HEAD 的常见用法

查看当前 HEAD 指向的提交:

git show HEAD

回退到上一个提交:

git reset HEAD^ //回退一步,几个^就是回退几步
git reset --mixed HEAD^ //暂存区被重置,但工作目录中的文件内容保持不变,即撤销了add和commit
git reset --soft HEAD^//暂存区和工作目录不变,所有更改仍然在暂存区中,即撤销了commit。
git reset --hard HEAD^//重置暂存区和工作目录,永久删除未提交的更改,即撤销了add和commit和更改内容
git reset --hard HEAD~3//回退3个记录
  • HEAD^ 表示 HEAD 的前一个提交。
  • HEAD~1 也表示 HEAD 的前一个提交。

回退到前几个提交:

git reset HEAD~3
  • HEAD~n 表示 HEAD 的前 n 个提交。

切换到某个特定的提交:

git checkout 51363e6
  • 使用 git checkout 命令可以切换到某个特定的提交。

创建一个新的分支并指向某个提交:

git checkout -b new-branch 51363e6

4.HEAD 的特殊用途

解决冲突:

  • 在合并或变基过程中,HEAD 指向的是当前的工作分支,而 MERGE_HEAD 或 REBASE_HEAD 指向的是正在合并或变基的分支。

恢复文件:

git checkout HEAD -- path/to/file
  • 使用 HEAD 可以恢复工作目录中某个文件的最新版本。

八、协调解决实践原则

  1. 发生冲突时,拉同事一起看,不要自己决定
  2. 需要CR,快速对比差异
  3. 分支名要有意义,不要反复用
  4. 分支不要搭便车,功能清晰且独立
  5. 上线就打tag
  6. 优先用merge而不是rebase,否则会丢掉提交时间信息
  7. commit message要有意义,事半功倍
  8. 不要每2行就提交一次导致commit过多

九、commit message原则

1.AngularJS Git Commit Message 规范
        <type>(<scope>):<subject>
        <BLANK LINE>
        <body>
        <BLANK LINE>
        <footer>

2.规范解释

字段描述示例
type提交类型featfixdocsstylerefactortestchore
scope变动范围authenticationuser-interfacedatabase
subject简要描述本次变动implemented new login flow using OAuth 2.0
body详细描述变更情况Several improvements made to the authentication module:<br>- Updated API endpoints for better security practices.<br>- Implemented OAuth 2.0 for user authentication.<br>- Added error handling for invalid credentials.<br>- Improved documentation for developers.
footer可忽略Close #123

3.例子 

feat(authentication): implemented new login flow using OAuth 2.0Several improvements made to the authentication module:
- Updated API endpoints for better security practices.
- Implemented OAuth 2.0 for user authentication.
- Added error handling for invalid credentials.
- Improved documentation for developers.
  • Typefeat 表示这是一个新功能的引入。
  • Scope(authentication) 表示这是认证模块的更改。
  • Subjectimplemented new login flow using OAuth 2.0 描述了本次提交的主要内容。
  • Body: 列出了具体的改进措施,包括更新API端点以提高安全性、实施OAuth 2.0用户认证、增加无效凭据的错误处理以及改善开发者文档。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【R78/G15 开发板测评】串口打印 DHT11 温湿度传感器、DS18B20 温度传感器数据,LabVIEW 上位机绘制演化曲线

【R78/G15 开发板测评】串口打印 DHT11 温湿度传感器、DS18B20 温度传感器数据&#xff0c;LabVIEW 上位机绘制演化曲线 主要介绍了 R78/G15 开发板基于 Arduino IDE 环境串口打印温湿度传感器 DHT11 和温度传感器 DS18B20 传感器的数据&#xff0c;并通过LabVIEW上位机绘制演…

Chromium Mojo(IPC)进程通信演示 c++(2)

122版本自带的mojom通信例子associated-interface 仅供学习参考&#xff1a; codelabs\mojo_examples\02-associated-interface-freezing 一、目录结构如图&#xff1a; 二、interface.mojom接口 1、codelabs\mojo_examples\mojom\interface.mojom // Copyright 2023 The C…

「Mac畅玩鸿蒙与硬件32」UI互动应用篇9 - 番茄钟倒计时应用

本篇将带你实现一个番茄钟倒计时应用&#xff0c;用户可以设置专注时间和休息时间的时长&#xff0c;点击“开始专注”或“开始休息”按钮启动计时&#xff0c;应用会在倒计时结束时进行提醒。番茄钟应用对于管理时间、提升工作效率非常有帮助&#xff0c;并且还会加入猫咪图片…

u盘怎么重装电脑系统_u盘重装电脑系统步骤和详细教程【新手宝典】

u盘怎么重装电脑系统&#xff1f;一个u盘怎么重装电脑系统呢&#xff0c;需要将u盘制作成u盘启动盘pe&#xff0c;然后通过U盘启动盘进入pe进行安装系统&#xff0c;下面小编就教大家u盘重装电脑系统步骤和详细教程。 u盘启动是什么意思&#xff1f; U盘启动盘是一种具有特殊功…

Typora导出pdf手动分页和设置字体样式

手动分页 <div style"page-break-after: always;"></div>鼠标点击代码才会显示&#xff0c;不点击会隐藏。导出pdf时&#xff0c;该位置会分页 设置字体大小、加粗、居中、空格 <p style"font-size:30px; font-weight: bold; text-align: cen…

简简单单的UDP

前言 上一篇了解了TCP的三次握手过程&#xff0c;目的、以及如何保证可靠性、序列号与ACK的作用&#xff0c;最后离开的时候四次挥手的内容&#xff0c;这还只是TCP内容中的冰山一角&#xff0c;是不是觉得TCP这个协议非常复杂&#xff0c;这一篇我们来了解下传输层另外一个协…

淘宝/天猫按图搜索商品:taobao.item_search_img API的奇幻之旅

在这个看脸的时代&#xff0c;我们不仅对人要看颜值&#xff0c;连买东西都要“看脸”了。没错&#xff0c;我说的就是淘宝/天猫的按图搜索商品功能——taobao.item_search_img API。这个功能就像是电商平台的“人脸识别”&#xff0c;只不过它认的是商品的颜值。下面&#xff…

软件工程 软考

开发大型软件系统适用螺旋模型或者RUP模型 螺旋模型强调了风险分析&#xff0c;特别适用于庞大而复杂的、高风险的管理信息系统的开发。喷泉模型是一种以用户需求为动力&#xff0c;以对象为为驱动的模型&#xff0c;主要用于描述面向对象的软件开发过程。该模型的各个阶段没有…

STM32F405RGT6单片机原理图、PCB免费分享

大学时机创比赛时画的板子&#xff0c;比到一半因为疫情回家&#xff0c;无后续&#xff0c;&#xff0c;&#xff0c;已打板验证过&#xff0c;使用stm32f405rgt6做主控 下载文件资源如下 原理图文件 pcb文件 外壳模型文件 stm32f405例程 功能 以下功能全部验证通过 4路…

写一个记录函数执行时间的装饰器

装饰器&#xff0c;这可是Python开发中绕不开的经典话题&#xff0c;不论你是写代码的老手&#xff0c;还是刚入行的萌新&#xff0c;都得和它打上几轮交道。而记录函数执行时间这个功能&#xff0c;更是装饰器中的“常客”。 今天我就带大家来全面解锁一下这块儿的知识&#…

Python 桌面应用开发:使用 Tkinter 创建 GUI 应用程序

Python 桌面应用开发&#xff1a;使用 Tkinter 创建 GUI 应用程序 引言 随着计算机技术的飞速发展&#xff0c;桌面应用程序依然在许多领域中发挥着重要作用。Python 作为一种强大的编程语言&#xff0c;提供了多种工具和库来创建桌面应用程序。其中&#xff0c;Tkinter 是 P…

vue3入门知识(一)

vue3简介 性能的提升 打包大小减少41%初次渲染快55%&#xff0c;更新渲染快133%内存减少54% 源码的升级 使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking 新的特性 1. Composition API&#xff08;组合API&#xff09; setupref与reactivecomput…

AI与就业:技术革命下的职业转型与挑战

内容概要 在当今时代&#xff0c;人工智能的迅猛发展正在深刻影响着我们的就业市场。这一技术革命不仅让我们看到了未来的职业转型&#xff0c;还引发了对于新兴技能需求的深思。随着AI技术的普及&#xff0c;许多传统行业面临着巨大的变革压力&#xff0c;同时也为新兴领域创…

小白初入Android_studio所遇到的坑以及怎么解决

1. 安装Android_studio 参考&#xff1a;Android Studio 安装配置教程 - Windows(详细版)-CSDN博客 Android Studio超级详细讲解下载、安装配置教程&#xff08;建议收藏&#xff09;_androidstudio-CSDN博客 想下旧版本的android_studio的地址&#xff08;仅供参考&#xf…

Uubntu下的Boost库安装及使用

一、Boost库介绍 Boost库是为C语言标准库提供扩展的一些C程序库的总称。 Boost库由Boost社区组织开发、维护。其目的是为C程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C标准库共同工作&#xff0c;并且为其提供扩展功能。Boost库使用Boost License来授权使用&…

【王木头】最大似然估计、最大后验估计

目录 一、最大似然估计&#xff08;MLE&#xff09; 二、最大后验估计&#xff08;MAP&#xff09; 三、MLE 和 MAP 的本质区别 四、当先验是均匀分布时&#xff0c;MLE 和 MAP 等价 五、总结 本文理论参考王木头的视频&#xff1a; 贝叶斯解释“L1和L2正则化”&#xff…

「QT」几何数据类 之 QPointF 浮点型点类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

数据结构与算法——Java实现 54.力扣1008题——前序遍历构造二叉搜索树

不要谩骂以前的自己 他当时一个人站在雾里也很迷茫 ​​​​​​​ ​​​​​​​ ​​​​​​​—— 24.11.6 1008. 前序遍历构造二叉搜索树 给定一个整数数组&#xff0c;它表示BST(即 二叉搜索树 )的 先序遍历 &#xff0c;构造树并返回其根。 保证 对于给定…

【Leecode】Leecode刷题之路第46天之全排列

题目出处 46-全排列-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 46-全排列-官方解法 预备知识 回溯法&#xff1a;一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解…

势不可挡 创新引领 | 生信科技SOLIDWORKS 2025新品发布会·苏州站精彩回顾

2024年11月01日&#xff0c;由生信科技举办的SOLIDWORKS 2025新产品发布会在江苏苏州圆满落幕。现场邀请到制造业的专家学者们一同感受SOLIDWORKS 2025最新功能&#xff0c;探索制造业数字化转型之路。 在苏州站活动开场&#xff0c;达索系统专业客户事业部华东区渠道经理马腾飞…