首页 > 其他分享 >Git 学习

Git 学习

时间:2024-01-18 20:25:11浏览次数:37  
标签:git 版本 学习 修改 Git 开发者 提交 分支

Git 学习

git分布式版本控制系统.

每一个开发者都同事拥有一个相当于当前文件操作的工作区与一个用于存储该项目所有版本,分支,以及标签的本地版本库.

开发者A 开发者B
A A

A->B A->C

A->B->
->C ->D

开发者A导入了开发者B所做的修改,二人的修改会被合并在一起,形成一个新的提交.

我们可以对分支历史进行改造,排序和删除.

有利于为该项目建立更好的历史文档,我们称这种处理为交互式重订(interactive rebasing)

创建版本库

在该项目的目录中使用git init命令,对于一个带版本库的项目目录,我们称之为交互区.

当在git管理的目录中添加了新文件却没有add,那么这个文件并未注册到版本库.会显示untracked file

git status 只会对已经add过的文件进行标记.

delete: bar.txt

modified: foo.txt

所有的修改都必须要都必须要先被归档成一次新的提交.

对修改过的文件和新文件执行add

对删除的文件执行rm

归纳后使用git commit -m 进行提交

pull命令从原版本库中取回了新的修改,将他们与克隆体中的本地修改进行对比,并在工作区中合并两边的修改,创建一次新的提交,这个过程就是所谓的合并.

|
| *

  • |
    | *
  • |

每一个*代表依次提交

使用push命令上载修改

git push将修改上传到共享版本库

如果另一个开发者在我们之前已经做过一次push操作,此次push命令就会被拒绝,这时候要先做一次pull操作,将其他上载的更新取回并在本地合并.

为了让克隆版本库也得到相应的修改,我们需要在clone版本库执行pull命令.

在git中,恢复到某一版本通常称之为checkout(检出)操作.

在git中每一个开发者都有一个属于自己的版本库克隆体.每个人在一段开发过后就有了一部不同于其他开发者的版本库历史.

git log -n 3 显示该项目的最后3次提交

git log --oneline 每次提交只显示一行

多次提交

提交的产生通常分为两个步骤

  1. 使用add命令将所有相关的修改纳入到一个缓存区(staging area 或 index)

git status: 显示的状态

  1. change to be committed: 下次提交被纳入版本库中,被修改的文件.
  2. changed but not update
  3. untraced files

在git中更新则是指将工作区中的修改集中到暂存区中

git status --short

工作区中发生了很多修改,使用--short选项,以便相关输出显示的更紧凑一些.

选择性提交

1.git status 位于上文提到的2,3尚未被注册为下次提交的文件

  1. 收集相关修改

  2. 创建提交

暂存区不仅要存储修改所发生的位置,同时也要存储修改的内容.

git diff 在不带任何选项的情况下,diff命令所显示的就是工作区中尚未被注册的本地修改.
就是显示暂存区与工作区的不同之处.

git stash

如果我们在某些事情进行到中间的时候突然发现自己需要快速修复某个问题.

git stash 将保存工作区与暂存区.

分支

使用git checkout 分支名 //来切换分支

git branch 分支名 //创建分支

git checkout -b 分支名 //创建并切换分支

工作区或暂存区存在着一些修改,则需要提交后切换分支.

删除分支

git branch -d 分支名 //已被终止的分支

git branch -D 分支名 //活跃的也删除

恢复被删除的分支

git branch 分支名 (散列值)

git reflog 查看分支散列值

合并分支:

A-B-E
\C-D

A-B-E-F
\ /
C-D

E D合并时会发生冲突

冲突

编辑冲突: 通常发生在两个开发者对同一行代码做出了不同修改的时候.

内容冲突: 通常发生在两个开发者对某份代码的n个部分作出果子修改的时候.

  1. 工作区中的文件代表了合并结果.
  2. 无冲突部分的修改合并将会记录在暂存区中以便下一次提交.
  3. 将会有冲突表示被插入
  4. 冲突所在之外会注册到下一次提交中

首先是这些修改的行在当前分支(head)中的内容

接下来列出他们在另一个分支(MERGE_HEAD)中的内容.如下所示:

