git入门手册大全(代码片段)

尤尔小屋的猫 尤尔小屋的猫     2023-01-15     340

关键词:

快速入门GitHub

GitHub在程序开发领域家喻户晓,现在几乎整个互联网的开发者都将版本管理工具GitHub作为版本控制的首选,甚至像笔者这样非开发者,一名和每天和数据打交道的人也在使用GitHub,目的主要有:

  • 查找资料:GitHub上有很多国内外大神开源的数据挖掘、机器学习的资料、代码,笔者直接fork或者clone下来学习
  • 技术交流:通过对开源项目提出issue,能够起到技术交流的效果
  • 个人展示:现在互联网领域中,如果一个程序员在GitHub上有一个很好的开源项目,必定是会备受关注。因此GitHub实际上是一个很好的展示个人实力的舞台,或许它能够让你受到招聘人员的青睐

可以说,正式GitHub,让社会化全员编程成为了现实。

既然好处颇多,作为互联网界的一员,没有理由不学好GitHub😄本文将详细介绍GitHub的相关基础操作,带你快速入门GitHub

版本管理

版本管理就是管理更新的历史记录。Git出现之前,人们主要是使用Subversion(简称为SVN)作为版本控制的工具。

SVN

SVN是属于集中型的版本管理系统,其特点是将仓库集中存放在服务器中,所以只存在一个仓库。集中型将所有特点是方便管理,但是如果开发者所处的环境无法联网,则无法获取到最新的源码,进而无法进行开发工作。

Git

Git是分散型的版本管理系统。从下图中我们可以观察出来,GitHub将仓库fork给每个用户。fork的仓库和原始的仓库是两个不同的仓库,开发者是可以随意编辑的。

Fork的过程其实就是将某个仓库复制到自己的账户下

什么GitHub

GitHub是一个基于Git的代码托管平台。如果是付费用户可以建立自己的私人仓库,一般用户的话只能建立公用仓库,也就是说仓库的代码必须是公开的。到底Git和GitHub有什么区别呢?

在Git中,开发者将源代码存入名叫“Git仓库”的资料库中,方便使用;而GitHub则是在网络上提供Git仓库的一项服务

GitHub上公开的源代码都是通过Git进行管理的。

安装与配置Git

安装

现在笔者使用的MacOS系统,是自带Git的。关于Windows系统下安装,请参考网上某位博主的文章,讲解的非常详细。

Windows系统Git安装教程(详解Git安装过程):https://www.cnblogs.com/xueweisuoyong/p/11914045.html

配置

首先需要设置使用Git时候的名字和邮箱,名字需要使用英文

git config --global user.name "Firstname Lastname"  # 名称
git config --global user.email "your_email@example.com"  # 邮箱

# ~/.gitconfig中以如下形式输出文件
[user]

name = Firstname Lastname
email = your_email@example.com

需要注意的是:

  1. GitHub上公开仓库的时候,名字和邮箱会一同被公开,所以请不要使用不便公开的隐私信息
  2. 程序员来自世界各地,请使用英文,不要使用汉字;如果不想使用真名,可以使用网站的昵称

如何提高命令输出的可读性

 git config --global color.ui auto   # 将color.ui 设置成auto

创建账户

进入创建用户的页面:http://github.com/join,填写如下的信息在点击Create an accout即可

配置SSH

GitHub上连接现有仓库的认证,是通过使用了SSH的公开密钥认证方式进行的。现在我们需要创建公开密钥所需的SSH Key,并将其添加到GitHub。

ssh-keygen -t rsa -C   # 创建SSH Key

接下来需要输入两次密码,最终会生成两个文件:

  • id_rsa:私有密钥
  • id_rsa.pub:公开密钥

下面我们需要在GitHub中添加公开密钥,今后就可以使用私有密钥进行认证。点击右上角的账户设定按钮:

进入settings之后,添加新的SSH Key

接下来会出现Title和Key两个输入框,在Title中输入适当的密钥名称,Key部分复制上面id_rsa.pub文件中的内容

cat ~/.ssh/id_rsa.pub   # 查看内容

添加完成之后,会在我们的邮箱中收到一封提示“公开密钥添加完成”的邮件,确认即可。这样便完成了整个手中的私人密钥和GitHub的认证和通信问题,验证一下:

ssh -T git@github.com  

在接下来的页面中输入密码和yes即可完成验证。

建立仓库

首先我们必须明白一点:仓库有两种

  • 远程在GitHub上的仓库:远程仓库
  • 在自己本地的仓库:本地仓库

本文是以MacOS系统为例,基于Linux;如果是想学习Windows下的仓库创建,请参考下文,讲解的很详细:

Git使用(10分钟入门):https://www.jianshu.com/p/09f243768cf6

远程仓库

