git及github的操作使用随笔

git及github的操作使用

git介绍

git是一款版本控制系统,就像是在下载一些软件时,在官网上除了可以下载最新版以外,也可以选择下载之前的旧版本,可以选择32位版本,也可以选择64位版本。同样的,在我们进行开发创作的过程中,也可能会产生很多版本,但是不一定之后的版本就一定比前一个版本bug少,更适合发布,这时就可以根据实际选择在哪个版本上继续进行创作开发。

因此,有了git就可以非常方便地管理、切换版本。

仓库及其初始化

在git中,有“仓库” (repository)的概念,所谓的仓库,就是指存有工程有关的所有文件合集

具体而言,就是一个 目录,在该目录下有一个.git子目录,记录了与长裤管理相关的各种信息

要初始化的得到一个可以被版本控制的git仓库有两种方法

  • 通过git init命令,将一个普通目录,转化为仓库

  • 通过 git clone 命令,从网络上复制一个已有的仓库(后文介绍)
    在这里插入图片描述

版本控制与commit

在git仓库中操作文件(增删改),可以收到git的记录,进行版本控制。

但是,git对于版本的记录,并不是全自动的,需要我们告诉git,工程中哪些节点作 为“快照”,再未来可以恢复。

提交快照的方法,在git中称为commit ,我们将看到,一般的 commit 的流程:

  • 对文件进行了操作(增加、删除、修改)
  • 将改动了的文件,添加到缓存区(staged、工作台)
  • 通过 git commit命令,正式提交,在git系统中存一个快照,以备之后恢复

如,当我们在git仓库,创建了一个 git_ex.go文件后: 先通过git add <文件名> 命令,将该文件,添加到缓存区

在开始之前需要先设置一下环境

git config --global user.name "Your Name"  
git config --global user.email "you@example.com"

否则会报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lxYAbWot-1602303604172)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711172337393.png)]

然后:

git add git_ex.go 

接着,通过git commit 命令,提交快照

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mNMvr1TG-1602303604175)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711174003789.png)]

输入后会自动打开一个 一个文本编译器(我这里的是vim编辑器)其中记录着比起上次快照相比,做了那些改变

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4VAzpdbV-1602303604178)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711173320893.png)]

在此我向其中加入 新建了一个first.go文件几个字后就会被添加进去

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lEu3LNO9-1602303604180)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711173949647.png)]

也可以直接使用

git commit -m "新建了一个first.go文件"

也会将这段话同样效果的添加进去

所有的commit,都会被git记录在案(以方便之后回档),我们可以通过git log命令来查看提交记录。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OfZViXtO-1602303604183)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711174349075.png)]

查看修改情况以及缓存区情况

我们可以通过 git status 命令,查看哪些文件修改了,以及当前缓存区的情况。

如图所示,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ktfOcWrX-1602303604184)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711174550489.png)]

当我新建了一个文件second.go后在此查看缓冲区情况时

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X3oQ5Fzj-1602303604186)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711175041825.png)]

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uFxuTL2w-1602303604187)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711175012284.png)](https://img-blog.csdnimg.cn/20210107184812801.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29ybG9ibA==,size_16,color_FFFFFF,t_70)

会发现除了已修改但未提交的报告外,还有一个未添加的文件报告

此时可以通过前文所述的 git add <文件名> 的方式,将改动的文件,添加到缓存 区。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ujZWj8YZ-1602303604187)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711175740784.png)]

或者可以通过 git add .命令,将所有改动的文件,都添加到缓存区。

注意:与add命令对应的,还有git rm 命令,可以从缓存区删除文件。

详细日志

可以通过git log -p打印比较详细的修改前后的情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rlHID0aQ-1602303604189)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711180655643.png)]

可以看到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ynyUdY9-1602303604190)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711180755694.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nam4RcSN-1602303604191)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711181206919.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4AgloZHP-1602303604192)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711181200394.png)]

版本回溯

我们可以通过 git reset <快照hash> 的方式,切换到原有的版本。

其中hash就是

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8LeK7Fiv-1602303604193)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711182144741.png)]

修改前

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WamRW9Vh-1602303604194)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711182122442.png)]

git reset 482b3afabbb06b6897fea477783c96cf387e1a02 ‐‐hard

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mYa8FrmQ-1602303604194)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711182026668.png)]

版本就变回去了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y2HrjCSR-1602303604196)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711182211702.png)]

再例如

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xphimLv5-1602303604197)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711183303508.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZXHZ5hw-1602303604198)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711183318502.png)]

运行后:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5iJNMAuQ-1602303604199)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711183336053.png)]

分支与分支的合并

分支创建与切换

