github详解和上传流程

MAC上git的配置
学长的学习笔记
文章参考
在开发软件的过程中,我们需要不断的更新 形成一个个的版本 为了管理各个版本我们需要用到git

git和github的关系

首先,Git比GitHub出生的早。事件回到2005年,有个公司不允许linux系统继续免费使用它们的版本控制软件了,然后linux系统创始人Torvalds一气之下花了10天时间创造了Git(第一个版本),并且开源给所有人免费试用。3年后,Tom Preston使用Git作为版本控制软件创建了http://Github.com,一个专门托管代码并且可以实现版本控制的网站。Tom之所以把网站叫做Github,是因为其核心部分版本控制是用Git来处理的。

什么是github

GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。
分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。

什么是git

​git是一个分布式版本控制系统。换句话说,git就是一个文本历史版本管理工具。它可以管理文件的修改,并记录下来每次操作的修改部分。在Git管理下,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

git结构

  • Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
  • WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间,除了.git之外的都属于工作区。
  • .git:存放Git管理信息的目录,初始化仓库的时候自动创建。
  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
  • Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
  • Stash:是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
    在这里插入图片描述

简单的代码提交流程

这里不对每一条命令做详尽的解释,这些命令或类似命令贯穿我们顺利的一个完整提交,关于其他情况以及这些命令的详细解释留待后面叙述。
(1)git status //查看工作区代码相对于暂存区的差别 (看的是2stash的内容)
(2)git add . // 将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录 (保存到3stage中)
(3)git commit -m “commit-message” //将暂存区的代码提交到本地版本库(提交到4LocalRepo中)
(4)git push origin master // 将本地版本库推送到远程服务器,origin是远程主机,master表示是远程服务器上的master分支,分支名是可以修改的。(github:实现github的托管代码)

git的实现操作原理

Git 保存的不是文件的变化或者差异,而是一系列不同时刻的快照 。
在这里插入图片描述

项目创建和提交

1、在GitHub上新创建一个 repository或者Start a Project,如图:

屏幕快照 2018-01-06 下午3.21.40.png
2、填写项目信息,如下图所示:

在这里插入图片描述
我这里创建的叫test 这张图比较详细就用这张图了
点击Create repository,就创好一个工程了。
3、Clone工程到本地,首先复制http地址

在这里插入图片描述

打开终端,这里只是测试,我想把工程克隆在桌面,首先在终端中切换路径到桌面,输入以下命令:

cd /Users/puyuerong/Desktop/
然后克隆项目,终端输入

https://github.com/puyuerong/test.git    //是刚刚复制的http路径。

终端完整输出如下:

Cloning into 'test'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.

4、修改工作区文件(我往readme文件里写了一点东西)
5、提交修改,首先切换到LearnGit文件路径:

cd /Users/puyuerong/Desktop/test

然后输入:

//文件添加到仓库(.代表提交所有文件)
git add .
//把文件提交到仓库
git commit -m "First Commit"
//上传到github
git push

完整的项目提交流程图

第一句我的没在一起就没截到
先输入cd /Users/puyuerong/Desktop/ (puyuerong那块是你们的账户名)
其余的照着这个流程就应该没啥问题了
在这里插入图片描述
此时远程仓库(github)里的readme就是下图这样(写进去“1”)
在这里插入图片描述

版本回退

比如我现在README文件中写的是1,已经提交到远程仓库,现在我写了一会,写的都没用,就想改回之前的状态,但我并不记得之前写的是啥,就要用到回退

  • 修改工作区,且修改内容未添加到暂存区
    git checkout – README.md
    #如果之前提交过暂存区后,又修改了文件,会撤销到提交暂存区的状态。
    #如果暂存区为空,会撤销到版本库的状态。

  • 修改工作区,修改内容提交到了暂存区,没有提交到本地分支,想要退回为本地仓库的内容,上一个方法会退回成暂存区内容。

git reset --hard
  • 本地分支版本回退
git log #查看本地分支的版本日志
git reflog #查看本地分支的版本切换日志
git reset --hard HEAD^ #回退到上一版本
git reset --hard HEAD~n #回退到上n个版本
git reset --hard 1094a #跳转到指定版本

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,
当你回退版本的时候,Git仅仅是把HEAD修改了

ps:如果日志过长,显示不全会导致cmd出现问题,这时输入Q来退出

分支管理

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。

查看分支

git branch #命令会列出所有分支,当前分支前面会标一个*号。
git log --graph #可以看到分支合并图。
 git log --graph --pretty=oneline --abbrev-commit
#简化分支合并图

切换分支

git checkout dev

创建分支

 git branch xxx #新建分支
 git checkout -b dev #新建并传到分支

分支重命名

 nginx git branch –m oldname newname

删除分支

git branch -d dev
git branch -D dev #强制删除未合并的分支

合并分支

git merge dev #快速模式,不保留合并历史
git merge --no-ff dev #保留合并历史记录

当要把master合并到分支时,如果分支有修改内容,无法合并(此时,你分支上多余的修改内容应该也是不想要了才把master内容合并到分支),需要删除你分支上修改的内容

git clean -d -fx

git stash

主要用到gi t stash 和 git stash pop
git stash :用于把修改工作保留的暂存区,因为在git操作中,很多地方会报错误——会覆盖掉哪个文件,这个时候可以把修改的东西先保存到stash里
git stash pop :把存在stash里的东西取出来。取出来之后会删除在栈中的存贮。

还有一些操作如下所示:

  1. git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也是可以的,但查找时不方便识别。
  2. git stash list :查看stash了哪些存储
  3. git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
  4. git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
  5. git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
  6. git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
  7. git stash drop stash@{KaTeX parse error: Expected 'EOF', got '}' at position 4: num}̲ :丢弃stash@{num}存储,从列表中删除这个存储
  8. git stash clear :删除所有缓存的stash
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值