李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
工具
正文
Git概述
Leefs
2021-08-09 PM
1243℃
0条
# Git概述 ### 一、Git简介 #### 概念 Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 官网地址:https://git-scm.com/ #### 特点 ##### 优点 + 适合分布式开发,强调个体; + 公共服务器压力和数据量都不会太大; + 速度快、灵活; + 任意两个开发者之间可以很容易的解决冲突; + 离线工作 ##### 缺点 + 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息; + 权限控制不友好,如果需要对开发者限制各种权限的建议使用SVN ### 二、Git的工作区域和流程 ![01.Git概述01.jpg](https://lilinchao.com/usr/uploads/2021/08/4091692574.jpg) #### 工作区域介绍 **工作区(workspace):**就是平时进行开发改动的地方,是当前看到最新的内容,在开发的过程也就是对工作区的操作 **暂存区(Index):**当执行 `git add` 的命令后,工作区的文件就会被移入暂存区,暂存区标记了当前工作区中那些内容是被 Git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 `git add` 先提交到暂存区。 **本地仓库(Repository):**位于自己的电脑上,通过 `git commit` 提交暂存区的内容,会进入本地仓库。 **远程仓库(Remote):**用来托管代码的服务器,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改,本地仓库修改完代码后通过 `git push` 命令同步代码到远程仓库。 #### 基本流程 **拉取:** 1. 使用git命令将远程仓库上的文件克隆到本地仓库中 2. 从本地仓库中检出文件到工作区(一般都自动完成) **提交:** 1. 将新建的文件添加到暂存区 2. 将暂存区中的内容提交到本地仓库 3. 将本地仓库中的内容推送到远程仓库上 ### 三、Git基本操作 #### git init ``` # 创建成功后目标目录中会生成一个.git目录,此目录Git的管理信息 git init ``` #### git clone ``` # 从远程主机克隆一个版本库 git clone <版本库的网址> # 指定不同的目录名,可以将目录名作为git clone命令的第二个参数 git clone <版本库的网址> <本地目录名> # git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等 git clone http[s]://example.com/path/to/repo.git/ git clone ssh://example.com/path/to/repo.git/ git clone git://example.com/path/to/repo.git/ git clone /opt/git/project.git git clone file:///opt/git/project.git git clone ftp[s]://example.com/path/to/repo.git/ git clone rsync://example.com/path/to/repo.git/ ``` #### git add ``` # 添加某个文件到暂存区,后面可以跟多个文件,以空格区分 git add xxx # 添加当前更改的所有文件到暂存区。 git add . ``` #### git commit ``` # 提交暂存的更改,会新开编辑器进行编辑 git commit # 提交暂存的更改,并记录下备注 git commit -m "you message" # 等同于 git add . && git commit -m git commit -am # 对最近一次的提交的信息进行修改,此操作会修改commit的hash值 git commit --amend ``` #### git pull ``` # 从远程仓库拉取代码并合并到本地,可简写为 git pull 等同于 git fetch && git merge git pull <远程主机名> <远程分支名>:<本地分支名> # 使用rebase的模式进行合并 git pull --rebase <远程主机名> <远程分支名>:<本地分支名> ``` #### git fetch 与 `git pull` 不同的是 `git fetch` 操作仅仅只会拉取远程的更改,不会自动进行 merge 操作。对你当前的代码没有影响 ``` # 获取远程仓库特定分支的更新 git fetch <远程主机名> <分支名> # 获取远程仓库所有分支的更新 git fetch --all ``` #### git branch ``` # 新建本地分支,但不切换 git branch
# 查看本地分支 git branch # 查看远程分支 git branch -r # 查看本地和远程分支 git branch -a # 删除本地分支 git branch -D
# 重新命名分支 git branch -m
``` #### git push ``` # git push命令用于将本地分支的更新,推送到远程主机 git push <远程主机名> <本地分支名>:<远程分支名> # 将本地的所有分支都推送到远程主机,这时需要使用--all选项 git push --all <远程主机名> ``` ### 总结 | 工作目录 | 暂存区 | git 仓库 | 远程仓库 | | --------------- | -------------------- | -------------------- | ------------ | | 被Git管理的项目 | 临时存放被修改的文件 | 目录用于存放提交记录 | 远程代码仓库 | | `git init` | `git add` | `git commit` | `git push` | *附:* [参考文章链接](https://juejin.cn/post/6929439197954572302)
标签:
Git
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://www.lilinchao.com/archives/1378.html
上一篇
四、Stream流List和Map互转
下一篇
【转载】01.初识Kafka
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
栈
锁
并发线程
人工智能
Spring
Scala
Stream流
MyBatis-Plus
Spark
线程池
Livy
Shiro
Elasticsearch
字符串
Java编程思想
排序
Sentinel
MyBatis
容器深入研究
MyBatisX
Hive
gorm
高并发
Yarn
Elastisearch
Spark Core
nginx
GET和POST
VUE
Jenkins
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