Git下载、安装、使用

1 篇文章 0 订阅
这篇博客详细介绍了Git的下载安装、全局设置、SSHKey的创建、远程仓库的管理和使用,以及本地仓库的创建、提交、回退等基本操作。通过实例展示了Git在版本控制中的应用,包括分支管理、代码同步和版本回退等核心概念。
摘要由CSDN通过智能技术生成

廖雪峰官方Git教程
菜鸟Git教程

本篇文章是我学习廖雪峰官方Git教程的笔记,以上是廖雪峰官方Git教程的链接。

Git Cheat Sheet

Git是目前世界上最先进的分布式版本控制系统(没有之一)。
Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!

所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。

以下类型不能被Git跟踪:

  • 图片、视频等二进制文件
  • Microsoft的Word格式是二进制格式
  • Windows自带的记事本在每个文件开头添加了0xefbbbf(十六进制)的字符

Gitee 使用教程

一、Git下载和安装

下载

Git下载地址

安装

根据自己的电脑系统下载合适的安装包,这里以Windows为例。
安装时除了软件安装位置可以自定义外,其他的选项最好一路默认到底。

在终端输入以下命令,可查看是否安装成功以及版本号:

git --version

二、Git全局设置

设置用户名和邮箱

安装完成后,在开始菜单里找到“Git”->“Git Bash”,在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
$ git config --global credential.helper store 保存账号和密码,不用重复输入

🐖 不一定非要输入真实的邮箱账号
🐖 git config命令的--global参数,用了这个参数,表示这台机器上所有的Git仓库 (本地Git库) 都会使用这个配置,每次commit都会使用这个用户名和邮箱,当然也可以对某个仓库指定不同的用户名和Email地址。
credential(凭证)

查看用户名和邮箱
git config user.name
git config user.email
修改用户名和邮箱

就是重新设置,覆盖之前的即可。
在这里插入图片描述

三、创建SSH Key

本地Git仓库和远程仓库之间的传输是通过SSH加密(SSH协议)的,所以需要设置。

在这里插入图片描述

$ ssh-keygen -t rsa -C "youremail@example.com"
##
一般直接使用ssh-keygen即可

已经打上马赛克这

🐖把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,也无需设置密码。
🐖如果一切顺利的话,可以在用户主目录里(~)找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
🐖SSH密钥在电脑和某个账号下的代码托管服务之间建立安全连接,在一台电脑上配置了SSH密钥并添加公钥到代码托管服务中后,所有该账号下的代码仓库与这台电脑之间都可以使用该密钥进行连接。

四、注册GitHub/Gitee账号,创建远程仓库并添加SSH 密钥

1、创建远程仓库----GitHub

(1)自行注册GitHub账号,就可以免费获得Git远程仓库。
GitHub官网地址

🐖友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)

(2)添加SSH Key

登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

🐖GitHub允许你添加多个Key。只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

2、创建远程仓库----Gittee

国内的Git托管服务——Gitee(gitee.com)。

和GitHub相比,Gitee也提供免费的Git仓库。此外,还集成了代码质量检测、项目演示等功能。对于团队协作开发,Gitee还提供了项目管理、代码托管、文档管理的服务,5人以下小团队免费。
在这里插入图片描述

第一步:注册账号

使用Gitee和使用GitHub类似,我们在Gitee上注册账号并登录后,需要先上传自己的SSH公钥。

第二步:查看/创建公钥

(1)打开终端,输入以下命令,如果出现id_rsa.pub公钥文件,表明已有存在SSH Key。

ls -al ~/.ssh

(2)可以输入以下命令拷贝当前的id_rsa.pub公钥:

pbcopy < ~/.ssh/id_rsa.pub

🐖https://zhuanlan.zhihu.com/p/42082440 如何在Linux上使用pbcopy和pbpaste命令
(3)若没有id_rsa.pub公钥文件,就要创建SSH Key,一路回车:

$ ssh-keygen -t rsa -C "youremail@example.com"
第三步:复制这一段 ssh 密钥,并将它添加到 Gitee 上

点击用户名图标-〉设置-〉安全设置-〉SSH公钥-〉粘贴公钥
在这里插入图片描述
输入以下命令可查看公钥是否成功添加成功:

 ssh -T git@gitee.com

五、创建本地仓库

1、创建版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录
🐖如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

mkdir learn_git
cd learn_git

2、初始化仓库:把这个目录(可以是非空目录)变成Git可以管理的仓库

git init
# Initialized empty Git repository in D:/learn_git/.git/

🐖当前目录下多了一个.git的目录 ,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
🐖如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

🐷 初始化仓库也可采用克隆的方法:

git clone <远程仓库地址>

