2019.2.27理解Git和GitHub的使用原理,将一个PHP项目和Vue项目上传和同步到GitHub上

1、Git基础

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。而且集中式版本控制系统是必须联网才能工作。
Git是分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。

Git是分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。

  • Git不仅仅是一个版本管理器,也是一个内容管理系统(CMS)

  • Git是分布式,而SVN不是

  • 仓库(repository):可以使用一个已经存在的目录作为Git仓库或创建一个空目录

  • 在这里插入图片描述

  • 集中化的版本控制系统:CVS、SVN

  • 分布式版本控制系统:Git、bazaar

  • git commit 时,暂存区(index)的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

  • git branch (新建分支)

  • git checkout 或者 "git checkout – " 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

  • git merge:是用于从指定的commit(s)合并到当前分支,用来合并两个分支;

  • git rebase 回溯历史版本

  • git branch命令可以将分支名列表显示,同时可以确认当前所在 分支。

  • git checkout -b——创建、切换分支 如果想以当前的master分支为基础创建新的分支,我们需要用到 git checkout -b命令。

git :分为线下本地仓库(暂且称为本地仓库吧)还有GitHub的远程仓库
线下的仓库就是代码目录所在的地方,可以在这里pull上传修改的给GitHub的远程仓库,也可以在远程push将远程仓库的代码给拉下来
(这里的pull和push概念不是很清楚:例如pull代码上去是提交那一部分的代码??是将本地的代码版本直接覆盖到远程仓库吗?还会只改动已经修改的部分??如果push代码下来是一个怎么的过程?原来本地目录存在的一个文件,现在又要从GitHub上面push下来,这两个文件之间是什么关系),还有一个clone代码是什么意思?(简答的全部复制吗?)
还有代码的分支,还有三个代码区是各自存在是怎么交互的;三个区:工作区(工作目录)、缓存区(index区)、head区(???什么意思)

将本地仓库与远程GitHub仓库关联并上传项目代码到远程仓库

一、关联远程仓库
1、在将要关联的项目的目录中,打开Git Bash Here
2、建立本地仓库(初始化本地仓库) git init (这是会生成一个.git的镜像目录)
3、首先在本地创建ssh key(这个key将可以与远程GitHub匹配仓库)
输入命令:ssh-keygen -t rsa -C "your_email@youremail.com"
(ps:your_email@youremail.com 是自己GitHub上的设定的邮箱)
4、这是没什么意外就会出现成功信息,在~/目录下就会出现一个.ssh目录;在.ssh下会有一个id_rsa.pub文件,里面的内容就是ssh key (复制这个key) 关于~/目录所在的位置应该是看本项目的相对位置,可以参考:
在这里插入图片描述
5、将刚刚复制的ssh key 复制到自己的GitHub上,添加ssh key(title随便填在这里插入图片描述);

6、至此连接成功(其实不连接也可以,不连接的话直接进行下面得上传项目也可以上传的,只不过是在实际的操作中,本地项目和远程项目经常有更新操作,不连接的话每次都需要输入账号密码验证)

二、上传本地仓库的文件到远程仓库(也就是GitHub啦)

1、输入命令:git add . 将项目的所有文件(. 符号就是匹配所有羡慕文件)add添加到.git镜像区的index中(其实index就是一个索引表,这个动作只是添加文件到仓库的index缓存区,并不是真正添加): git add .

2、输入命令:git commit -m "this is first commit "将项目提交到仓库(这是真正提交,存在.git的镜像仓库中),"this is first commit"是你这次提交的简要信息吗,方便以后查看这次提交的时候识别;

3、在GitHub上创建一个远程仓库(就是那远程代码放置的地方)
点击new repository 建立仓库,自定义仓库名字,成功后会生成一个https的连接

4、输入命令:git remote add origin https://… 在这里的https://…就是你在GitHub新建的远程仓库的地址 ,点击回车,就会关联到远程数据库!!(这只是关联,还不是上传)

5、输入命令:git push -u origin master 将本地仓库代码上传到远程GitHub仓库!!至此成功!!!

6、git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

远程仓库和本地仓库版本之间怎么控制???

团队合作之间的Git与GitHub是工作流程有哪些?
1、创建本地分支
2、在本地分支上编辑修改,然后提交
3、推送提交(Push)到 Github
4、创建发布请求(Pull Request),说明该分支包含了哪些更改
5、合并(Merge)分支内容到主分支
6、将主分支上的最新提交拉取(pull)到本地
7、重复上述步骤

PS:涉及的术语
Version Control(版本控制): 任何一个能够让你了解文件的历史,以及该文件的发展进程的系统。
Git:一个版本控制程序,通过对变更进行注释,以创建一个易于遍历的系统历史。
Commit(提交):在指定时间点对系统差异进行的注释 “快照”。
Local(本地):指任意时刻工作时正在使用的电脑。
Remote(远程): 指某个联网的位置。
Repository (仓库,简称 repo):配置了Git超级权限的特定文件夹,包含了你的项目或系统相关的所有文件。
Github:获取本地提交历史记录,并进行远程存储,以便你可以从任何计算机访问这些记录。
Pushing(推送):取得本地Git提交(以及相关的所有工作),然后将其上传到在线Github。
Pulling(拉取):从在线的Github上获取最新的提交记录,然后合并到本地电脑上。
Master (branch):主分支,提交历史 “树”的 “树干”,包含所有已审核的内容/代码。
Feature branch(功能分支/特性分支):一个基于主分支的独立的位置,在再次并入到主分支之前,你可以在这里安全地写工作中的新任务。
Pull Request(发布请求):一个 Github 工具,允许用户轻松地查看某功能分支的更改 (the difference或 “diff”),同时允许用户在该分支合并到主分支之前对其进行讨论和调整。
Merging(合并):该操作指获取功能分支的提交,加入到主分支提交历史的顶部。
Checking out(切换):该操作指从一个分支切换到另一个分支。

创建一个分支(就是另外一个copy镜像),删除一个分支、合并一个分支

1、创建分支(并checkout到这个新建分支上):git checkout -b branchname
2、像正常一样编辑本地文件内容(在本地同一个工作目录)
3、git add . (增加编辑内容) git commit -m “message” (提交内容)
4、git push origin branchname(将自己的分支提交到远程GitHub仓库)
5、删除刚刚创建的分支(从本地仓库删除和GitHub的远程仓库删除):
git branch -D branchname (删除本地branchname 分支)
git push -d origin branchname (将删除结果更新到远程仓库,删除远程仓库分支)
6、git merge branchname (将写好没有问题的分支合并到主分支上)

日常操作:
上传本地仓库内容至远程
git push -u origin master
第一次推送master分支时,加上了-u参数,在以后的推送或者拉取时就可以简化命令。

拉取远程仓库中别人的修改
git pull origin master 【PS:可以修改分支名称(将master改为其他分支名)】

关于撤销与回退:
1、如果你一直在键盘输入,没有提交的话,可以直接撤销掉你刚刚正在输入而没有提交的内容:
git checkout – .

2、如果你已经提交了(git add 、git commit)内容到本地仓库,可以使用:
git log 查看你提交的版本(你就你前几次提交的全部镜像,所以每次提交都要输入你特定的提示信息,以便回退)
使用:git reset --hard (加所在版本commit后面的hash值)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值