GIT分布式版本控制系统 | 命令讲解入门

news2024/11/13 12:55:11

Git概述

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件;分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

Git常用命令

命令名称作用
git config --global user.name 用户名设置用户签名
git congfig --global user.email 邮箱设置用户邮箱
git init初始化本地库
git status查看本地库状态
git add 文件名添加到缓存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

工作区(写代码) == git add ==》 暂存区(临时存储) == git commit == 》 本地库(历史版本)

设置用户签名/邮箱

ws199@DESKTOP-2N1I9JA MINGW64 ~/Desktop
$ git config --global user.name weishuo

ws199@DESKTOP-2N1I9JA MINGW64 ~/Desktop
$ git config --global user.email weishuo@weishuo.com

初始化本地库——git init

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo
$ git init
Initialized empty Git repository in D:/GIT/Git-Space/git.demo/.git/

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$

查看本地库状态——git status

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git status
On branch master	#当前本地库分支位置

No commits yet		#目前没有文件要提交

nothing to commit (create/copy files and use "git add" to track) 	#未提交,且无文件提交


ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

添加暂存区——git add

git add 文件名
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git add hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory


ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.txt

文件删除暂存区——rm --cached

rm --cached 文件名
#删除暂存区,仍然存在工作区
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git rm --cached hello.txt
rm 'hello.txt'

提交本地库——git commit -m

将暂存区文件提交到本地库

git commit -m “日志信息” 文件名
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git commit -m "first commit" hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
[master (root-commit) 26da280] first commit
 1 file changed, 7 insertions(+)
 create mode 100644 hello.txt

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git status
On branch master
nothing to commit, working tree clean

查看版本信息——git reflog

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git reflog
26da280 (HEAD -> master) HEAD@{0}: commit (initial): first commit
#版本号													版本

查看版本详细信息——git log

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git log
commit 26da28016adaee50fc76b4be71fbf2b4b3fda929 (HEAD -> master)
Author: weishuo <weishuo@weishuo.com>
Date:   Tue Apr 12 21:53:00 2022 +0800

    first commit

版本穿梭——git reset --hard 版本号

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git reset --hard ffce8cd
HEAD is now at ffce8cd second commit

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git reflog
ffce8cd (HEAD -> master) HEAD@{0}: reset: moving to ffce8cd
534cbd3 HEAD@{1}: commit: third commit
ffce8cd (HEAD -> master) HEAD@{2}: commit: second commit
26da280 HEAD@{3}: commit (initial): first commit

分支的操作

命令名称作用
git branch 分支名创建分支
git branch -v查看当前分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

查看当前分支——git branch -v

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git branch -v
* master 534cbd3 third commit

创建分支——git branch 分支名

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git branch hot-fix

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git branch -v
  hot-fix 534cbd3 third commit
* master  534cbd3 third commit

切换分支——git checkout 分支名

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (hot-fix)
$

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (hot-fix)
$ git branch -v
* hot-fix 534cbd3 third commit
  master  534cbd3 third commit

合并分支——git merge 分支名

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git merge hot-fix
Updating 534cbd3..017517e
Fast-forward
 hello.txt | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)


合并分支(冲突合并)

检测有文件有两处修改

显示冲突
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git merge hot-fix
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master|MERGING)
$

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master|MERGING)
$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")


冲突合并
# 1.查看冲突代码
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master|MERGING)
$ vim hello.txt
# <<<< HEAD  当前分支代码
# <<<< HEAD 当前分支代码	=======
# ======= 合并分支代码   >>>>>>> hot-fix
#删除特殊符号 以及 重复代码

#2.添加到暂存区
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master|MERGING)
$ git add hello.txt

#3.提交本地库(不能带文件名)
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master|MERGING)
$ git commit -m "marge test"
fatal: cannot do a partial commit during a merge.

#4.切换分支查看
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'

