2021-1-7-一文掌握git/github使用,内容详细,适合新手入门~


前言

本文先结合版本控制系统对git进行了简要介绍,再详细讲述了github注册使用教程和git安装使用教程,希望对和楼主一样的小白有所帮助。


一、git是什么?

        现代软件开发过程中离不开版本控制系统,版本控制系统可以存储、追踪目录(文件夹)和文件的修改历史,是提高开发效率的利器。目前常见的版本控制系统有git和svn,git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制系统。它和svn的最主要区别为git是分布式版本控制系统,所以 git 支持离线工作,在本地可以进行很多操作。而 SVN是集中式的版本控制系统, 必须联网才能正常提交和更新代码。

二、github

1.了解github

        github是用于版本控制和协作的代码托管平台,它可以让您和其他人在任何地方协同工作。github可以作为git版本库的托管平台,开发时使用git和github双剑合璧,效率最佳。

2.注册github账户

a.访问github官网 https://github.com/ 点击sign up 进行账户注册
在这里插入图片描述
b.输入用户名、邮箱、密码、验证身份最后创建账户。
在这里插入图片描述
c.跳过欢迎截面以后提示需要进行邮箱验证,使用注册邮箱进行验证即可,验证结束以后就可以愉快的使用github啦,如果是新人建议先学习一下使用教程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
d.学习教程中有教大家怎么创建仓库,一般每一个项目都有一个仓库。如果觉得看教程麻烦,也可以按照下面流程自己试着建一个仓库练习。首先在个人中心你的仓库中可以看到用户的所有仓库。
在这里插入图片描述
可以看到我这里还没有任何仓库,点击new新建仓库。
在这里插入图片描述
输入仓库名称、描述、选择公开或者私有、可以选择是否添加README等文件,README是对仓库(项目)的描述文件,其他人可以通过它了解项目。
在这里插入图片描述
在code区域可以看到仓库包含的所有文件,在设置区域可以给仓库重命名或者删除仓库等
在这里插入图片描述
在这里插入图片描述

三、git安装

1.windows安装git

a.进入官网 https://git-scm.com/downloads,下载git ,下载时选择windows中的安装包。并根据电脑windows版本选择32位或者64位的安装包,我这里下载的是64位的。
在这里插入图片描述
在这里插入图片描述
b.打开下载好的安装包,进行git安装,安装时按照图片勾选对应项即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
c.安装完成以后可以在已安装程序中查看到git bash等软件,点击可以进入bash界面进行操作,输入 git --version命令即可查看git版本。
在这里插入图片描述
在这里插入图片描述

2.linux安装git

linux系统安装git更为方便,以常见的ubuntu系统和centos系统为例,只要打开linux终端,在命令行输入以下命令即可:
ubuntu系统:sudo apt install git
centos系统:yum install git
安装完成以后同样输入git --version命令即可查看安装版本
在这里插入图片描述

四、git/github使用

1.git工作流简介

       使用git之前首先要了解git的工作流,git工作流包括本地文件、暂存区、本地仓库和远程仓库四个节点。用户可以在工作区进行文件新建、删除和修改等操作,操作完毕以后可以将变动文件add到暂存区,然后commit到本地仓库,截止目前的操作都可以没有网络的情况下进行。最后可以将本地仓库版本push到远程仓库,远程仓库使用github进行管理,这一步需要网络。

在这里插入图片描述

2.git基本命令

注:所有命令在windows的git bash程序或者linux命令行中都适用

a.设置用户名和邮箱

在使用git时,每个用户都要设置自己的用户名和邮箱,注意此处的**用户名和邮箱和github登录的用户名和邮箱并无关联**,只是为了便于在向远程仓库上传代码时,远程仓库记录是那个用户上传了代码。设置命令如下,其中username和email自己输入即可,--global表示是全局的用户名和邮箱,对所有仓库均适用:
git config --global user.name "username"
git config --global user.email "email"

设置完成以后可以通过以下命令查看设置是否成功,可以看到自己的用户名和邮箱

git config -l

在这里插入图片描述

b.初始化本地仓库

初始化本地仓库的方法有两种,下面一一介绍。
方法一:首先将工作目录切换至要通过git管理的文件夹中,输入以下命令进行仓库初始化,初始化后可以看到文件夹中多出了.git文件夹,该目录包含了资源的所有元数据。

git init

