Git&GitHub学习(一)

1.简介与由来
2.结构
3.实战
4.Git基本原理

1.简介与由来

GitHub可用于版本控制,简单来说,就是在码代码的过程中,对每一次的修改版本进行标记与数据备份,而后可对任一历史版本进行修改,在团队协作的时候这种功能显得尤为重要,若某一版本被同伴修改,发生错误,可直接回上一历史版本重新修改,省时省力。

与SVN不同在于,SVN采用增量式管理,也就是每次只保留修改的那一部分,那么修改的这部分与之前的版本加起来就是最新版本,git采用文件系统快照的形式。

可进行权限控制,比如:只读,只写,可读可写等。

说起Git的由来,要从Linux说起,Linux是由Linux社区里的大佬们与linus大神协作完成的,对Linux感兴趣的伙伴都可以将代码发给linus大神,一开始这些代码都由Linus大神手动合并,而至后来,系统越来越大,任务实在有点重,这时一家叫BitMover的公司出于人道主义精神提供了一个BitKeeper的商业软件,由于未开源,要求不能破解此软件代码,但是有个叫Andrew的大佬愣是光明正大地去破解,结果被BitMover的公司发现了,收回了此软件的使用权。这可怎么了得,Linus于是决定自己写一个分布式版本控制系统,也就是后来的Git,据说,只花了两周就写出了主程序。他有一句很有名的话:talk is cheap! show me you code!

2.结构

分为三个区:
工作区(码代码)—git add–>暂存区(临时存储)—git commit–>本地库(历史版本)

Git VS GitHub:
GitHub是Git的其中一个代码托管中心,托管中心是用于维护远程库的。
举个栗子:A,B分别有自己的本地库,A发起了一个项目,并在托管中心创建一个远程库,此时远程库为空,项目保存在本地库之后,将本地库中的数据push至远程库中,而B可将此远程库中的内容clone下来,但想编辑此项目,得先加入这个团队,而后push自己本地库的内容至此远程库,同时A可将远程库内容pull至自己的本地库。

还是这个栗子:另外一种情况,在这个基础上,想要外部人员C帮助完成项目,则需要先将A的远程库fork一份为C的远程库,而后C对自己的远程库及本地库进行操作,而后,C的远程库向A的远程库发出一份pull request的申请,而后A对此进行审核,审核通过后,再将C的远程库内容合并至A的远程库。

3.实战之git命令行操作

现在咱们开始实际操作。

3.1本地库初始化
  • 命令:git init
  • 作用效果:创建一个空的.git文件(一般来说,文件中以 . 开头的均为隐藏文件,需要命令 ll -lA 查看)
  • 补充:
    • 下载git------在电脑桌面或任意磁盘文件界面下右击--------点击git bash here
    • 其他命令:
      • ll 查看当前文件夹下所有非隐藏文件

      • ll -lA 查看当前文件夹下所有隐藏文件

      • pwd 查看当前所在目录

      • cd 文件夹名/ 进入此文件夹查看

      • ls -l|less 管道操作,分屏查看

      • 详情查看:Linux ll ls 详解.

3.2设置签名
分类项目级别系统用户级别
优先级比较较高较低
定义在本地库创建目录下有效相当于是电脑用户名,在整个电脑系统中有效
命令git config user.name xxx(自定义) git config user.email xxxx(自定义)git config --global user.name xxx(自定义) git config --global user.email xxxx(自定义)
存储位置(查看方法).git/config文件中(cat .git/config).gitconfig文件中(cat ~/.gitconfig)

注意事项:二者必设其一

3.3添加提交以及查看状态操作
git status
git add
git commit
git status
  • 在本地初始化时我们已经创建了一个空的.git 文件,在此文件的目录下,用git status 可查看当前状态,显示如下:
on brach master
No commit                 #此处是指在本地库中没有文件被提交
Nothing to commit             #此处是指在暂存库中没有可以被提交的文件
  • 那么用vim编辑器新建一个文件,命令:vim demo.txt 补充:vim编辑器的命令为: wq(指退出),set nu(显示行号)

  • 此时再回到当前目录下,用git status命令查看工作区与暂存区状态,会发现demo.txt被标红,意思为:此文件未被管理,无法为其保存历史纪录等。

  • 那么用git add命令将其加入暂存区:git add demo.txt;另外,将文件从暂存区撤离的命令为:git rm --cached demo.txt

  • 再一次检测状态(git status),而后用git commit 命令将其从暂存区移入本地库,命令用法与git add一致。

  • 此时界面跳入vim编辑器,用法见: vim操作命令大全

  • cat demo.txt 可查看文件内容

  • 用vim demo.txt 打开文件并进行修改,而后再查看状态,此时modified demo.txt被标红,可知此文件是被修改的文件,界面上还有两条关于更新与撤销刚才的修改的提示命令。此时可以选择对此文件用git add进行追踪放置暂存区,也可以将其直接git commit 放入本地库。

  • 若从暂存区将其放入本地库时,可用git commit -m “自定义编辑,如:my second operation” demo.txt

3.4查看历史版本操作
  • git log 查看所有历史版本目录,HEAD指向当前版本,当版本较多超过一页时,b向上翻页,q退出。
  • git log --pretty=oneline:将会以一行的形式显示所有历史版本。
  • git log --oneline:在前者的基础上,只显示 [部分索引值] 。以及,只显示HEAD指向的当前版本及历史版本。
  • git reflog:在前者的基础上,增加了HEAD@{n},其中n指要到达当前版本需要让HEAD指针移动的步数。会显示所有版本,被HEAD指向的当前及历史与更新版本。
  • 查看历史版本具体内容有以下三种形式:
    • 基于索引值:git reset --hard[部分索引值] 而后用cat demo.txt可查看此版本内容。
    • 使用^符号:只可后退 git reset --hard HEAD^^^,此符号有几个表示后退几步,且之后只能查看到达的当前版本以及历史版本,再不可返回最新版本。
    • 使用~符号:弥补了前者的复杂性,git reset --hard HEAD~n,指后退n步,同样的,只能后退。
  • 补充:–soft VS --mixed VS --hard
    • 第一个–soft参数是指仅仅在本地库移动HEAD指针。
    • 第二个参数在前者的基础上还重置暂存区。
    • 第三个参数在前者的基础上且重置工作区。–hard更常用。

未完待续……

注:学习自bilibili站。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值