#冲突合并,合并当前分支,不合并被合并分支
# head ---> master(分支内容)--->版本号
# HEAD决定当前分支

Git团队协作

在这里插入图片描述

在这里插入图片描述

命令名称作用
git remote -v查看当前所有进程地址别名
git remote add 别名 远程地址起别名
git push 别名 分支推送本地分支上的内容到远程仓库
git push 远程地址 分支推送本地分支上的内容到远程仓库
git clone 远程地址将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
git push -f 远程库地址别名 远程分支名强制推送

创建远程库别名

git remote -v #查看当前所有进程地址别名
git remote add 别名 远程地址 #起别名

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (hot-fix)
$ git remote -v

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (hot-fix)
$ git remote add git.demo https://github.com/weishuoHH/git-demo.git

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (hot-fix)
$ git remote -v
git.demo        https://github.com/weishuoHH/git-demo.git (fetch)
git.demo        https://github.com/weishuoHH/git-demo.git (push)

推送本地分支上的内容到远程仓库

git push 别名 分支 #推送本地分支上的内容到远程仓库

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git push git.demo master
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 16 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (21/21), 1.55 KiB | 792.00 KiB/s, done.
Total 21 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), done.
To https://github.com/weishuoHH/git-demo.git
 * [new branch]      master -> master

拉取远程库到本地库

git pull 远程库地址别名 远程分支名

$ git pull git@gitee.com:wei-shuo-red/travel.git master --allow-unrelated-histories
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git pull git.demo master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 649 bytes | 64.00 KiB/s, done.
From https://github.com/weishuoHH/git-demo
 * branch            master     -> FETCH_HEAD
   b129c29..d40c0cd  master     -> git.demo/master
Updating b129c29..d40c0cd
Fast-forward
 hello.txt | 1 +
 1 file changed, 1 insertion(+)

克隆远程库到本地库

git clone 远程地址 将远程仓库的内容克隆到本地

clone操作:
1.拉取代码
2.初始化本地库
3.创建别名

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-lhc
$ git clone https://github.com/weishuoHH/git-demo.git
Cloning into 'git-demo'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 27 (delta 6), reused 20 (delta 4), pack-reused 0
Receiving objects: 100% (27/27), done.
Resolving deltas: 100% (6/6), done.

ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-lhc
$ ll
total 0
drwxr-xr-x 1 ws199 197609 0 Apr 17 14:27 git-demo/

#创建别名
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-lhc/git-demo (master)
$ git remote  -v
origin  https://github.com/weishuoHH/git-demo.git (fetch)
origin  https://github.com/weishuoHH/git-demo.git (push)

GitHub免密登录

生成ssh免密登录命令 -t "以某种加密算法登录 -C "描述

ws199@DESKTOP-2N1I9JA MINGW64 ~
$ ssh-keygen.exe -t rsa -C weishuoHH@weishuo.com
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/ws199/.ssh/id_rsa):
Created directory '/c/Users/ws199/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/ws199/.ssh/id_rsa
Your public key has been saved in /c/Users/ws199/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:CVIbj1aIxRUz8t0m7WXpzBqwJ6RzNHze+B5dd5Jyiwk weishuoHH@weishuo.com
The key's randomart image is:
+---[RSA 3072]----+
|     +=o*.       |
|    ..oO = o   . |
|    . = o O = +  |
|     o . = X O . |
|        S E B O +|
|         o + O ++|
|            + + .|
|             . . |
|              .  |
+----[SHA256]-----+

ws199@DESKTOP-2N1I9JA MINGW64 ~
$

#通过ssh拉去远程库代码
ws199@DESKTOP-2N1I9JA MINGW64 /d/GIT/Git-Space/git.demo (master)
$ git pull git@github.com:weishuoHH/git-demo.git master
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
From github.com:weishuoHH/git-demo
 * branch            master     -> FETCH_HEAD
Already up to date.

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

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

相关文章