在这里插入图片描述
接着将文件夹中需要版本控制的文件添加到暂存区,常见命令如下:

git add . //添加所有文件
git add *.cpp  //添加所有cpp文件
git add filename  //添加指定文件

最后将暂存区的文件提交到本地仓库,常见命令如下,commit message为本次提交内容的说明,至此完成了仓库的初始化工作。

git commit -m "commit message"

方法二:从现有仓库克隆:我们可以直接克隆现有的仓库,在第二部分github中我们已经学习了怎么样创建仓库,接下来可以练习克隆该仓库到本地。
首先登录github,找到我们创建的仓库,点击code,可以发现仓库有https和ssh两种地址。
在这里插入图片描述
在这里插入图片描述
若使用https地址,则以后每次从本地仓库向远程仓库提交代码时,都要输入github用户名和密码。使用ssh方式登录时,则只需通过配置公私密钥,便可以在向远程仓库提交时不输入用户名和密码。推荐ssh地址,克隆命令如下,后半部分是ssh地址。

git clone git@github.com:wyl-sjx/hello-word.git

c.设置远程仓库地址

创建好本地仓库以后,便可以设置对应的远程仓库地址。使用上一步方法二克隆创建的本地仓库路径已经自动设置,方法一创建的还需要设置。
首先通过以下命令添加远程仓库路径,仍然使用ssh路径:

git remote add origin git@github.com:wyl-sjx/hello-word.git

添加成功后可以通过 git remote -v 查看到设置的路径:
在这里插入图片描述
如果后面要修改远程仓库地址,则只需要通过以下命令删除现有地址,然后重新设置即可

git remote rm origin 

d.设置ssh密钥

设置好远程仓库地址后,在正式使用之前,需要针对ssh地址设置密钥,这样以后每次向远程仓库提交代码就像https方式那样输入账号密码了。首先切换到用户目录的.ssh文件夹下,查看是否存在公钥文件id_rsa.pub和私钥文件id_rsa。

cd ~/.ssh  //切换目录
ls     //查看所有文件

若不存在则创建公私钥,命令如下,email输入自己的邮箱地址就行,这儿的email地址没有什么实际用处。从命令本身来说,-C只是给产生的秘钥对加了一个注释。执行命令时需要用户交互,只用一直回车采用默认项即可。

ssh-keygen -t rsa -C "email"

在这里插入图片描述
此时在~/.ssh目录下可以看到生成的两个文件,通过以下命令打开公钥文件并复制所有内容。

cat ~/.ssh/id_rsa.pub

登录github,在个人中心点击设置,找到ssh and gpg keys,新建一个sshkey
在这里插入图片描述
在这里插入图片描述
输入名称,将前面复制的所有公钥内容都粘贴到key中,最后add ssh key,完成添加。
在这里插入图片描述

f.增删改更新

万事具备,正式开工。接下来用户就可以在本地工作区进行文件的增加、删除和修改等操作了。在工作区进行文件修改以后,可以通过以下命令查看工作区和暂存区的不同:

git diff

找到不同(新增、删除或者修改)的文件以后一般有两个选择:1.修改错误需要丢弃;2.修改正确,需要添加到暂存区。对于错误的修改,可以手动更正,也可以通过 git checkout 命令丢弃,如下所示:

git checkout -- a.txt   # 丢弃某个文件,或者
git checkout -- .       # 丢弃全部

若修改无误,可以通过git add将该文件添加到暂存区:

git add -A 提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

在本地修改文件的过程中,我们可能发现修改错误想要撤销,这是git restore命令可以帮助我们。git restore --stage 命令不会撤销文件修改,并且如果文件已经add到暂存区,则会从暂存区移除,不进行版本控制。git restore 不会移动文件位置,但是会撤销修改。
当然,除了restore,还可以使用后面会介绍的git reset将提交到暂存区的内容移动到工作区。

git restore --stage <file>
git restore <file>

然后通过git commit将暂存区文件提交到本地仓库。
对于已经提交到本地仓库的修改,如果想要撤销,也可以使用后面介绍的git reset命令。

git commit -m "commit message"

在文件从工作区到暂存区到本地仓库的过程中还可以通过git status查看文件状态

git status
//文件状态有以下几种
Untracked files //表示只在工作区有的file(文件或文件夹),也就是在暂时区没有该file。
Changes to be committed //表示文件已经从工作区add到暂存区
Changes not staged for commit //表示工作区,暂时区都存在的file(文件或文件夹),在工作区进行修改或删除,但是没有add到暂存区