1、建立远程仓库需要我们先登陆自己的GitHub账号,再进行建仓。

2、我们创建一个git_start的仓库

  • 仓库的名字
  • 仓库的简单描述
  • 不要在远程仓库添加README.md文件。我们使用手动push的方式来添加

3、仓库解释

打开上面我们创建好的仓库,会出现如下的内容(先写上注释,后面慢慢解释)

echo "# git_start" >> README.md    # 往README.md中写入内容
git init  # 初始化
git add README.md   # 添加文件
git commit -m "first commit"   # 提交并注释
git branch -M main  # 提交分支
git remote add origin git@github.com:pidada/git_start.git   # 建立远程仓库与本地仓库的连接
git push -u origin main  # 推送

本地仓库

1、建立本地仓库

所谓的本地仓库,就是你自己电脑客户端的仓库。同样地,笔者在本地建立了同样名字的本地仓库git_start,其实就是个文件夹

本地仓库要和远程仓库保持一致

mkdir git_start  # 创建文件夹,即仓库
cd git_start  # 切换到仓库中
ls  # 查看内容,目前是没有任何内容

2、初始化操作

echo "学习GitHub的使用,快速入门" >> README.md   # 往文件中写入内容,后面可以更改
git init   # 初始化

初始化之后会在当前目录下自动生成一个.git的文件。这个文件下存储着管理当前目录内容所需要的仓库数据

3、查看待提交文档

通过ls查看已经有了README.md文档

git status  # 查看待提交的文档

4、提交文档

我们将上面的README.md文档和生成的.git文档一并提交

git add .  # 提交全部文件
git add README.md  # 单独提交一个文件
git commmit -m "2021-1-1"  # commit提交,同时写上备注:2021-1-1

# add 和 commit的同步操作
git commit -am "2021-1-1"

注意:执行了add操作,文件还没有被上传到Git远程仓库中,只是提交到了缓存区域

git commit -m "2021-1-1"才是真正地提交内容,同时写上备注:将文件从缓存区提交到远程

5、建立远程仓库连接并推送

git remote add origin git@github.com:peter/git_start.git  # 建立连接
git push -u origin master  # 推送到master分支

6、检查

此时我们刷新远程仓库的页面,会发现页面更新了,也有了内容:

7、查看提交日志

git log  # 查看提交日志
git log --pretty=short  # 只显示一行简述信息
git log README.md  # 只显示指定目录、文件的日志
git log -p README.md  # 只显示指定目录、文件的日志修改前后的改动
  1. commit栏旁边显示的是指向这个提交的哈希值。Git的其他命令中,在指向提交时会用到这个哈希值
  2. Author栏旁边是Git设置的用户名和邮箱地址
  3. Date栏显示的是执行日期和时间
  4. 最下面是提交信息,-m参数后面的信息

8、修改README.md文件

通过vim编辑器修改内容如下:

上面使用了Markdown语法,然后我们重新按照上面的命令执行一遍:

git status  # 状态是红色
git add .  # 提交到缓存区
git commit -m "修改README.md"  # 记录提交信息
# git remote add origin git@github.com:peter/git_start.git  # 已经建立了连接,所以不必在执行此命令
git push -u origin master # 推到master分支

回顾下整个操作的过程:

  1. 建立远程仓库
  2. 建立本地仓库
  3. 初始化本地仓库
  4. 文档提交到缓存区
  5. 缓存区推送到远程仓库

重要命令

我们总结一下上面操作中几个重要的命令:

1、git status

查看仓库中文件的状态。如果有新的文件或者原来的文件有修改过,会出现红色

2、git add

向缓存区中添加内容,缓存区是提交之前的一个临时区域(Stage或者Index)

3、git commit [-m]

将暂存区中的文件保存仓库的历史记录中; -m参数后面跟上提交信息:git commit -m "第一次提交"

4、git log

查看以往提交日志信息:什么人在什么时候进行了提交或者合并等,以及操作前后有怎样的差别

git log  # 查看日志
git log --pretty=short  # 只显示提交信息的第一行
git log README.md  # 查看某个文件的提交信息
git log -p README.md  #  -p参数只查看提交的改动部分

5、git diff

查看工作树、暂存区、最新提交之间的差别。

git diff  # 查看当前工作树和暂存区的差别
git diff HEAD  # 查看本次提交和上次提交的差别;HEAD指向当前分支中的最新一次提交的指针

养成习惯:git commit之前先执行git diff HEAD命令来查看本次提交与上次提交之间的差别;HEAD指向当前分支中最新的一次提交的指针。

6、仓库操作

-u作用:将来运行git pull命令从远程仓库获取内容时,本地仓库就可以直接从origin的master分支中获取内容,不需要添加其他的参数