git仓库的第一次commit之后,git会默认给我们创建一个分支(master)。 在一个git仓库中,可以有多个分支,每个分支,可以有多次commit。分支的作用类似 于“分身”,也就说一个新得分支的建立,意味着在老分支的基础上,克隆除了一个新 的分支。

我们可以通过

git branch //命令查看分支。 
git branch -a //查看远程分支   当同步远程仓库时使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6HTDvKmM-1602303604199)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711192028403.png)]

我们可以通过通过

git checkout ‐b <新分支名>

新建,并且切换到新的分支上。 比如,我们当前的master分支,是商业版本;然后,我们像加一个功能(readme),但是为了不影响商业版本,我们可以先新建一个分支,然在分支上进行开发:

git checkout ‐b add_readme

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9jONBP3-1602303604200)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711183711134.png)]

我们也可以通过 git checkout <分支名>在分支间进行切换。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRgTrV0w-1602303604202)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711195259825.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d6QVrnRY-1602303604203)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200711195228831.png)]

当切换回master后

分支add_readme下的readme.md就消失了

当切换回该分支时,readme.md 又会出现

git非常推荐使用分支来组织自己的工作流,一般要为项目添加一个功能,流程:

  • 切换/同步主分支到最新(master)

  • 在master的基础上,新建分支

  • 在新分支上新增功能

  • 等到时机成熟了,将新分支与主分支,进行合并 不考虑远程仓库,合并本地分支的方法,

    使用 git merge命令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYiE1N40-1602303604204)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200714143558335.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xx8oarhI-1602303604205)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200714143657971.png)]

分支合并

git merge <分支名>

就会将指定的分支,与当前的分支进行合并。 如果两个被合并的分支中,有冲突(同一个文件被不同修改),则需要手工确认。

在项目合作中,往往可以在新分支中开发新功能,成熟之后再合并。

如下 ,我创建了两个分支readmereadme2 之后在两个分支中分别对readme.md文件进行不同修改

然后在 主干master上合并

然后手动修改删除即可

github的使用

上面使用的git命令,其实不仅是一个本地程序,还是一个客户端。配合服务端,git可以将仓库上传、下载到服务端,与(远程仓库)。

通常github.com是可以免费使用的,免费提供git服务端功能的网站。

与之类似,还有gitlee.com。

如何克隆别人的仓库

在github,com的对应页,找到git仓库的地址,然后用git clone的方法,可以同步到远程仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dcx0eudP-1602303604206)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200728175507002.png)]

git clone https://github.com/HuangTingIT/HuffmanCoding.git

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WttwHixE-1602303604207)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200728175735869.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Jnyim0q-1602303604208)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200728175928606.png)]

通过上述方法可以将远程仓库到本地

但是没有将更新的commit记录同步,这就需要:

git fetch <远程仓库地址> <远程分支名>    //可以同步指定分支的更新记录
git fetch <远程仓库地址>  //若不指定分支名 则将远程主机的更新全部取回本地

因此通过

git fetch origin master

即可同步更新记录

以上的origin就是远程仓库的地址的简称

这是 github.com的默认值

image-20200728181142115

可以看到这个origin其实就是刚才同步时所输的那个网址一个代号,一个通用的别名

github.com的密钥配置

github.com上的工程人人都可以克隆,但是如果人人都可以往该工程中上传,就会很难管理了,所以要保证账号的一致,

但是如果团队共同合作时,其他人如果也要用该账号密码进行创作,就会比较麻烦

因此为了更方便操作远程仓库,而不用频繁的输入账号密码,就需要配置一下公钥、私钥。

所谓的公钥、私钥,就是2个加密软件生成的文件,私钥需要放置在指定的当前电脑指定目录,

公钥,需要将内容上传到github.com

如何生成公钥、私钥?

通过ssh=keygen命令生成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E4Z7l4BB-1602303604209)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200731175328250.png)]

然后系统文件下就会出现这两个文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWJ74oVD-1602303604209)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200731175505156.png)]

其中id_rsa是私钥,id_rsa.pub是公钥。

公钥和私钥其实就是两个文本文件,其中的内容就是段加密的数字,通过公钥和私钥间进行数学运算,来确认是否匹配。(私钥内容一定不要给别人看)

然后需要将公钥设置到github.com上,

打开github.com网站,然后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IN8VbVk4-1602303604210)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200731180243496.png)]
在这里插入图片描述

然后将id_rsa.pub文本文件的内容复制粘贴到下面的key框中

并为其起一个名字Tile然后点击添加

这里可以添加多个公钥,用于多人操作该仓库,下面就添加成功了

需要注意的是:

  • 上传过的公钥不可以再次上传

  • 若使用ssh的方式同步,则需要将之前创建的HTTP协议改为SSH协议

    通过下面方式可以修改,修改后 仓库连接的地址就会变成ssh协议的地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q56iteiX-1602303604211)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200731200212317.png)]