可以通过git log命令查看过去commit的历史

git log   //所有提交信息,包括提交id
git log --author 'wupx'  //指定作者的提交

如果commit以后发现代码出错,可以通过git reset回退到某个版本。

// 切换到最新提交的代码版本
git reset HEAD 
git reset HEAD -- filename # for a specific file
// 切换到最新提交之前的代码版本
git reset HEAD^ -- filename
git reset HEAD^ -- filename # for a specific file
// 切换回3或5次提交
git reset HEAD~3 -- filename
git reset HEAD~3 -- filename # for a specific file
git reset HEAD~5 -- filename
git reset HEAD~5 -- filename # for a specific file
// 切换回特定的提交,其中 0766c053 为提交 ID
git reset 0766c053 -- filename
git reset 0766c053 -- filename # for a specific file
// 强制回退,会让你本地的修改都消失
git reset --hard 0766c053

需要注意的是git reset有三种模式。默认是mix模式,还有soft模式和hard模式。区别如下:
–hard:重置版本位置的同时,直接将工作区、 暂存区及 本地仓库 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
–soft:重置位置的同时,保留工作区、 暂存区的内容,只让本地仓库中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入暂存区中(Staged files)。所以效果看起来就是工作区的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
–mixed(默认):重置位置的同时,只保留工作区的內容,但会将暂存区 和 本地仓库中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入工作区中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。
更多详细区别可以看看这篇文章:https://www.jianshu.com/p/c2ec5f06cf1a 写得很不错。

最后提交到本地仓库的代码可以通过 git push <远程主机名> <本地分支名> <远程分支名> 命令推送到远程仓库,关于分支见后面描述,一般命令格式如下:

git push -u origin master

e.分支简介

git有分支的概念,一般我们初始化一个仓库时,会创建一个master分支。我们也可以自己创建分支,创建命令如下:

git branch name //创建新分支
git checkout -b name //创新新分支并切换
git checkout -b name 远程主机名/远程分支名 //创建新分支并且和远程分支关联,前提是远程分支已经创建

上一节在git中讲到的commit提交命令。每一次commit以后都会有一个对象和提交对应,提交对象按照时间顺序组成链表,分支指向某一个提交对象,示意图如下所示。刚刚创建testing分支时,两个分支master和testing都指向了同一个提交对象:
在这里插入图片描述
那么如何知道当前工作分支是那一个呢?git定义了一个HEAD指针,它指向那个分支,说明工作分支是那一个,如下图所示:
在这里插入图片描述
可以通过git checkout 命令切换到testing分支,命令如下,切换后示意图如下。

git checkout testing

在这里插入图片描述
那么分支有什么作用呢?实际项目中的分支使用情景如下:
1.master分支一般是不能直接修改的。
2.用户针对具体业务需求要撰写或者修改代码时需要新建分支,并在该分支工作。
3.完成修改以后可以切换回到主分支,将修改分支和主分支合并即可。
比如下图中有三个分支,master 分支、hotfix分支和iss53分支。用户在hofix分支和iss53分支新建后进行了代码修改并且commit所以,现在他们都指向了不同的提交对象。
在这里插入图片描述
hotfix分支修改完成可以切换到master分支并进行合并了,命令如下,注意进行分支切换之前一定要保证本分支所有修改已经提交了,因为切换分支以后工作区也会随之变动:

git checkout master
git merge hotfix

在这里插入图片描述
若之后iss53分支又进行了改动提交,然后切换到主分支进行合并,最后结果示意图如下。
在这里插入图片描述
合并后的hootfix 分支和iss53分支已经不需要了可以进行删除。

git branch -d hotfix
git branch -d iss53
git branch -D name //删除未合并的分支
git branch -r -d 远程主机名/远程分支名 //删除远程分支

此外可以通过git branch命令查看到所有分支

// 查看所有本地分支
git branch
// 查看本地及远程所有分支
git branch -a

若在合并过程中,两个分支都对同一个文件进行了修改,此时就会发生冲突。可以通过git status命令查看冲突的文件,此时它们处于(unmerged)状态。 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动修改解决冲突,最后add、commit后切换分支重新merge。


总结

这篇文章详细介绍了一下git/github使用,本人也是小白,水平不足,请多多指教。
在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值