git remote add origin git@github.com:github/peter/git_start.git  # 添加远程仓库
git push # 推送到远程仓库
git push -u origin master  # 推送到master分支下
git push -u origin feature_A  # 推送到分支A

git clone  仓库地址  # 将某个远程仓库的内容复制到本地
git push  # 推送
git pull  # 获取最新的远程分支内容

分支

master分支

master分支是Git默认创建的分支,其他所有的分支都是在这个分支的基础上进行的。

  • 不同的分支单独进行各自的作业
  • 该分支的作业完成之后再和master分支合并

进行完作业之后的合并操作:

分支相关命令

1、git branch-显示分支

显示分支一览表:将分支名列表显示出来,同时确认当前所在的分支;标有星号*表示当前分支

git branch -a  # 查看当前分支的相关信息

2、git branch feature-创建分支

git branch feature

3、git checkout feature-切换分支

git checkout feature
git checkout master  # 切换到master分支
git checkout -  # 切换到上一个分支

上面两个命令的合并,创建新的分支并切换到新的分支:

git checkout -b feature  # 切换到创建的新分支

4、git merge-合并分支

假设某个分支已经完成了作业需要和主分支master合并,使用如下语句:

git checkout master  # 切到主分支
git merge --no-off feature-A  # 合并分支

5、git log —graph-图的形式查看分支

通过图表的形式查看提交的内容

git log --graph  

版本回溯

既然是版本控制系统,那么对于不同版本的管理肯定是至关重要的。GitHub的另一个特征便是可以灵活地操作不同的历史版本。借助分散仓库的优势,可以在不影响其他仓库的前提下对历史版本进行操作。

1、回溯到指定状态

哈希值只要输入4位以上就可以执行了

git reset --hard [哈希值]  # 添加指定的哈希值,代表某个时间点的状态

2、查看当前仓库的全部执行过的操作日志

记录我们操作的每次命令

git reflog   # 针对当前仓库
git log   # 查看以当前状态为终点的历史日志

所以我们可以先通过git reflog来查看哈希值,再通过git reset —hard [哈希值]回到某个状态

3、修改上一条提交信息

使用git commit --amend命令

git commit --amend

4、压缩历史

在合并特性分支之前,如果发现已经提交的内容中有拼写等错误,可以先提交一个修改,然后将这个修改包含到前一个提交之中,压缩成一个历史记录

git rebase -i
git rebase -i HEAD~2  # 当前分支下的两个最新历史记录进行压缩

5、添加提交一次完成

git commit -am "add和commit同时完成"

git reset详解

命令

对版本回溯命令的详解。git reset 命令用于回退版本,可以指定回退到某个具体的历史版本。

git reset 命令语法格式具体如下:

git reset [--soft | --mixed | --hard] [HEAD]

--mixed默认参数,可以不带,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变

soft

--soft参数用于回退到某个版本

git reset --soft HEAD  #  回退到上个版本
git reset --soft HEAD~3  # 回退到上上上个版本

hard⚠️

!!!⚠️谨慎使用--hard 参数,它会删除回退点之前的所有信息

git reset --hard HEAD~3   # 回退到上上上个版本
git reset --hard 1de43  # 回退到指定版本
git reset --hard origin/master  # 本地状态回退到和远程相同

HEAD

git reset HEAD^   # 回退到所有内容的上一个版本
git reset HEAD^ Git入门.md  # 回退到Git入门.md文件的版本的上一个版本(指定版本的上个版本)
git reset 01b42  # 回退到指定版本,需要至少哈希值的前4位;可以通过git reflog命令先查看我们要回退的版本号的哈希值

git reset HEAD还能取消已缓存的内容。当我们对某个文件的内容进行了修改并且已经执行git add之后,我们想取消缓存区的内容,使用如下命令:

git reset HEAD [filename]

关于HEAD 说明

  • HEAD 表示当前版本

  • HEAD^ 上一个版本

  • HEAD^^ 上上一个版本

  • HEAD^^^ 上上上一个版本

  • 以此类推…

可以使用 ~数字表示

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • HEAD^3 上上上一个版本
  • 以此类推…

总结

  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

git入门大全

git入门大全阅读目录前言基本概念文件几种状态创建新仓库配置检出仓库新建仓库常见流程gitignore添加、删除提交branchtag远程仓库和合并分支改写提交暂存撤销difflog其他命令git内部git提交规范三种工作流程命令行参考前言以前... 查看详情

git版本控制软件结合github从入门到精通常用命令学习手册

...日常使用中需要的一些常用的命令以及参数。本手册将从入门到精通指导大家。首先,我们要从如何以Git的思维方式管理源代码开始。如何以GIT的方式思考(这节可以不用看懂,接着看下面的内容,看完就全懂了。)懂得Git,第... 查看详情