创建仓库


在这里插入图片描述

通过上面的操作就还可以创建一个自己的新仓库

然后通过一下命令可以同步到新仓库

#先创建一个本地仓库
git init
git add <需要添加到缓冲区的文件的文件名>
git commit #更新快照 一般用 git commit -m "需要添加的版本描述"

#然后将远程仓库和本地仓库关联  并给远程仓库的地址起别名(没人为origin)(这里的地址为HTTP协议的,如果是用公钥私钥,需要用SSH协议的地址<git@github.com:OrangLBlue/homework.git>)
git remote add origin https://github.com/OrangLBlue/homework.git

#最后通过git push...将本地仓库上传到远程仓库的master分支
git push -u origin master 

其实也就是网页中的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dlw1v0hK-1602303604212)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200728190157676.png)]

那么预热了这些,接下来就开始操作吧

起初

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ThEq08qv-1602303604213)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200728184845541.png)]

文件中没有别名与地址

在通过git remote add origin https://github.com/OrangLBlue/homework.git关联后就会出现别名和地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-msS2oQ0V-1602303604214)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200728185014358.png)]

最后通过git push将本地仓库上传到远程仓库的master分支

这时回弹出github的身份验证

输入账号密码(要与vscode 创建git仓库时设置的一样)验证之后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-93a0DNPK-1602303604216)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200728190119119.png)]

远程仓库就会有本地的commit。就可以在个人主页中看到自己的仓库,并可以点进去查看详情

远程仓库的分支操作

分支创建及上传

如果团队共同维护一个项目

git checkout master   //先切换到主分支
git pull              //下载最新的版本

//创建新分支
git checkout -b <新分支的名字> 
//将修改添加至缓冲区
git add <被修改的文件名>   //也可以用‘ . ’代替  代表将该目录下所有文件添加至缓冲区
//提交快照
git commit -m "第一个新分支—第一次作业"

//将修改提交到远程仓库分支
git push origin new_branch

之后会发现远程仓库网页中出现了一个新分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5lABX5g-1602303604217)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200801194948769.png)]

切换过去后就会发现 正是刚刚创建和修改的分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RuM0vKLi-1602303604218)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200801195609358.png)]

点开commit 可以看到两次提交的记录

点开一条记录,还可以查看详细修改的内容是什么

分支合并

在这里插入图片描述

在提交后网页中会出现以上提示

用于发送合并请求,点开后就可以写一个草案共他人来看
在这里插入图片描述

提交后会出现该页面,点击框中按钮表示决定要进行合并

你也可以请他人来参考,这时另一个人会有一定的决定权来决定是否可以合并
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3gRNbT2Y-1602303604220)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200801200450462.png)]

然后点confirm merge进行合并

合并后会显示 “拉请求成功合并并关闭一切就绪——可以安全地删除new_branch分支。”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XHkXLkOQ-1602303604221)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200801200639610.png)]

再返回仓库主页面看,会发现master分支下文件变成了合并后的结果,同时commit也多了一次
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z9ml6SX0-1602303604222)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200801201048801.png)]

然后到本地操作

//切换到主分支
git checkout master
//查看当前分支
git branch
//更新
git pull

切换到主分支后,原文件内容为空

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aD4Gdy6r-1602303604224)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200801201827111.png)]

更新后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x77ouCWJ-1602303604225)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20200801201925965.png)]

就是我们想要的结果了

修改之前的commit注释

如果已经提交到了远程仓库

歧视网上有很多方法,但是我觉的最好用的还是

git rebase -i --root

这个可以修改所有的commit注释信息

输入指令后回车会进带vim的界面,其中前面几行的 pick就是之前提交的所有commit信息了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dIHIOPzx-1602303604226)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20201010115854452.png)]

输入指令后会显示的内容

然后按按键 i后进入编辑模式,进行修改,将你想要修改的commit注释前面的pick改为edit,想改哪条改哪条,还可以都改,批量进行 ,把想改的注释改成edit后按ESC键然后再输入:(一定要是英文状态下)+wq

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ge2U3Lhs-1602303604227)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20201010120512727.png)]

然后敲回车系统就会帮你保存并退出

然后你会显示如下提示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bybVs6rA-1602303604228)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20201010120631236.png)]

先输入

git commit --amend

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u98i5GbJ-1602303604229)(C:\Users\Shinelon\AppData\Roaming\Typora\typora-user-images\image-20201010120732336.png)]

然后就会显示你想修改的注释信息,一样的按i进行修改后保存退出

再输入

git rebase --continue

合并信息

到此本地的commit信息就已经修改完了

可以通过git log查看是否修改成功

然后通过

git push --force origin master

可以将修改后的注释上传到远程仓库,之前的注释就会变成修改后的注释了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OrangeLBlue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值