首页 > 其他分享 >Git 笔记

Git 笔记

时间:2024-06-03 21:32:58浏览次数:22  
标签:文件 git 仓库 笔记 修改 add Git commit

Git 笔记

git 原理

git 的四个区域

四个区域

  • 工作区:平时存放项目代码的地方
  • 暂存区:用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • 本地仓库:仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  • 远程仓库:托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

文件的四种状态

在这里插入图片描述

  • Untracked: 未跟踪, 此文件在文件夹中,但并没有加入到git库,不参与版本控制, 通过 git add 状态变为Staged。
  • Unmodify: 文件已经入库且未修改, 即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改, 而变为Modified,如果使用git rm移出版本库, 则成为Untracked文件。
  • Modified:文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过 git add 可进入暂存 staged 状态,使用git checkout 则丢弃修改,返回到unmodify状态, 这个git checkout即从库中取出文件,覆盖当前修改
  • Staged:暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态。

git 的工作流程

  1. 在工作目录中添加、修改文件;
  2. 将需要进行版本管理的文件 add 到暂存区域;
  3. 将暂存区域的文件 commit 到 git 仓库;
  4. 本地的修改 push 到远程仓库,如果失败则执行第5步(你千万不要把公司代码传到GitHub上去!!!
  5. git pull 将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步
    因此,git 管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

安装git

  • linux 下:
sudo apt install git

验证安装:

git --version
  • windows下:
    在官网下载进行安装:GIt

配置信息和获取帮助

  1. 设置用户名称与邮件地址,不加--global即在项目下使用特定的用户
git config --global user.name "your name"
git config --global user.email "your email"

查看 git 的配置信息

git config --list
  1. 获取帮助
git help <verb>

常用命令

创建仓库

创建仓库有两种方法:

  • 本地仓库
mkdir proj && cd proj
git init
  • 拉取远程仓库
git clone url

跟踪文件 git add

git add <path>
// 比如跟踪目录下所有文件
git add .
// 跟踪 .cpp 文件
git add *.cpp

取消跟踪 git rm

git add 将文件添加到暂存区,git rm 将文件从暂存区删除(不再被 git 管理)

// 从暂存区删除且将文件删除
git rm -f <file>
// 仅将文件从暂存区删除
git rm --cached <file>

提交到仓库 git commit

git commit -a -m "修改了......"
  • 优雅的提交你的修改:
    message的格式:
     <type>(<scope>): <subject>
     <BLANK LINE> 
     <body> 
     <BLANK LINE> 
     <footer>

type:

  • feat: 新特性
  • fix: 修改问题
  • refactor: 代码重构
  • docs: 文档修改
  • style: 代码格式修改, 注意不是 css 修改
  • test: 测试用例修改
  • chore: 其他修改, 比如构建流程, 依赖管理.

scope:

  • commit 影响的范围,即影响的模块或者组件,比如: route, component, utils, build…

subject:

  • commit 的概述

body:

  • commit 具体修改内容, 可以分为多行, 建议符合 50/72 formatting

footer:

  • 一些备注, 通常是 BREAKING CHANGE 或修复的 bug 的链接,或者feature等等其余的信息.

推送到远程分支 git push

  1. 首先,你需要关联远程仓库,在此之前先生成 ssh key
// ssh-keygen [-t type] [-b bits] [-C comment] [-f output_keyfile] [-N new_passphrase] [-P passphrase]
ssh genkey -t rsa -b 2048 -C "youremail"

然后将密钥填到 github 上。
查看分支:

git branch
// 修改 master 为 main
git branch -M main
  1. 关联远程仓库
// git remote add <remote_name> <remote_repository_url>
git remote add origin url
// 查看关联了哪些远程仓库
git remote -v
  1. 推送
    第一次推送时加上 -u [set-upstream]建立追踪关系,后续不加分支名会自动推送到这个分支。
    本地分支可以追踪多个分支。
// git push <remote_name> <local_branch>:<remote_branch>
git push -u origin main:main
  1. 冲突
  • 冲突的产生:假设A和B共同维护一个项目,从同一个分支main开始工作。A克隆了仓库到本地,并在readme.md文件的末尾添加了一行文字:“添加了新功能A”。然后提交更改并推送到GitHub上的main分支。B也在本地仓库中对readme.md进行了修改,在文件末尾添加了另一行:“修复了错误B”。当B尝试推送更改到main分支时,GitHub会阻止推送,因为B的分支落后于远程的main分支(因为A刚刚推送了更新)。
  • 解决:首先git pull,然后手动解决冲突。
git config pull.rebase false  # 合并(默认策略)
git config pull.rebase true   # 变基
git config pull.ff only

commit 的 查看、修改、合并

搭建 git 服务器

标签:文件,git,仓库,笔记,修改,add,Git,commit
From: https://blog.csdn.net/weixin_51332735/article/details/139418541

相关文章

  • g++编译过程学习笔记
    g++编译过程学习笔记学习用例使用很简单的多文件编译项目,进行编译过程的学习,主要文件构成如下:.├──include│└──hello.h└──src├──hello.cpp└──main.cpp其中hello.h声明了一个可以输出HelloWorld!的函数并在hello.cpp中完成实现。ma......
  • JAVA学习笔记6
    学习目标:精通JAVA学习内容:1.方法调用packagecn.itcast.day04.demo02;/*publicclassDemo01Method{publicstaticvoidmain(String[]args){for(intj=1;j<5;j++){for(inti=1;i<20;i++){System.out.print(“*”);}System.out.println();}}}......
  • COD读书笔记
    计算机组成与设计课程复习与CSAPP中类似的部分做了忽略或者简化性能的度量知识回顾对于某个计算机X,定义性能和执行时间的关系表达式:\[\text{性能}_X=\frac{1}{\text{执行时间}_X}\]描述时钟周期和时钟频率的关系:\[\text{时钟周期}=\frac{1}{\text{时钟频率}}\]对......
  • 概率论笔记(上)
    学习视频如下:主要学习视频:《概率论与数理统计》教学视频全集(宋浩)_哔哩哔哩_bilibili其余知识点补充: 二维连续型随机变量的积分计算_哔哩哔哩_bilibili 014二维连续型随机变量_哔哩哔哩_bilibili 矩估计&最大似然估计通俗易懂版解释(自用)_哔哩哔哩_bilibili ......
  • git clone GitHub 仓库报错未授权
    gitcloneGitHub仓库报错未授权grantGithubauthenticationtogitCreated:2024-06-03T20:40+08:00Published:2024-06-03T20:44+08:00Categories:GitGitHub开启双重认证以后,就不能只依靠GitHub的账号密码来gitclonerepo了。这里提供一种方法,安装GithubComman......
  • python学习笔记-03
    流程控制1.顺序流程代码自上而下的执行。2.选择流程/分支流程根据在某一步的判断有选择的执行相应的逻辑。2.1单分支if语句if条件表达式: 代码 代码 ...2.2双分支if-else语句if条件表达式: 代码 代码 ...else:代码代码...2.3多分支if......
  • 初识C语言(02)—学习笔记
    转义字符转义字符释义\0结束标志\n换行\'打印单引号\"打印双引号\\打印一个反斜杠\t水平制表符\a警告字符,蜂鸣?在书写连续多个问号时使用,防止它们被解析成三字符\dddddd表示1~3个八进制的数字\xdddd表示2个十六进制数字\v垂直......
  • Python3 笔记:extend()、append() 和 +号 的区别
    1、extend()可以向一个列表中添加另外一个列表中的所有元素。list1=[1,2,3,4]list2=[3,4,5,6]list1.extend(list2)print(list1) #运行结果:[1,2,3,4,3,4,5,6]print(list2) #运行结果:[3,4,5,6]2、append()用于向列表末尾添加元素。list1=[1,2,3,4]li......
  • 数据结构学习笔记-希尔排序
    希尔排序的算法设计与分析问题描述:设计并分析希尔排序算法【算法设计思想】选择一个初始的增量序列,通常选择数组长度的一半(n/2)作为初始增量。对于每个增量,将数组分割成若干个子序列,每个子序列的长度等于当前增量。例如,如果增量为5,那么数组将被分割成长度为5的子序列。对......
  • git merge vs git rebase
      gitrebase命令经常被认为是Git巫术,初学者应该远离它,但它实际上可以让开发团队在使用时更加轻松。在本文中,我们将gitrebase与相关gitmerge命令进行比较。概念首先要理解的是gitrebase和gitmerge解决了同样的问题。这两个命令都旨在将更改从一个分支集成到另一个分支-......