Git入门(上)

开篇:git的由来

Linus(林纳斯)是一个伟大的黑客,曾就职于美国加州硅谷的一家科技公司,是Linux系统的创始人,坚持开源精神,竞争对手是微软。

1969年林纳斯出生于芬兰,1982年林纳斯的爷爷童奎(芬兰赫尔辛基大学的统计学教授),为了在家可以完成工作买了一个早期的电脑,但问题是习惯了用纸和笔的童奎很不习惯敲键盘,于是他把目光转向了11岁的外孙林纳斯,童奎在纸上写好代码,有童奎输入进电脑。于是放学回家帮外公输程序成为了林纳斯的“家庭作业”,很快他敲键盘的熟练度超过了外公。久而久之,他觉得仅仅帮外公输入程序有点无聊,开始试着自己编程,并从此对变成上瘾。热爱变成的林纳斯是个不折不扣的直男,上中学时虽然数学成绩超好却不解风情。一直没明白找他补数学的女孩子并让他帮自己养猫是什么意思。

19岁是他考入了爷爷曾任教的大学,选择了计算机专业,那是计算机专业是个冷门专业。当时他深爱的操作系统叫Unix,当时的操作系统功能简单,bug丛生,林纳斯决心编写一个自己的操作系统,他在赫尔辛基一家经营电脑的夫妻店,花了3500美元DIY了一台外观平淡无奇但是性能彪悍的电脑,他付了1200美元,剩下的需要再三年内还清。

1991年9月,正在上大二的林纳斯将Linux系统0.01版本发布,源代码超过1000万行。Linux系统一出现,深受全球黑客的喜爱,经过他们的共同努力,1994年3月14日Linux系统1.0版本在赫尔辛基大学发布。

相比于当时如日中天的Windows,Linux完全免费,并具备图形界面。 鲜明的特色赋予了Linux强大的生命力,使它在Windows开始独霸全球操作系统时,仍能撕开一条口子。

而时至今日:

80%以上的只能手机,均使用基于Linux内核的Android系统。

75%的云计算在Linux系统上运行。

没有Linux系统就没有现在的Google搜索,淘宝购物,微信,QQ聊天等。

在git之前有很多的版本控制工具例如CVS,和SNV,但林纳斯并不喜欢集中式的版本控制工具。虽然那时有些付费的版本控制工具很好用,但不符合林纳斯的开源精神(就像玛丽·居里一样发现了镭这种元素但是并没有当做自己赚钱的工具而是把发现公布与众,简单的说就是免费给别人用),一家出售版本控制系统的公司(BitKeeper)找到了林纳斯授权Linux的开发者可以免费使用,这一消息极大的振奋了Linux的开发者。要知道再次之前世界各地的开发者是使用邮件将代码发给林纳斯,再由林纳斯手动合并。

但Linux社区牛人聚集,一些梁山好汉视图破解这一软件,引起了BitKeeper公司的强烈不满,曾威胁要撤销他们免费使用的权利。小弟烦了事儿,大哥主动帮抗,林纳斯并没有像BitKeeper公司道歉而是闷头花了两周的时间自己用C写了一个分布式版本控制系统,这就是GIT,尤其是2008年,GitHub网站上线了,它为开源项目提供免费存储,无数开源项目开始迁至GitHub。

起步:下载git

git下载地址:

https://git-scm.com/

改变git的UI样式:

找到安装git的文件夹,进去之后,右击git-bash.exe选择 以管理员身份运行

接着复制粘贴如下命令:

git clone https://github.com/xnng/my-git-bash.git
cd my-git-bash

git clone https://gitee.com/xnng/bash.git
cd bash

接下来,安装字体:

#运行完下边这条命令之后,window电脑会打开两个文件夹,一个文件夹里有很多.ttf文件
#另一个文件夹里只有一个,把仅有的这一个直接拖到另一个有很多文件的文件夹里

start c://Windows//Fonts && start %cd%/fonts

接下来安装主题:

cp .minttyrc ~ && cp git-prompt.sh /etc/profile.d
exit

做完上面的操作之后有的电脑会重启一下gitbash有的电脑把gitbash关了之后不再重启,如果电脑没有自动重启gitbash只需手动打开就可以了。

git指南

创建版本库:

git init

添加操作:

# 添加操作实际上是把文件修改添加到暂存区
# 单独添加某个文件的修改
git add 文件名称

# 添加所有文件的修改使用的是小写的点
 git add .

提交操作:

# 提交更改,实际上就是把暂存区的所有内容提交到当前分支会提交所有添加后的文件
git commit -m"本次提交的描述"