车间调度|基于帝王蝶优化算法的车间调度(Matlab代码实现)

目录 1 概述 2 蝴蝶优化算法 3 车间调度 3.1 车间调度描述 3.2 数学模型 4 运行结果 5 参考文献 6 Matlab代码实现 1 概述 随着智能化在制造业中的普及&#xff0c;解决车间生产调度的问题能有效提高车间的工作学习效率&#xff0c;实现车间现场管理的有序化、智能化…

极客时间Kafka - 01 Kafka术语|生产者|消费者|主题|分区|副本|ISR|OSR|AR|HW|LEO|Offset

文章目录1. 为什么需要消息引擎&#xff1f;2. Kafka 相关术语3. Kafka 基本概念1. 为什么需要消息引擎&#xff1f; 答案就是“削峰填谷”。 所谓的“削峰填谷”就是指缓冲上下游瞬时突发流量&#xff0c;使其更平滑。特别是对于那种发送能力很强的上游系统&#xff0c;如果没…

Java—hashCode、equals

文章目录hashCode()介绍hashCode()hashCode方法作用为什么要有hashCode()&#xff1f;equals()equals()作用&#xff1f;为什么重写equals方法必须重写hashcode方法&#xff1f;128陷阱&#xff1f;equals和hashCode的关系——————————————————————————…

前端环境变量及vite中本地环境配置实践

前言 前端在之前并没有工程化的概念&#xff0c;甚至开发环境、测试环境、生产环境全靠大家手动配置。 有了nodejs之后&#xff0c;环境变量 &#xff08;environment variables&#xff09;这个概念&#xff0c;便慢慢进入了前端的视野&#xff0c;方便了前端各种环境自动化…

Android背景和音乐

Android背景和音乐前言一、添加背景图片二、加入背景音乐前言 简单的给app添加背景图和音乐 一、添加背景图片 准备好一张合适的背景图片新建一个Empty Activity项目选择Java语言在res中创建一个mipmap文件,将准备的图片粘贴到该文件目录下 在activity_main.xml里面添加代码…

mysql高阶语句

目录 前言 一、高级sql语句 1、按关键字排序 二、区间判断 ——且/或 三、 distinct 查询不重复记录 四、对结果进行分组 五、限制结果条目——limit 六、设置别名&#xff08;alias ——>as&#xff09; 七、通配符 八、子查询 前言 当我们对mysql数据库进行了查…

GJB 5000B二级-QA质量保证

