因为一些朋友们想用github做项目托管,所以我简单总结了一下github相关的基础知识点,在这里分享给各位。
本人原创手打+翻译,希望尊重版权转载注明出处,如有错误还望指出。
欢迎打赏点赞~
目录
初始化及配置git远程仓库(git init和git remote add)
1. 什么是github?
github是一个用于版本管理和团队协作的平台。它有几个很重要的基本概念:
-
仓库(Repositories)
仓库用来管理一个工程,假设现在我们有一个机器人工程,有控制机器人轮子的,有控制手臂的,有控制声音的代码...这些代码都有不同的功能,可能在一个项目中,每个人都要自己来完成自己负责的模块。很多项目管理者就会做一个U盘,在U盘里放很多个文件夹,让每个人把自己的代码拷到这个U盘的某个文件夹中,然后如果想让这个机器人动起来,就将这个U盘插到机器人上,然后启动各个文件夹中的内容。这个“U盘”,在github上就称为仓库。(Repositories)
-
分支(branches)
我们现在还是拿那个机器人和U盘举例子,现在大家每个人都把自己的模块改完了,但是插到机器人上,发现机器人一个轮子不转,负责机器人运动模块的员工张三一拍脑袋:“哎呀,轮子的程序我写错了...”。
写错了,那就修改吧,然后把项目主管把U盘拔下来给张三,因为U盘只有一个,所以其他人只能停下手里的活看着张三改。
项目主管为了解决这个问题,就买了很多U盘;并且给他们起了名字,第一块U盘叫master,第二块叫“Zhang san”。当出现问题时,主管将master这块U盘上的所有内容拷贝到Zhang san这块U盘上,跟张三说:“你拿这块盘改吧,这样不耽误其他人改别的。”
这块名为Zhang san的U盘,就叫做分支(Branch)。
-
commits(修改)
张三的性格比较内向,一直不吭声的踏实干活,很快就把问题解决了,但是张三改了他的部分后,李四负责的部分突然就出现了问题。李四找张三问是什么情况,张三说他记性不好,忘了他改了哪个部分了...
后来为了避免这种员工之间相互甩锅的情况,经理强制每一个员工在对代码做出修改后,必须写明改了哪里,同时盖上签名章才能拷贝到U盘里。这个修改--说明改动--写入U盘的过程,就叫做commit。
-
pull/push(本地/远程同步)
因为协同开发后程序会被传到云端git服务器,而一般的编程都是本地运行,所以我们使用push/pull将本地与云端进行同步,这个过程如下图:
-
merge(合并)
张三把他那块名为Zhang san的U盘插入机器人,机器人完美运行了;主管把张三U盘中的内容拷贝到第一块U盘(merge),并且把这块U盘贴上标签,将盘里的软件卖到世界各地。
简单来讲,一个github的工程是这样工作的:
2. github的基础操作(网页操作)
-
建立一个git仓库:
首先注册一个github账号并登陆,在登陆页面的右上角有你自己的头像,点击头像,进到Repositories;然后在repositories中点击“New”,新建一个仓库,并在仓库中配置仓库属性。
-
配置仓库:
3. github基础操作(本地指令操作)
-
git账户配置(git config)
git config用于配置git账户相关内容,git配置一共分为三个等级:
- 目录级别,配置方法为: git config --local user.name=[你的账户名]
- 全局变量级别: git config --global user.name/user.email=...
- 系统级别:git config --system ...
在这其中,配置的优先级为目录--->全局---->系统,也就是说,你在目录里配置了用户账户,那么全局和系统中配置的内容失效;如果同时配置了全局和系统,那么全局的账户有效,系统的无效。
使用git config --local -l 可以查看当前配置的账户信息。
-
初始化及配置git远程仓库(git init和git remote add)
我们首先在本地新建一个文件夹起一个跟工程相符的名字,例如:workspace;我们使用控制台cd进入这个文件夹,然后输入:
git init
这样,我们就初始化了一个git环境,同时,工程文件夹下会自动生成一个.git文件(隐藏文件),如下图:
在初始化后,对远程仓库进行配置,配置的过程如下:
- git remote add [本地仓库名] [远程仓库的github地址,一般项目管理员会给你]
- 使用git remote 以及git remote get-url [本地仓库名] 检查远程仓库是否配置好
-
拉取远程文件到本地(git pull)
我们初始化了git环境后,就需要将云端仓库里的软件架构首先拷贝到本地才能够进行开发(如果你是架构师则不需要执行这个步骤,而是在工作空间里设计和编写新的文件)。
将远程文件拷贝到本地的方法有很多,比较常见的:
git clone [git地址],这个方法是直接将远程软件架构拷贝到本地
git pull [git地址] [云端branch]:[本地branch],这个是以项目拉取得方式将文件“拉”到本地,方便以后修改完代码后“推”到云端git服务器。
注意:对于git pull,需要输入github的账号和密码。
-
新建和操作一个分支(git branch)
在协同开发中,新建一个分支很重要,要不然很容易造成你改你的,他改他的,最后改乱套的局面。为了对分支(branch)进行说明,我们先说明以下几个概念:
- 云服务器是不会自动给你设置分支的,除非你在网页上,或者通过本地push一个新的分支
- 我们在新建一个项目的时候,首先要从云服务器上pull一个分支下来(master是主分支),具体指令如下:
- 这样,我们就在本地新开了一个分支,如下图所示:
- 开发项目的过程中尽量不要在主分支上进行修改,当我们pull一个分支下来后,我们使用git checkout [你自己的分支]:
现在,我们就已经切换到了v5这个分支下;我们现在可以打开工程,使用IDE或者其他编辑器修改代码,例如我在工程中修改了readme.md文件:
修改后,我们使用git status看一下发生了什么:
可以看到git自动检测出我们修改了readme这个文件。下面,我们使用git add . 以及git commit来确认本次修改:
然后我们使用git push,把它推送到云端:
现在我们去云端网页看看,云端已经出现了v5这个branch
- 整体流程如下图:
在添加,修改或删除某个文件后,我们往往忘了改的是哪个,是否已经提交了等等,这个时候我们可以使用git status查看代码状态,例如我在我的工作空间中修改了一个文件(env_config),删除了一个文件(install.sh)。现在我们输入git status,显示如下:
然后我进行一次git add -A(重新载入文件,包括删除掉的文件),这时显示以下文件已经被修改进了HEAD里:
-
git常用指令和技巧
- git remote:远程仓库配置
- git pull 【仓库名】 【远程分支】:【本地分支】拉取远程branch到本地
- git branch XXX 新建一个本地分支
- git branch checkout XXX 进入某个分支
- git add .添加全部文件到缓冲区(意味着使用commit和push所有文件都将被同步)
- git add -A 添加全部文件到缓冲区(包括删除的文件)
- git commit -m '[说明]' 提交一次修改(本地有效)
- git push 【仓库名】 【远程分支】:【本地分支】 将本地分支推送到远程分支上
---
参考资料:
https://www.jianshu.com/p/1a35929311cb