git与github基础

2020-04-26  本文已影响0人  小贝学生信

主要是基于廖雪峰官网git教程的学习笔记;感谢大佬们的分享,努力做一个海边拾贝的boy~

0、背景

Git是目前世界上最先进的分布式版本控制系统,用来托管代码。我的理解为

1、git安装

Linux

若命令行输入git,回车提示git未安装,输入下述命令直接安装即可。

sudo apt-get install git   #适用于Debian或Ubuntu系统

Windows

进入git官网下载,安装(一路默认)即可。安装完成后,桌面鼠标右击,菜单中出现Git Bash Here;点击会出现一个类似Linux控制台的窗口即表示安装成功。

小插曲:为了想从头演示一下,就把原来装好的git卸载了,重新下载练练手,可是发现今天官网下载速度巨慢......后来发现360软件管家有,几秒钟就下好了....


git config --global user.name "li"
git config --global user.email "12******79@qq.com"

--global参数表示全局配置,以后在本台电脑使用git,都默认为上面的用户信息,在之后的文件管理中都会有记录的。

2、建立一个git本地仓库

又叫版本库/repository。本质上就像一个文件夹,区别在于可以受git进行版本控制等管理。

cd ~/Desktop/
mkdir git02  #目录名不要有中文
cd git02
pwd

此时创建的文件夹和桌面其它一般文件夹本质相同

git init
ls -ah  #查看包括隐藏文件的所有文件

发现当前目录下多了一个.git的目录,表示初始化成功,已经建立好一个版本库了。

tips:可管理的文件类型只能是文本文件,因此适用于代码文件;不要使用windows记事本编写代码,推荐notepad++。

2、储存一个文件(三步走)

第一步:操作文件

主要是修改增删,当然一开始有时是创建新文件;删除操作较特殊之后会说。

vim 3.txt #工作区新建一个文本文件
git status  #红色
2-1

第二步:add操作

git add 3.txt  #将产生操作的文件 add 到暂存区 
git status    #绿色
2-2

第三步:commit操作

git commit -m "creat 3.txt"
#将操作最终提交给版本库,并对本次提交 -m 选项进行说明
git status  #白色 tree clean
2-3

通过上面三个过程可以知道git管理记录时,首先是在工作区实际对某些文本的操作(新建/修改/删除);然后将这些操作(注意是操作,比如增加了文本几行内容)记录传到暂存区(可以一次add多个);最后提交给git版本库,git通过有序得记录从文本创建到修改的操作过程的commit版本从而实现版本控制。


三步关系

复习一遍流程:修改3.txt文件

vim 3.txt  #增加2行内容
git diff 3.txt
git add 3.txt
git commit -m "add 2 lines"
增加2行

如果是删除操作的话,要先在本地rm删除,然后在git版本库中删除

rm 3.txt
git status
git rm 3.txt
git commit -m "remove 3.txt"

3、撤销修改

主要分为以下3中情况的撤销

3.1 工作区修改撤销

cat 3.txt
vim 3.txt
cat 3.txt
git status
3.1-1
git checkout -- 3.txt
cat 3.txt

如果是文件误删操作,也可以利用这种方法恢复。

3.2 暂存区修改撤销

如果上述的误操作已经add了--

vim 3.txt
git add 3.txt 
git status 
git reset HEAD 3.txt #撤销add
git status
git checkout -- 3.txt  #撤销修改

3.3 commit修改撤销

如果已经不慎连续add、commit,即完全在版本库中提交了一个新的版本commit,可以使用第四点介绍的版本控制,直接回到上一版本commit即可。

4、版本控制

vim 3.txt #删除最后一行
git add 3.txt
git commit -m "delete the last line"
git log

返回所有的3条操作记录(最近到最远):有commit版本号、修改人、日期、修改说明


git log
git log --pretty=oneline   #简洁版 只有commit号与修改说明
git reflog  #返回历史命令,也可以用来查找commit版本号
git reset --hard b739c6af  #只需要前面几位即可
git reset --hard HEAD^ #回退上一版本

补充:标签tag

标签tag号本质上作用等同于commit版本号。只是前者可自己命名(V1.0,V2.0...),比后者好记的得多。

git tag v1.0  # 当前版本v1.0标签打好了
git tag #查看所有标签
git show v1.0 #查看该标签相关信息
#可根据历史commit号补标签,如下
git log --pretty=oneline --abbrev-commit
git tag v0.9 b739c6a
git tag -d v0.9  #删除标签
git push origin v1.0 #推送标签到远程,远程操作见下第五点
git push origin :refs/tags/v1.0  #删除远程标签

5、远程仓库 github

5.1 公钥配置

本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,因此需要在本地找到公钥交给github从而建立联系

cd ~/.ssh
# 如果发现该目录不存在 使用下一行代码即可生成
# ssh-keygen -t rsa -C "12******79@qq.com"
cat id_rsa.pub  
#若发现秘钥邮箱是其它用户的,按该目录不存在情况处理

5.2 本地库实现远程同步push

git remote add origin git@github.com:xiaobei1999/git02_dist.git

GitHub给出的地址不止一个,还可以用https://github.com/xiaobei1999/git02_dist.git 类的地址

git push -u origin master
git push origin master

5.3 github仓库克隆到本地

假如在github中fork别人的库(在GitHub上可以任意Fork开源仓库)到自己的github仓库,再将其克隆到本地进行操作、修改之类的。

git clone git@github.com:xiaobei1999/git01
cd git01
ls

github是全球通用的,有时可能国内连接稳定。国内的Git托管服务Gitee(gitee.com)与github发挥同样的功能,速度在国内会更稳定些。同一个本地库可以既关联GitHub,又关联Gitee。

6、分支branch管理

这是github的一大优势,分支管理十分高效,因此适合相关团队开发工作。因为以后对于我用的可能不是很多,就简单介绍一下吧~
首先要理解下述过程

一般开发中,master分支应该是非常稳定的,也就是仅用来发布新版本。开发者都是在dev中搞事情,每个人都有自己的分支,时不时地往dev分支上合并就可以了,最后合并到master中即可。

vim 4.txt
git add 4.txt
git commit -m "new 4.txt"
git branch #查看分支,当前应只有一个分支

创建一条新分支,并在该分支中进行修改

git checkout -b dev
#-b参数表示创建并切换,等同于下面两行代码
# git branch dev
# git checkout dev
git branch
vim 4.txt
git add 4.txt
git commit -m "add 1 line"

返回master 主支,完成合并

git checkout master
cat add  #发现并没有dev的修改,需要合并
git merge dev 
git branch -d dev #删除dev分支
git branch

如前所述 git checkout --为撤销命令,容易记混。最新版本的git switch命令也支持分支功能,也更好理解。但是我刚试了下,发现命令不存在。可能版本比较低的原因吧 2.20.1


以上是学习git教程的一些学习笔记。如有错误,欢迎各位朋友指正呀~

上一篇下一篇

猜你喜欢

热点阅读