Git与GitHub笔记(1)

这里是本人所需的相关笔记,如果需要详细的教程可以点击这里
附上git常用命令git cheatsheet

使用GitHub

目的

  • 借助github托管代码

基本概念

  • Repository :仓库,仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库。
  • Star :收藏项目,方便下次查看。
  • Fork:复制克隆项目,自动在自己的GitHub账户中新建一个同名仓库,存放要复制的项目代码。
  • Pull Request:发送请求。此操作基于Fork,张三Fork了李四的项目A,张三的账户中会有一个同名项目仓库A',张三对A'进行了改进,且希望将此改进应用到原项目A中,则可以发送请求,李四就会收到请求,然后检查张三的代码,如果OK了,就可以同意这个请求,这时张三的改进就会并入到原项目A中。
  • Watch:关注,若你关注了某个项目,那么以后这个项目有任何更新,你都会在第一时间收到关于这个项目的通知提醒。
  • Issue:当项目中的代码出现Bug,或者有需要改进的地方,但又没有成形的代码,需要进行讨论时,就可以在项目下提一个Issue。
  • Github主页、项目主页、个人主页

开源项目贡献流程

1、新建Issue
  • 提交使用问题、建议或者想法
2、Pull Request

1.Fork项目
2.修改自己仓库的项目代码
3.新建pull request
4.等待作者操作

使用Git

目的

  • 通过Git管理GitHub托管项目代码

安装

  • 基于win10系统
  • 在git官网上下载并安装git,设置全都选择默认即可。
  • 新建项目文件夹,并在新建文件夹中打开git命令行终端,如下图

    我在桌面上新建了一个git_learn文件夹,然后进入这个文件夹中右键打开git bash(如果鼠标右键未出现git bash,说明安装未成功),输入pwd显示当前工作路径。

Git初始化及仓库创建和操作

基本信息设置
  • 设置用户名和用户名邮箱
  • git默认的编辑器是vim,你也可以通过修改环境变量使用自己的编辑器,比如sublime或notepad++。
创建仓库
  • 仓库(Repository)也称为版本库,在本地电脑上我们可以简单理解为一个文件夹,然后用Git对这个文件夹中的文件进行跟踪,实现版本控制。
  • 初始化仓库,在前面我们建立了一个git_learn的文件夹,这个文件夹和普通的文件夹没有区别,git也不能对其中的文件进行跟踪管理,要想将这个文件夹初始化成一个git仓库,只需在此文件夹路径下运行git init指令即可,如下图
    初始化仓库后,会在当前工作目录下创建一个.git文件夹,这里面包含完成跟踪管理这个仓库所需要的各种文件,所以不要轻易改动这里面的文件。至此,一个git仓库就创建了。同时我们可以看到当前工作路径后面多了一个master,这是git自动在仓库中新建了名为master的分支。
工作区、暂存区和版本库(仓库)
  • 当我们向仓库中添加文件时,一般需要两个步骤(当然,事先我们需要在文件夹中编辑好需要添加的文件)。例如,在上面的git_learn文件夹中编写一个文件readme.txt,然后用git add readme.txt命令添加文件,再用git commit -m "commit description"命令进行提交。如下图
  • 现在说明工作区、暂存区和版本库的概念,在上面git_learn文件夹就是工作区,当运行git init之后创建的.git子文件夹就是版本库,而在.git文件夹中有一个index的文件,也称为stage(暂存区)。add命令将文件或者修改(可以有多个)送入暂存区,commit命令将暂存区所有内容提交到当前分支(在这里就是master分支)。详细说明可以参考这里 工作区、暂存区

远程仓库

  • 情况一般是这样,有一台电脑充当服务器的角色,里面有最初的仓库,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。这就是一个远程仓库,现阶段最熟悉的远程仓库就GitHub。
  • GitHub就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
ssh连接
  • 由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要设置:
  1. 创建SSH Key,在用户主目录下看看有没有.ssh文件夹,此文件夹下的id_rsa和id_rsa.pub分别是私钥和公钥。如果没有.ssh文件夹,在Git Bash终端创建,使用如下命令(前提已经安装了ssh):
$ ssh-keygen -t rsa -C "your_email@example.com"

然后一路回车,这里无需设置密码。

  1. 登录GitHub,打开Account setting的SSH Keys界面,点击Add SSH Key,填上任意Title,在Key文本框粘贴id_rsa.pub文件的内容。
  • GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
  • GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
  • 在GitHub上免费托管的Git仓库,任何人都可以看到,但只有你才能修改。

添加远程仓库

  1. 首先,在本地建立一个Git仓库,这里就用前面的git_learn仓库
  2. 登录GitHub,新建一个仓库,名字为git_learn,其他保持默认。这样,新建的GitHub仓库是空的,我们根据页面的提示把一个已有的本地仓库与之关联,然后把本地仓库的内容推送到GitHub仓库
  3. 在本地git_learn仓库下运行命令:
$ git remote add origin https://github.com/acphart/git_learn.git

这样我电脑上的git_learn仓库就与我的GitHub账户中的git_learn远程仓库相关联了。
origin是远程库的名字,也可以改成别的。

  1. 将本地仓库的所有内容推送到远程库中
$ git push -u origin master

第一次推送的时候加上-u参数,Git不但会将本地的master分支内容推送到远程仓库的master分支,还会把本地master分支与远程的master分支相关联。

  1. 现在在GitHub上的远程仓库就和本地仓库一样了,而且从现在起,只要本地做了提交,就可以通过命令:
$ git push origin master

把本地master分支最新的修改推送至GitHub。

总结工作中各个文件的更新状态

  1. 首先在本地工作区的文件是最新的,即git_learn文件夹下的文件
  2. 本地暂存区的内容是次新的,是由add命令添加的
  3. 本地版本库的内容再次,由commit命令提交的
  4. 远程仓库的内容最旧(对于作者个人而言,除去多人协作的情况),由push命令推送。
  • 前三部分的内容是在本地电脑上的,如果本地硬盘崩了,这些都没了。
  • 远程仓库的内容除非主动删除,否则不会丢失,只需联网即可拉取到本地。
  • 没有联网的时候可以在本地工作,不需要考虑远程库的存在,而联网时可以本地提交推送完成同步。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容

  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,517评论 0 13
  • “师傅,为什么他们说现在对佛祖许愿越来越不灵了?”小和尚抓了抓头皮看着盘膝而坐的老和尚不解的问道。 老和尚不再转手...
    猫痞君阅读 622评论 0 0
  • 在我们身边,往往有这么一群人。她们做事情十分踏实,能静下心来认认真真做一件事,她们在看起来真的是非常非常努力的人。...
    蒋小志jxz阅读 136评论 1 2
  • 《世说新语》中有一位璧人公子。钟灵毓秀,风姿绝世。在那个穷奢极欲,却又大家云集的魏晋南北朝一身才学鲜有人及...
    鸣絮阅读 370评论 0 1
  • 大家好,我是日记星球18号星宝宝雪云,正在参加第十期蜕变之旅,这是我的第230篇日志,成长,在每一天 这几天在看孙...
    陈雪云2021阅读 378评论 2 2