草庐IT

Git从入门到项目实战,一篇文章吃透Git

努力的小鳴人 2023-07-16 原文


博主今天刚学完Git就来总结笔记了,Git好强大,不愧是目前世界上最先进的分布式版本控制系统

✨即使再小的帆也能远航✨


目录


🔎Git

Git 诞生于一个极富纷争大举创新的年代,Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码,后与BitKeeper出现矛盾终止合作,迫使Linux 开源社区(特别贡献 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper时的经验教训,用时两周开发出自己的版本系统也就是Git

版本控制

  1. 概念
    版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术

  2. 特点
    实现跨区域多人协同开发
    追踪和记载一个或者多个文件的历史记录
    ●组织和保护你的源代码和文档
    ●统计工作量
    并行开发、提高开发效率
    跟踪记录整个软件的开发过程
    ●减轻开发人员的负担,节省时间,同时降低人为错误的影响

版本控制多适用于管理多人协同开发的项目技术,在我们平时开发过程中有很多协同问题,比如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题,在我们的生活和笔记中用一个版本控制器会大大提高我们的效率


🔥常见版本控制工具

目前主流的版本控制器有如下:
Git
SVN(Subversion)
CVS(Concurrent Versions System)
VSS(Micorosoft Visual SourceSafe)
TFS(Team Foundation Server)
Visual Studio Online

还有很多很多版本控制产品:Perforce、Rational ClearCase、RCS、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault)现在影响力最大且使用最广泛的是Git与SVN


🔥版本控制分类

👌本地版本控制

记录下本地每次文件(或版本、补丁文件)的更新,适合个人使用,版本控制工具:RCS

👌集中版本控制

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
版本控制工具:SVN、CVS、VSS

用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。且所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份

👌分布式版本控制

所有版本信息仓库全部同步到本地的每个用户,用户可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用

它不会因为服务器损坏或者网络问题,造成不能工作的情况


🎈Git 与SVN 的区别

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,协同的方法:如自己在电脑上更改文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新的代码和文件
Git是目前世界上最先进的分布式版本控制系统

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作时用的是自己的电脑,所以要从中央服务器得到最新的版本后再工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高


Git下载与安装

🎁温馨提示: 一般在下载都很慢,可以在镜像网站中下载就舒服多了
淘宝镜像网站http://npm.taobao.org/mirrors/git-for-windows/
 
到最下面下载最新版本就行

 
选择适合自己的位数


打开 git 官网 >> https://git-scm.com/

选择自己需要的版本

下载完成后,双击安装:无脑式下一步next 即可

 
下载完成后
在开始菜单中

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git


Git基本知识

🔥常用命令(Linux)

命令作用
cd改变目录
cd . .回退到上一个目录
pwd显示当前所在的目录路径
ls(ll)列出当前目录中的所有文件
touch新建一个文件
rm删除一个文件
mkdir:新建一个目录(文件夹)
rm -r删除一个文件夹
rm -rf /切勿在Linux中尝试,会删除电脑中全部文件
mv移动文件, mv 文件名 目标文件夹,须保证文件和目标文件夹在同一目录下
reset重新初始化终端/清屏
clear清屏
history查看命令历史
help帮助
exit退出
#表示注释

查看配置

git config -l


查看不同级别的配置文件:

#查看系统config
git config --system --list
  
#查看当前用户(global)配置
git config --global  --list

设置用户名与邮箱
必要的
设置一次就行了

git config --global user.name "名称"
git config --global user.email "邮箱"

🔥分支

分支就是从开发主线分离进行重大bug的修改,开发新功能,以免影响开发主线

查看本地分支

git branch

查看远程分支

git branch -r

创建本地分支
依旧在当前分支

git branch 分支名

切换分支

git checkout 分支名

创建并切换分支

git checkout -b 分支名

合并分支

git merge 分支名称

删除分支
不能删除当前分支,应切换到其他分支再删除需删除的分支

# 删除,可能会删除失败
git branch -d 分支名
# 强制删除分支
git branch -D 分支名 

🎁分支冲突:
如果同一个文件在合并分支时都被修改了则会引起冲突:解决办法是我们可以修改冲突文件后重新提交,中进行选择要保留他的代码还是你的代码
🎁主分支:
主分支master应非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后dev分支代码稳定后可以合并到主分支master上来


🔥三个区域

关系图

👌工作区

Working Directory
平时存放项目代码的地方

👌暂存区

Stage/Index
用于临时存放你的改动,保存即将提交到文件列表信息

👌仓库

Git Directory
存放数据的位置以及提交到所有版本的数据

如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域

git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

个人本地仓库的搭建
选中一个文件夹,在git bash中运行
创建全新的个人仓库

# 在当前目录新建一个Git代码库
$ git init

码云gitee

🔥gitee的使用

国内好用的远程仓库
用github很慢,不方便,这个也一样

官网 >> https://gitee.com/
注册并登录后

新建仓库

填写好信息即可创建

之后复制下图中的链接就可以在本地克隆远端仓库的代码文件了

🔥配置SSH公钥

在C盘用户名下文件夹 .ssh 右键,点击下图

输入
ssh-keygen -t rsa
不断回车至下图 (按默认信息,不用管)

检验是否配置成功
**ssh -T git@gitee.com**出现下图就是成功

成功后会在 .ssh 中生成两个文件

点击框选的文件,并复制里面的内容(密钥),粘贴到下图
复制的时候尽量不要用 Ctrl+C
在个人设置中

点击确定绑定成功

🔥操作远端仓库

绑定远程仓库地址

# 远端名称,默认是origin;仓库路径,从远端服务器获取此URL
git remote add <远端名称><仓库路径>

查看远程仓库

git remote

从仓库推送远程仓库

# -f 表示强制覆盖
# --set-upstream推送到远端的同时并建立起和远端分支的关联关系
git push [-f][--set-upstream][远端名称[本地分支名][远端分支名]]

若远程分支名和本地分支名相同,则可以只写本地分支:git push origin master

查看本地分支与远程分支关系

git branch -vv

克隆远端仓库

# 克隆一个项目和它的整个代码包括版本信息
$ git clone #链接

从远程仓库抓取
将仓库的更新都抓取到本地,不会进行合并

git fetch[remote name][branch name]

从远程仓库拉取
将远端仓库的修改拉到本地并自动进行合并

git pull[remote name][branch name]

IDEA集成Git

idea绑定Git两种方法:
第一种:把远程仓库克隆过来的文件夹(已经绑定了远端仓库)中的所有东西拷贝到目标项目中

第二种:创建项目时在远程仓库克隆过来的文件夹下创建
这个创建完成之后

idea左侧文件的颜色
红色:选中状态
绿色:被添加到暂存区了(新版IDEA会自动添加到暂存区)

🔥添加到暂存区方法

1.右键目标文件

2. IDEA下方 Terminal 输入命令

3. 点击IDEA右上角绿色箭头
勾选你想提交的文件就行


Git是目前世界上最先进的分布式版本控制系统,学了一天收获也不少,有什么问题欢迎wx哦~

有关Git从入门到项目实战,一篇文章吃透Git的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  4. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  5. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  6. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  7. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  8. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  9. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  10. ruby - 如何在 Ruby 字符串中插入项目符号字符? - 2

    我正在尝试创建一个带有项目符号字符的Ruby1.9.3字符串。str="•"+"helloworld"但是,当我输入它时,我收到有关非ASCII字符的语法错误。我该怎么做? 最佳答案 你可以把Unicode字符放在那里。str="\u2022"+"helloworld" 关于ruby-如何在Ruby字符串中插入项目符号字符?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1195

随机推荐