🐖默认克隆项目的主分支,其他分支并没有被克隆到本地

  • 如果不加-b 远程分支名,那么克隆的就是master分支
  • 如果不加本地分支名,那么默认远程仓库命名

下面是克隆一个分支到本地的例子:

$ git clone -b 远程分支名 远程仓库地址 本地仓库名(可自己编辑)

3、绑定远程仓库(本地仓库与远程仓库关联)

git remote add origin <远程仓库地址>

🐷如 :https://gitee.com/yangying905/my-repository.git
在这里插入图片描述
🐷 查看本地仓库所关联的远程仓库:

git remote -v

返回:

origin	https://gitee.com/yangying905/my-repository.git (fetch)
origin	https://gitee.com/yangying905/my-repository.git (push)

git重新指定远程的url_本地Git仓库关联多个远程仓库的两种方法

4、把目录中的文件添加到Git仓库

添加文件到Git仓库,分三步:

git add <file.后缀>
git commit -m “message”
git push -u origin master

(1)使用命令git add <file>,注意,可反复多次使用add,添加多个文件;
把现在的改动都提交到暂存区:

git add ./
# 或
git add -a

(2)使用命令git commit -m <message>,commit可以一次提交很多文件,完成。
🐖 -m 后面输入的是本次提交的说明
(3)使用命令git push -u origin master将该更新操作上传到远程仓库主干
🐷 origin指代的是当前远程主机名;master指代的是当前远程仓库分支名
git push 命令格式如下:

git push <远程主机名> <本地分支名>:<远程分支名>

🐖 如果本地分支名与远程分支名相同,则可以省略冒号:
git push 命令
例如,将本地的 master 分支推送到 origin 主机的 master 分支

$ git push origin master

(4)git commit –amend命令的用法

  • 1)可以用来修改提交信息 🐖 会修改commit id
  • 2)在commit后又对代码进行了修改,重新执行
    git add .
    git commit --amend  -m "log text" (将提交合并到上一次提交中,两次提交共用一个commit id )

git clone与git pull区别

  • git clone:从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
  • git pull:从远程服务器获取到一个branch分支的最新版本并==merge(合并)==到本地,更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库) git pull = git fetch + git merge,git fetch更安全一些
    🐷要将邮箱设置为公共邮箱,否则会报错 https://gitee.com/profile/emails
    🐖 如果当前分支只有一个追踪分支,连远程主机名都可以省略。

5、再进行后续的代码添加或者更新

git add <file.后缀>
git commit -m “message”
git push 

🐷 因为commit可以一次性提交多个文件,所以可以先多次add不同的文件。
🐷 git push : 只关联一个远程且只有一个分支时使用(另外三个参数为默认的origin master master)

6、工作区、版本库、暂存区

  • 工作区(Working Directory):
    电脑里能看见的文件夹目录
  • 版本库(Repository):
    工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
  • 暂存区(index或者叫stage)
    Git的版本库里存了很多东西,其中最重要的就是暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

git add命令实际上就是把要提交的所有修改放到暂存区(Stage);
git commit命令就可以一次性把暂存区的所有修改提交到分支。

在这里插入图片描述

7、远程仓库同步到本地仓库

cd my-repository
git pull origin master

8、查看提交状态

git status

git status命令可以让我们时刻掌握仓库(工作区)当前的状态,命令可以告诉我们,file是否被修改过了,以及有没有提交修改。
Changes not staged for commit 未分段提交的更改【git add前】
Changes to be committed 要提交的更改【git add后,git commit 前】
nothing to commit, working tree clean 当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的【git commit后】

查看差异 git diff

git diff https://www.runoob.com/git/git-diff.html

git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,能看到具体修改了什么内容。
两种用法:

  • 显示暂存区和上一次提交(commit)的差异
$ git diff --cached [file]
或
$ git diff --staged [file]
  • 显示工作区和暂存区文件的差异
$ git diff [file]

🐖 git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。

9、查看提交日志

 git log
 git log --pretty=oneline # 输出信息较简洁,按行输出commit id git log --oneline 

git log命令显示从最近到最远的提交日志
用按键“↓”控制,可查看更多提交
用“q”可退出查看
commit id(版本号)

Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

🐖Git在内部有个指向当前版本的HEAD指针

10、版本回退

git reset --hard HEAD^

🐖git reset --hard commit_id。版本号没必要写全,前几位数字就可以了,Git会自动去找。
🐖回退前,用git log可以查看提交历史,以便确定要回退到哪个版本。
🐖要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

  • git reset --soft :回退到某个版本,只回退了commit的信息,保存add信息。 如果还要提交,直接commit即可
  • git reset --mixed :此为默认方式,等价于不带任何参数的 git reset:使用这种方式,它回退到某个版本,只保留工作区源码,回退commit和add信息
  • git reset --hard :彻底回退到某个版本,回退commit和add信息以及本地工作区的源码也会变为上一个版本的内容,慎用!

