Git学习最终篇(第三天)

介绍

  • 本篇博客首先回顾了昨天的git分支指令,
  • 然后今天学习了Git的存储
  • 以及操作失误后的回退撤销和数据恢复

1. 分支回顾

回顾分支操作指令:

作用效果指令
创建分支git branch 分支名
切换分支git checkout 分支名
创建&切换分支git checkout -b 分支名
普通删除分支git branch -d 分支名
强制删除分支git branch -D 分支名
版本穿梭(直接将分支名放在指定hash版本位置)git branch 分支名 commitHash
合并分支git merge 分支名

其中合并分支分为两种情况:

1. 快进合并,两个分支命令在一条线上,快进合并不会产生冲突
2. 典型合并,有机会产生冲突
3. 解决冲突   打开冲突文件   进行修改   add   commit

分支本质:Git 的分支,其实本质上仅仅是指向提交对象的可变指针

2. Git存储

为什么要用到存储?(存储的介绍)

有时,当你在项目的一部分上已经工作一段时间后,

所有东西都进入了**混乱的状态**,

而这时你想要切换到另一个分支做一点别的事情。 

问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。

针对这个问题的答案是

我们将做一半的工作进行**存储!**

3. Git存储指令

序号指令效果
1git stash存储命令
2**git stash list **查看存储列表
3git stash pop来应用储藏然后立即从栈上扔掉它
4git stash apply stash@{0}如果不指定一个储藏,Git使用的是最近的储藏
5git stash drop加上将要移除的储藏的名字来移除它
git stash**  **命令会**将未完成的修改保存到一个栈上,而你

可以在任何时候重新应用这些改动(**git stash apply**)



**git stash pop** 相当于直接使用了

**git stash apply stash@{0}**和**git stash drop**两个指令

4. 存储存在的意义

  • 当自己的版本分支项还没有完善,要跳到其他新分支去做紧急任务

  • 我们不想提交一个半成品上去,我们就绕过提交,创建一个抽象的栈

  • 将我们这个完善到一半的分支放入,这就是存储的作用.

5. Git回退撤销操作

当我们在Git中操作失误的时候,撤销操作就派上了大用处.

失误汇总:

1. 工作目录失误:vim 文件名 失误了

		*你可以ctrl + Z(滑稽保命)*

		问: 如何撤回自己在工作目录中的修改?

		红色未暂存撤回修改

		git checkout --filename(文件名)

2. 暂存区失误:git add ./失误

		问: 如何撤回自己的暂存

		git reset HEAD filename(文件名)

3. 版本库失误:(git commit -m '注释'    注释写错了)

		问: 如何撤回自己的提交

		git commit --amend
指令失误区
git checkout --filename(文件名)撤回自己在工作目录中的修改
git reset HEAD filename(文件名)撤回自己的暂存
git commit --amend撤回自己的提交

6. 数据恢复

在你使用 Git 的时候,你可能会意外丢失一次提交。 
通常这是因为你强制删除了正在工作的分支,
但是最后却发现你还需要这个分支
或者你硬重置了一个分支
放弃了你想要的提交。 
如果这些事情已经发生,该如何找回你的提交呢?

这时候,我们就用上了我们的数据恢复.

实例

假设你已经提交了五次

$ git log --pretty=oneline

现在,我们将 master 分支硬重置到第三次提交

现在顶部的两个提交已经丢失了 - 没有分支指向这些提交。

你需要找出最后一次提交的 SHA-1 然后增加一个指向它的分支。

窍门就是找到最后一次的提交的 SHA-1 - 但是估计你记不起来了,对吗?

最方便,也是最常用的方法,是使用一个名叫 git reflog 的工具。

当你正在工作时,Git 会默默地记录每一次你改变 HEAD 时它的值.

每一次你提交或改变分支,引用日志都会被更新

$ git reflog

1a410ef HEAD@{0}: reset: moving to 1a410ef

ab1afef HEAD@{1}: commit: modified repo.rb a bit

484a592 HEAD@{2}: commit: added repo.rb