查看当前仓库里所有文件的状态:

git status

查看一个文件修改了哪一部分:

git diff 文件名

查看提交历史:

git log
# 要想让日志变得更漂亮、美观,可以试试下方代码

git log --pretty=oneline

回到上一个版本:

# 上一个是HEAD^,回到上上一个是HEAD^^,回退到10个版本以前HEAD~10
git reset --hard HEAD^

回到某个特定的版本:

git reset --hard 版本号

查看所有使用过的命令历史(日志):

git reflog

工作区:

git仓库所在的目录就是工作区

版本库:

.git文件夹就是当前这个git仓库的版本库,这个不是工作区;

里边存了很多东西,其中最重要的是stage【暂存区】、git自动创建的第一个分支master【主分支】、以及指向master【主分支】的指针HEAD

修改了一部分把它添加到了暂存区,但是又对文件进行了一波修改:

# 第一次修改
git add .

# 第二次修改,继续添加
git add .

# 统一提交
git commit -m"描述"

撤销修改:

#让文件回到最近一次添加或提交时的样子
git restore 文件名

撤销已添加到暂存区的修改:

# 撤销单个
git restore --staged 文件名

# 撤销多个
git restore --staged .

删除文件:

# 手动删除一个文件之后,git版本库里依然是有这个文件的,如果要把git版本库里的文件也删除掉,
# 使用git rm命令。比如说我们现在手动删除了一个叫做demo1.html的文件,接着
git rm demo1.html

# 从版本库里删除之后要再进行一次提交
git commit -m"描述"

远程仓库

文中的克隆指的是下载:

git之所以叫做分布式版本控制系统,同一个git仓库,可以分布到不同的电脑上,那么怎么分布呢?最早,肯定只有一台机器有这个版本库,别人可以直接把你的这个版本库复制到自己的电脑里,复制完成之后,每个人都有了一个一样的版本库,这些分布在不同人不同电脑上的版本库并没有主次之分。这样即使某个人的电脑坏了文件丢失了,也可以再克隆一遍。假如说我们有一个git仓库,别人需要克隆,我们不知道有多少个人要克隆,也不知道他们什么时候来克隆这个版本库,因此我们就必须保持电脑24小时开机,而在实际开发中我们一般会把这个git仓库放在一台服务器上,这样无论何时何地只要有网络任何人都可以克隆这个仓库。而github就为我们免费提供了一个可以存储git仓库的服务器,我们只需要注册一个github的账号就可以了。怎么注册呢?

注册github账号

github网址https://github.com/

github是一个免费的代码托管平台,用户范围遍布全球,我们放在上边的项目别人可以查看和克隆,别人放在上边的项目我们也可以查看和克隆,这样即便是离我们很遥远的牛人,我们也可以把他们公开的项目下载下来玩弄一番。

接着创建SSH Key

我们把项目放到github上托管后,其他人也可以看到和下载,为了防止别人修改我们在远程仓库里的代码,github使用一种加密认证,只有认证通过才可以修改远程仓库里代码。那别人下载我们的代码到自己的电脑上之后可不可以在他的电脑上修改我们的代码呢?这个当然可以,我们无法控制,我们能做的是不让他改我们远程仓库里的代码

ssh-keygen -t rsa -C "你的邮箱地址"

输入完成之后不管他提示什么都一路回车,知到不能回车为止,接着把我们生成的SSH Key添加到我们自己的github账号里:

# 首先你要知道自己的sshkey是什么
 cat ~/.ssh/id_rsa.pub

把返回的一堆密码复制一下,填在自己github的设置里(这个密码可以随意给别人看,除非你做的是机密工作,那你不能透露给别人)。

添加上去之后我们现在就可以去修改自己账号里远程仓库里的代码了,但是我们得先有个仓库,现在我们在github上创建一个远程仓库。

接着我们找到本地的git仓库,然后把本地的仓库和远程的仓库关联起来:

# 在本地
git remote add origin 远程仓库的地址

现在我们把两个仓库关联了起来,但是远程仓库里并没有我们本地仓库的代码,我们需要把本地的代码推送到远程:

# 在本地
git push origin master

推送完成之后,我们会发现远程里的代码和我们本地的代码一模一样。从现在开始,只要你本地修改代码并提交之后,就可以推送到远程仓库来更新远程仓库里的内容。我们刚才所说的别人无法修改你远程仓库里的代码指的就是他不能把在他本地上修改的部分推到你的远程仓库。

刚才我们说的是如何本地仓库关联远程仓库接下来我们来看看如何把远程仓库上看到的代码克隆到本地:

git clone 仓库地址
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353