<<<<HEAD 
to .... the valley

======

for swimming

>>>>one-branch

git tag

我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起来一样,不论是运维发布拉取,或者以后的代码版本管理,都是十分方便的

git 下打标签其实有2种情况

轻量级的:它其实是一个独立的分支,或者说是一个不可变的分支.指向特定提交对象的引用

带附注的:实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证,电子邮件地址和日期,一般我们都建议使用含附注型的标签,以便保留相关信息

标签:git,版本,学习,修改,Git,开发者,提交,分支
From: https://www.cnblogs.com/qwerty-ll/p/17973300

相关文章

  • GitHug 攻略
    GitHug攻略Githugisdesignedtogiveyouapracticalwayoflearninggit.Ithasaseriesoflevels,eachrequiringyoutousegitcommandstoarriveatacorrectanswer.https://github.com/Gazler/githuglevel1初始化一个仓库gitinitlevel2设置git的用户......
  • 为什么机器学习习惯设置random_state = 42 ?
    在学机器学习写代码时一直有个小疑问,为什么大家习惯设置random_state=42?甚至许多官方文档也是用的42这个数字。简单上网搜索之后发现原来是在致敬这本道格拉斯·亚当斯所作的幽默荒诞风的科幻小说——《银河系漫游指南》(Thehitchhiker'sguidetothegalaxy)花了两天时间把这本......
  • 学习笔记7
    DataFrame的创建Spark2.0版本开始,Spark使用全新的SparkSession接口替代Spark1.6中的SQLContext及HiveContext接口来实现其对数据加载、转换、处理等功能。SparkSession实现了SQLContext及HiveContext所有功能;SparkSession支持从不同的数据源加载数据,并把数据转换成DataFrame,支持......
  • 算法学习Day30 n皇后
    Day30n皇后ByHQWQF2024/01/16笔记51.N皇后按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题研究的是如何将n 个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数n,返回所有不同的 n皇后问题的解决方......
  • Merge sort【1月18日学习笔记】
    点击查看代码//Mergesort#include<iostream>usingnamespacestd;voidmerge(intL[],intR[],intA[],intnL,intnR){//将两个已排序数组合并填入 inti=0,j=0,k=0;//i,j为未拾取元素索引,k为归并数组索引 while(i<nL&&j<nR){ if(L[i]<R[j]){......
  • Golang静态类型、编译型的语言学习
    golang属于一种静态类型、编译型的语言,它的设计目标是提供一种简单、高效、可靠的编程语言,适用于构建大型软件系统。Go语言的设计哲学是简洁、直接、易于理解和使用,Go语言支持并发编程,引入了goroutine和channel的概念,使得并发编程更加简单和高效,无论是用于Web开发、服务器编程、......
  • Flask的简单学习
    简介Flask是一个非常小的PythonWeb框架,被称为微型框架;只提供了一个稳健的核心,其他功能全部是通过扩展实现的;意思就是我们可以根据项目的需要量身定制,也意味着我们需要学习各种扩展库的使用。flask的安装pipinstallflask创建一个flask项目目录结构如下app.py主文件,所......
  • Markdown的学习
    markdown的基本语法标题三级标题四级标题几级标题前面就用几个#然后空格输入标题名称。最多只支持到6级标题字体倾斜你好给要倾斜的文字左右两边各加一个*就可以。加粗你好给要加粗的文字左右两边各加两个*就完成了。倾斜并且加粗你好给要倾斜并且加粗的文字两边各......
  • django的简单学习
    前言以下项目实现基于一个投票系统安装django命令行安装pipinstalldjangopycharm安装pycharm的setting里找到这个,点击+号,搜索django点击InstallPackage新建一个django项目命令行创建项目(windows)在pip安装完之后,在python的Scripts目录里有django-admin.exe:::tip......
  • Android studio 集成github copilot
    AndroidStudio集成GitHubCopilot引言在软件开发的过程中,编写代码是一个不可避免的环节。而对于一些常见的代码块,我们可能已经写了很多次。在这种情况下,GitHubCopilot可以成为我们的好帮手。GitHubCopilot是由GitHub开发的人工智能代码助手,它通过学习开源代码库中的代码......