11、管理修改

为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

提交后,用git diff HEAD -- readme.txt命令可以查看readme.txt文件在工作区和暂存区里面最新版本的区别。

12、撤销修改

(1)撤销工作区(删除未git add前的操作)

git checkout [<commit id>] [--] <paths>

该命令主要用于检出某一个指定文件。
如果不填写commit id,则默认会从暂存区检出该文件,如果暂存区为空,则该文件会回滚到最近一次的提交状态。
例如:
当暂存区为空,如果我们想要放弃对某一个文件的修改,可以用这个命令进行撤销:

$ git checkout -filename #当暂存区为空时,放弃对该文件的修改
或者直接 rm filename
$ git rm filename #删除暂存区中的内容
$ git checkout – #对当前项目文件中所有改动过的文件都进行撤销

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销。
总之,就是让这个文件回到最近一次git commit或未git add时的状态。

🐖撤销误删

git checkout -- file

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以 “一键还原”

(2)撤销add(git add后,git commit前的操作)

$ git stash #删除暂存区中所有的内容
$ git reset filename #删除暂存区中的内容
$ git stash pop #恢复删除的暂存区中所有的内容

(3)撤销commit(git commit 后的操作)

$ git reset --soft HEAD^ #只回退了commit的信息,保存add信息
或者$ git reset --soft commit_id 回退到commit_id所在版本
$ git reset commit_id #回退commit和add信息,只保留工作区源码

$ git reset --hard commit_id #彻底回退到某个版本,回退commit和add信息以及本地工作区的源码也会变为上一个版本的内容,慎用!

13、删除文件

先手动删除文件,然后使用git rm <file>(删除操作)和git add<file>(把手动删除的操作提交到暂存区)效果是一样的。最后 git commit -m "remove file"

🐖 注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!

14、分支操作

(1)查看分支branch:
在这里插入图片描述

git fetch #命令更新所有分支

(2)创建新的分支,同时进入该branch:

git checkout -b 'newbranchname'
#等价于
git branch 'newbranchname' #创建分支
git checkout 'newbranchname' #切换分支

(3)改回到master主干:

git checkout master

(4)创建新的分支,同时进入该branch,并与远程分支关联:

git checkout -b 'newbranchname' origin/'newbranchname'

🐖git checkout -b b-master origin/master #作用是checkout远程的master分支,在本地起名为b-master分支,并切换到本地的b-master分支
🐖git clone用于从远程仓库获取代码,而git checkout则用来在本地系统中业已存在的代码库中切换不同的版本。
(5)删除分支

git branch -d 'newbranchname'
# 强制删除分支
git branch -D 'newbranchname'

🐖此操作不会删除远程分支, 远程分支只能在远程操作删除

git checkout -b 的详细讲解https://www.cnblogs.com/mcat/p/5831212.html

git rebase 变基

git rebase详解https://blog.csdn.net/weixin_42310154/article/details/119004977
简单对比git pull和git pull --rebase的使用https://www.cnblogs.com/kevingrace/p/5896706.html

  1. 如果主分支代码有更新,或将子分支代码上传至主分支上,需进行rebase操作以免发生冲突。
git rebase origin/主分支名 # 基底从子分支变成主分支
  1. 合并提交
    往主分支提交代码时,由于可能存在多次commit的操作,此时需要将commit合并为一个。
    git log (查看待合并的commit-id)
    git rebase -i "commit-id" (将某个commit id后的所有commit合并,注意该区间不包含输入的commit-id)
    然后将多个commit前的pick,改为一个pick,多个s,目的是将s的commit合到pick的commit。
    保存退出后可重写commit内容。重写时保留一个commit和一个change-ID,完成后保存退出。
    git commit --amend (可修改该commit信息)
    git rebase origin/主分支 (变基)
显示分支当前状态
git show HEAD 
origin master的关系
  • origin代表的是一个远程git服务器的地址,俗称远程主机名(指代远程仓库)。
    🐖origin是当你运行git clone时默认的远程仓库名字。
    远程仓库是远程主机上类似于现在的网盘一样的东西,但是具有git的功能,可以在主机上保存我们的代码库。

  • master 是一个分支名,可以在远程和本地都存在。

  • origin master表达的意思是:git服务器(origin代表)上的master分支。

  • origin/master, 本地分支,是从远程拉取代码后,在本地建立的一份拷贝。

git中origin master和origin/master的区别https://blog.csdn.net/noodleboy/article/details/120303194

git reset --hard origin/分支名

如果研发分支的代码有错误提交,后又重新拉分支,每个项目成员都需要执行git reset --hard origin/分支名 ,使本地的git的版本与远程仓库的版本一致。

git切换分支,在master基础上拉取新分支
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值