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命令推送。
  • 前三部分的内容是在本地电脑上的,如果本地硬盘崩了,这些都没了。
  • 远程仓库的内容除非主动删除,否则不会丢失,只需联网即可拉取到本地。
  • 没有联网的时候可以在本地工作,不需要考虑远程库的存在,而联网时可以本地提交推送完成同步。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

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

友情链接更多精彩内容