常用git命令手册(代码片段)

常用Git命令手册此文只是对Git有一定基础的人当记忆使用,比较简略,初级学员强烈推荐廖雪峰老师的Git系列教程,通俗易懂,戳此处即可开始学习1.安装GitLinuxsudoapt-getinstallgit复制代码Window:到Git官网下载安装:https://git-scm.com/do... 查看详情

git常用命令大全(代码片段)

 希望可以帮到需要帮助的人。 用户每次push都需要输账号密码解决办法参考   http://git.oschina.net/oschina/git-osc/issues/2586   git使用教程参考    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 1.安装完成后在Git 查看详情

git常用命令大全(代码片段)

gitbranch#查看当下分支gitbranch-r#查看远程分支gitremote-v#查看git仓库地址gitcheckout分支名#切换分支gitcheckout-bdevorigin/dev#作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支gitcloneurl#从链接处克隆git代码(默认mas... 查看详情

git命令大全(代码片段)

Git命令大全设置与配置gitconfig读取和写入配置文件githelp查看帮助文档githelpconfig获取与创建项目gitinit将一个目录装变成一个Git仓库,初始化仓库。gitclone封装了其他几个命令。它创建了一个新目录,切换到新的目录,... 查看详情

git命令大全(代码片段)

Git命令大全设置与配置gitconfig读取和写入配置文件githelp查看帮助文档githelpconfig获取与创建项目gitinit将一个目录装变成一个Git仓库,初始化仓库。gitclone封装了其他几个命令。它创建了一个新目录,切换到新的目录,... 查看详情

git使用大全(代码片段)

一、什么是Git1.基本介绍Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件Git与常用的版本控制工具CVS,Subversion等不同... 查看详情

git命令大全(代码片段)

本篇博客是转发的别人的,原文地址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。下面是我整理的常用Git命令清单。几个专用名词的译名如... 查看详情

git命令大全(完整版)(代码片段)

Git常用命令详解Git是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。1.Git文件操作$githelp[command]#显示command的help$gitshow[$id]#显示某次提交的内容$gitcheckout[file]... 查看详情

typescript入门手册之泛型(代码片段)

【Typescript入门手册】之泛型🚀【TypeScript入门手册】记录了出场率较高的Ts概念,旨在帮助大家了解并熟悉Ts🎉本系列会持续更新并更正,重点关照大家感兴趣的点,欢迎同学留言交流,在进阶之路上,... 查看详情

typescript入门手册之泛型(代码片段)

【Typescript入门手册】之泛型🚀【TypeScript入门手册】记录了出场率较高的Ts概念,旨在帮助大家了解并熟悉Ts🎉本系列会持续更新并更正,重点关照大家感兴趣的点,欢迎同学留言交流,在进阶之路上,... 查看详情

git速查手册(代码片段)

一、GIT1.1简单配置git是版本控制系统,与svn不同的是git是分布式,svn是集中式配置文件位置#配置文件.git/config当前仓库的配置文件~/.gitconfig全局配置文件#查看所有配置项gitconfig--list友好的查看日志#设置别名#友好的查看日志gitcon... 查看详情

git命令大全(代码片段)

gitconfig配置Git的相关参数。Git一共有3个配置文件:1.仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效。2.全局配置文件:Mac系统在 ~/.gitconfig,Windows系统在 C:\\Users\\<用户名>\\.g... 查看详情

汇总thinkphp6入门手册(代码片段)

安装安装Composer【Linux&MacOS】curl-sShttps://getcomposer.org/installer|phpmvcomposer.phar/usr/local/bin/composer 【Windows】 https://getcomposer.org/Composer-Setup.exe设置Composer使用国内镜像(阿里云)c 查看详情

汇总thinkphp6入门手册(代码片段)

安装安装Composer【Linux&MacOS】curl-sShttps://getcomposer.org/installer|phpmvcomposer.phar/usr/local/bin/composer 【Windows】 https://getcomposer.org/Composer-Setup.exe设置Composer使用国内镜像(阿里云)c 查看详情

gitcli(miscellaneous)–git中文开发手册(代码片段)

[??Git中文开发手册gitcli(Miscellaneous)-Git中文开发手册命名gitcli-Git命令行界面和约定概要gitcli描述本手册介绍了在整个GitCLI中使用的约定。许多命令都采用修订(通常是“commits”,但有时是“tree-ish”,取决于上下文和命令)和路... 查看详情

typescript入门手册函数(代码片段)

🚀【TypeScript入门手册】记录了出场率较高的Ts概念,旨在帮助大家了解并熟悉Ts🎉本系列会持续更新并更正,重点关照大家感兴趣的点,欢迎同学留言交流,在进阶之路上,共勉!star本项目给作者... 查看详情