1、主要变化情况 修订2条,合并1条(绿色),新增1条(黄色) 新增的主要内容 将原标准过程域名称“过程和产品质量保证”改为“质量保证” 目的:评价并改进已执行的过程和所产生的工作产品的质量,确保其满足已制定的过程说明和适用的标准。 (GJB5000A:过程和产品质量保…

RISC-V SiFiveU64内核——L2 Prefetcher预期器

目录L2 Prefetcher简介操作流退出页边界Memory Map控制寄存器L2 Prefetcher 初始化L2 prefetcher是U64内核新增的功能&#xff0c;U54内核没有这个功能。打开L2 prefetcher功能后&#xff0c;当访问大片内存&#xff0c;同时dcache中没有缓存时&#xff0c;访问内存的速率可以提…

用R语言和python进行社交网络中的社区检测

在这篇文章中&#xff0c;我用R语言和python检测社交网络中的社区。最近我们被客户要求撰写关于社区检测的研究报告&#xff0c;包括一些图形和统计输出。 相关视频&#xff1a;复杂网络分析CNA简介与R语言对婚礼数据聚类&#xff08;社区检测&#xff09;和可视化|数据分享 复…

(一)LTspice简介

文章目录前言一、举例1.1、RC滤波1.2、仿真结果二、软件安装总结前言 LTspice是一款高性能SPICE仿真器软件&#xff0c;包括原理图捕获图形界面。可探测原理图以产生仿真结果&#xff0c;通过LTspice内置波形查看器轻松探索。与其他SPICE解决方案相比&#xff0c;LTspice的增强…

mysql之SQL练习

常见面试题 学生表&#xff1a;student(学号,学生姓名,出生年月,性别) 成绩表&#xff1a;score(学号,课程号,成绩) 课程表&#xff1a;course(课程号,课程名称,教师号) 教师表&#xff1a;teacher(教师号,教师姓名) 1查询学生总成绩排名 SELECTstu_no,sum(score_prize) AS to…

安装Hadoop下hive的问题

ji问题的主要来源&#xff0c;由于收到安装文档后替换了一下&#xff0c;出现的问题 一&#xff0c;配置完成后&#xff0c;系统变量需要重启虚拟机&#xff0c; bash 变量需要刷新 #系统环境变量需要重启&#xff0c;bash变量只要source或切换就可以 source .bash_profile 我…

VUE+Spring Boot前后端分离开发实战(六):基于RABC权限通用后台管理系统-给角色动态分配权限和用户

文章目录 前言功能设计后端实现前端实现写在后面前言 本文记录了通用后台管理系统中RABC权限中两个功能:给角色分配权限、给角色设置用户。 给角色分配用户:前端使用到了elementUI中的tree,包括加载树以及给已选配权限给默认值等。给角色设置用户:前端用到了elementUI中的…

我们需要工具支持键集分页

我们需要工具支持键集分页 (use-the-index-luke.com) 您是否知道分页非常麻烦但很容易避免&#xff1f;offset offset指示数据库跳过查询的前 N 个结果。但是&#xff0c;数据库仍必须从磁盘获取这些行并按顺序排列它们&#xff0c;然后才能发送以下行。 这不是实现问题&…

超好用的大数据分析平台分享,SuccBI 一站式大数据分析平台

SuccBI 一站式大数据分析平台融合了数据汇集、加工、智能调度、自助分析可视化、中国式报表等功能为企业提供一站式的大数据分析处理能力。 数据汇集、加工 连接各类分散的数据并进行加工、清洗、调度、元数据管理&#xff0c;帮助企业轻松汇集、管理和共享数据资产。 丰富的数…

SAR信号处理基础2——线性调频信号频谱与驻定相位原理

前面已经给出了线性调频信号的时域表达形式&#xff0c;并介绍了信号的实部、虚部、相位、频率等&#xff0c;本文介绍线性调频信号的频谱&#xff0c;以及推导线性调频信号时常用的驻定相位原理。计算信号的频谱&#xff0c;实际上就是对信号做傅里叶变换。即 驻定相位原理认…

Java高校宿舍管理系统寝室管理(含源码+论文+答辩PPT等)

项目功能简介: 本项目含代码详细讲解视频&#xff0c;手把手带同学们敲代码从0到1完成项目 该项目采用技术JSP、Servlet、jdbc、前端框架 bootstrap、jQuery&#xff0c;bootstrap-datetimepicker日期插件、Tomcat服务器、MySQL数据库 项目含有源码、配套开发软件、软件安装教程…

Linux和WIN的优势

1.性价比方面 Linux服务器与Windows服务器就性价比而言&#xff0c;Linux服务器优势是很明显的。Linux作为资源管理和操作系统来说&#xff0c;是开源、免费的&#xff0c;而正版的Windows的操作系统是收费的&#xff0c;因而就性价比来说Linux服务器优于Windows服务器。 2.性…

python的自定义函数的用法和实例

目录 1.自定义函数的语法和用法 &#xff08;1&#xff09;引入 &#xff08;2&#xff09;语法 &#xff08;3&#xff09;用法&#xff1a;用于自定义目标函数语法。 &#xff08;4&#xff09;调用函数 ①语法 ②解释 2.实例 &#xff08;1&#xff09;简单的用法 …

[附源码]计算机毕业设计小区物业管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…