git reflog 并不能显示足够多的信息。

为了使显示的信息更加有用

我们可以执行 git log -g,这个命令会以标准日志的格式输出引用日志

指令作用
git log输出日志
git log –oneline输出整洁的日志
git reflog记录每次HEAD的改变
git log -g输出标准日志的格式

7. 什么是 GitHub?

GitHub 是一个用于版本控制和协作的代码托管平台。它让您和其他人可以从任何地方一起处理项目。它是一个远程仓库。

什么是远程仓库?

为了能在任意 Git 项目上团队协作,你需要知道什么是远程仓库和如何管理自己的远程仓库。 

远程仓库是指托管网络中你项目的版本库。

你可以有好几个远程仓库,

通常有些仓库对你只读,有些则可以读写。 

与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。 管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库.

管理不同的远程分支并定义它们是否被跟踪等等。

8. 远程协作基本流程

GitHub 是最大的 Git 版本库托管商,是成千上万的开发者和项目能够合作进行的中
心。
大部分 Git 版本库都托管在 GitHub,很多开源项目使用 GitHub 实现 Git 托管、问题追踪、代码审查以及其它事情。
所以尽管这不是 Git 开源项目的直接部分,但
如果想要专业地使用 Git,你将不可避免地与 GitHub 打交道。
地址:github官方网站https://github.com 注册成功之后邮箱内有份邮件一定要点!!!

  1. 项目经理创建远程仓库
    在这里插入图片描述

通过点击面板右侧的“New repository”按钮,或者顶部工具条你用户名旁边
的 + 按钮。点击后会出现“new repository” 表单:

在这里插入图片描述

  • 点击 “Create Repository” 按钮以后
  • 你就在 GitHub 上拥有了一个以 /<project_name> 命名的新仓库了。
  • 现在你的项目就托管在 GitHub 上了,你可以把 URL 给任何你想分享的人 。
  • GitHub 上 的 项 目 可 通 过 HTTP 或 SSH 访 问 , 格 式 是 :
    HTTP : https://github.com//<project_name>
    SSH : git@github.com:/<project_name> 。
  • Git 可以通过以上两种 URL 进行抓取和推送,
  • 用户的访问权限又因连接时使用的证书不同而异。
  1. 项目经理为远程仓库配置别名&用户信息
指令作用
git remote add 添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的简写
git remote –v显示远程仓库使用的 Git 别名与其对应的 URL
git remote show [remote-name]查看某一个远程仓库的更多信息
git remote rename pb paul重命名
git remote rm [remote-name]如果因为一些原因想要移除一个远程仓库 - 你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了
  1. 项目经理推送本地项目到远程仓库
    初始化一个本地仓库然后:
git push [remote-name] [branch-name]将本地项目的 master 分支推送到 origin (别名)服务器
  1. 成员克隆远程仓库到本地
git clone url (克隆时不需要 git init)克隆远程仓库到本地

默认克隆时为远程仓库起的别名为 origin

  1. 项目经理邀请成员加入团队
  2. 成员推送提交到远程仓库
git push [remote-name] [branch-name]推送提交到远程仓库
只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,
这条命令才能生效。 
当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,
你的推送就会毫无疑问地被拒绝。 
你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送
  1. 项目经理更新成员提交的内容
git fetch [remote-name]更新成员提交的内容

9. 注意

分支切换的注意事项:
每次在Git分支切换时,一定要保持当前分支的干净,一定是都已经提交的,
如果当前的分支写到一半那么可以先将它存储起来,
等到紧急分支完成后,再重新回来获取应用来操作此分支.
如果不将分支处理干净,就容易造成代码污染.后果很严重!!!

10. 总结

  • 我们的Git学习,到这里就结束了!
  • 今天我们学习了Git的存储,
  • 以及存储的指令和意义
  • 还有Git的回退撤销操作和数据恢复
  • 认识了GitHub远程仓库
  • 并且我们掌握了远程写作的基本流程和它的一些指令

Git在今天终于完结!!!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值