记录我开始学习 Git的路程
工作半年多了,总觉得没学到什么东西,于是乎找了个Git学习一下,感觉还蛮厉害的样子。为此记录下我的路程
2015,11,26 更新
前面的路都挺艰难的,在官网下载msysgit网速几乎为0(心情千万只草泥马奔腾),最后是在一个下载软件的网站上下载的。好不容易安装好了,由于英文不好,又被我卸载了。英语狗永远的伤。。。
后来在CSDN里下载了一个教程,廖雪峰老师(不认识这个人,暂且叫老师吧)的一个教程,挺好用的。然后开始了我的路程。。。
这是廖雪峰老师的主页: http://www.liaoxuefeng.com/
学习 git add / git commit -m "" 时,先手动建立了一个 readme.txt 时,过程如下
心得:原来是没修改,一直提交不上去。 居然可以跟Linux的终端一样使用,vi也是,哈哈
2015年11月27 更新
1,已经提交了一个readme.txt,假设我们进行了修改,就可以 用 git status 查看结果,这个命令让我们随时掌握仓库的当前状态。
2,git diff readme.txt 可以查看你修改了什么地方。
3,接着我们提交修改过的内容
git add readme.txt
git commit -m "1127 change"
3,小结: git status 可以随时掌握工作区的状态
如果 git status告诉你文件被修改过了,可以用 git diff 查看修改了哪些地方
2015年12月2日
1,当多次修改又多次提交时, git log 命令可以告诉我们历史记录。就像下面这样
2,若上面的版本信息过多,可以用 git log --pretty=oneline,可以把每个版本只用一行显示
git reset --hard HEAD^ 回退上一个版本,
git reset --hard HEAD^^ 回退上2个版本,
git reset --hard HEAD~100 回退上100个版本,
3,会退的时候也可以指定版本号 git reset --hard 98e560a...... 版本号不用写全,Git会自动去找。
4,当你回退了很多步,又记不住的时候,可以用 git reflog 记录输入的每一次命令
4,总结: git log 查看提交历史,可以看版本, git log --pretty=oneline,可以把每个版本只用一行显示
git reset --hard 版本号/HARD^ 用来回退
git reflog 查看以前输过的命令
2015-12-03
1,工作区:就是你在电脑里能看见的目录
2,版本库:工作区里有个隐藏的目录 ".git"。就是Git的版本库
存了很重要的东西(1)暂存区(stage) (2)Git为我们创建的第一个分支master (3)还有指向master的指针HEAD
3,暂存区:版本库里存了很多东西,最重要的就是成为stage的暂存区。 就像下面这个图一样
3,总结一下: 我们可以操作的区域成为工作区, 当有东西修改时,用git add可以提交到暂存区。
再用commit就可以把所有暂存区中的内容提交到分支(注意:是所有暂存区中的内容)。
当提交到分支,对工作区又没有修改是,工作区就是干净的(有内容),而暂存区就没有内容了。可以用 git status 查看工作区的状态。
2015-12-04
1,强调一下要区分 工作区 --add--> 暂存区 --commit--> 分支 的概念 。不要搞混了
2, git add 只是把工作区的内容提交到暂存区。 git commit -m "" 是 把所有暂存区中的内容提交到分支
3,git diff HEAD --readme.txt 可以查看工作区和版本库中最新的版本的区别。实例如下
小结: 每次修改,如果不add到暂存区,或没有commit到分支。那就都是没有提交
2,撤销修改: git checkout -- 文件名 :就是让对应的文件在工作区的修改全部撤销(回到最近一次git commit或 git add的状态)。就像这样
3,同样的道理,也可以撤销在暂存区的修改 git reset HEAD readme.txt 把暂存区的东西重新放回去了
git reset 命令可以用来回退版本,也可以把暂存区的修改放回工作区。 当我们用HEAD时,表示最新的版本。
4,小结:场景1:若只是修改了工作区的内容, git checkout -- 文件名 ,可以直接丢弃工作区的修改。
场景2:若已经提交到了暂存区,用git reset HEAD 文件名,直接回到场景1.
场景3:若已经提交到了分支,参看上面的版本回退。 (git reset --hard 版本号/HARD^ 用来回退)
2015-12-07
1,删除文件: 假设你创建了一个文件rmtest.txt,并且添加进来版本库中,在工作区执行 rm rmtest.txt 。这个时候版本库中的文件还存在。
若想版本库中文件也删除,则执行git rm rmtest.txt
若是刚刚删错了,则git chexkout -- rmtest.txt 则是勇版本库中的文件替换工作区中的文件。(删除和修改都可以进行还原)
2,远程仓库:Git的杀手级工具
2.1 Git是分布式版本控制系统,同一个Git库,可以分布到不同的机器中。
2.2 实际情况是,一台电脑做服务器,24小时开机,其他人从这个服务器仓库克隆到自己的电脑中,并且各自把各自的提交推送到服务器仓库里。
2.3 可以自己搭建Git服务器(不推荐,因为我不会)。
在GitHub网站注册一个账号,就可以免费获得一个Git远程仓库了。
2.4 步骤:
(1)自己申请一个GitHub账号,
(2)然后在Git Bash中输入: ssh-keygen -t rsa -C "yourmain@example.com",然后一路回车
(3)若一切顺利,会在用户主目录下生成一个 .ssh目录。这个目录有两个文件,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心告诉别人。就像这样
(4)登录GitHub,打开"Account setings", “SSH Keys”页面。点击"Add SSH Key"。填上任意的Title,在key文本框粘贴id_rsa.pub文件的内容。这样就ok了。
2.5为什么需要SSH Key:因为GitHub需要识别你推送的提交确实是自己推送的,不是别人冒充的。(大概就是,想要推送东西到库里,一定要是信任过的电脑)
2.6 GitHub允许添加多个Key,这样就可以多台电脑都推送东西到库里了。
2.7 友情提示:GitHub免费托管的东西,任何人都可以看(自己才能改),所以不要放敏感信息。
记录我开始学习 Git的路程的更多相关文章
- 学习 git基础命令
缘起 年后到了新公司,由于个人意愿到了一个海外的项目组,除了自己从Java技术栈转了C#技术栈外,很多技术都是第一次使用,学习压力不小啊. 自己也就先从常用的技术开始学起,比如C#,AngularJS ...
- [转]深入理解学习GIT工作流
深入理解学习Git工作流 字数13437 阅读2761 评论3 喜欢70 个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心 ...
- 菜鸟学习 git
到新公司学习和使用 git 有一段时间了.不得不说 git 真的很牛逼,当然,git 的牛逼是建立在 Linux 之父的牛逼的基础上的. 首先跪着推荐 git 学习网站:http://www.liao ...
- 深入理解学习Git工作流(转)
个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解,于是我将这部分资料进行整理放到了github上,欢迎st ...
- [少数派]如何学习Git
用玩游戏的方式学习 Git 目录 为什么要学习 Git 怎么学习 Git Learn Git Branching 其他学习资源 用游戏的方式来学习,是一种有趣而高效的方式. 从刚接触电脑时的打字练习软 ...
- 深入理解学习Git工作流(git-workflow-tutorial)
转载:https://segmentfault.com/a/1190000002918123#articleHeader11 人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协 ...
- git学习——Git 基础要点【转】
转自:http://blog.csdn.net/zeroboundary/article/details/10549555 简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是 ...
- 深入学习 Git 工作流
原文 https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md 个人在学习git工作流的过程中,从原有的 SVN ...
- 学习 Git 玩转 GitHub
原文地址:学习 Git 玩转 GitHub 博客地址:http://www.extlight.com 一.基本了解 1.1 什么是版本控制系统 版本控制系统是一种记录一个或若干个文件内容变化,以便将来 ...
随机推荐
- 烂泥:kvm安装windows系统蓝屏
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近一直在学习有关KVM的知识,实验一直是在虚拟机VM中进行的.今天刚好公司有一台空闲的服务器,直接拿来安装centos.kvm等等,然后相关的配置. ...
- 03_汇编语言(n个数找最大值)
程序要求: 先输入一个数n(0<n<=100),再输入n个无符号数K(0<=K<=65535),找出这n个数的最大值并输出 测试实例保证输入每个数之后,都会以回车结束 代码: ...
- 04_最长上升子序列问题(LIS)
来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题6: 问题描述:给定n个整数a1,a2,...,an,按从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列可以理解为:删除 ...
- java poi read write xlsx
package myjava; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...
- Android+Sqlite 实现古诗阅读应用(一)
不说网络app,很多本地的app都有一些随机的内容推送,比如随机推送一些小知识,古诗,名言名画什么的,界面制作的好看一点就能看起来特别的文艺范, 最近就是看了这样的一些应用,就想自己实现一下,这种方法 ...
- testng环境设置
1.在eclipse中安装testng插件,地址:http://beust.com/eclipse 2.设置testng环境变量 testng_home D:\Program Files\eclips ...
- 【Ext.Net学习笔记】02:Ext.Net用法概览、Ext.Net MessageBus用法、Ext.Net布局
Ext.Net用法概览 Ext.Net还是很强大,如果运用熟练可以极大的提高编程效率.如果你也要学习Ext.Net,原文博主推荐书籍:<Ext.Net Web 应用程序开发教程>,是英文的 ...
- linux下删除文件名乱码文件
linux下通过rm命令来删除文件,但是如果要删除文件名乱码的文件,就不能直接使用rm命令了,因为压根就无法输出文件名来.不过借助find命令可以实现对其删除.在linux下对于每个文件都一个对应的不 ...
- mongoVUE1.5.3 破解方法
MongoVUE是个免费软件,但超过15天后功能受限.可以通过删除以下注册表项来解除限制: [HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-82 ...
- Android Parcelable和Serializable的区别,androidparcelable
本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存 ...