Git教程笔记+Atom推荐(一·入门)

git——分布式版本控制软件
其实这个只是用来了解一下git,其实我个人比较偏向使用图形化工具,比较清晰直观,当然在写代码的时候用终端git addgit commit -m "description"比较快,主要记住这个就可以了。
注意:<>内为可替换内容,敲命令行时不需要敲<>

主要内容:创建git repository,将文件添加到版本库,git的状态和文件的变化,版本&回退。
命令概览

$ git init #使当前目录变成可以管理的版本仓库(git repository)
$ git add filename #将文件添加到版本仓库
$ git commit -m "description" #把文件提交到仓库
$ git status #查看repository的状态
$ git diff #查看修改了哪些内容
$ git log #查看提交日志
$ git log --pretty=oneline #简洁地显示提交日志
$ git reset --hard HEAD~<3> #回退到某个版本,比如这里回退到第前3个版本
$ git reset --hard <commit ID> #回退到特定ID的版本
$ git reflog #记录了每个命令,可以用来查看每个操作的编号


创建git repository

  1. 找合适的地方,创建一个空目录,比如在/Users/Vector/github路径下,创建并进入,一般不要用中文的目录名,容易出现问题
$ mkdir learnGit
$ cd learnGit
$ pwd
/Users/Vector/github/learnGit
  1. git init 命令将这个目录变成可以管理的版本仓库(git repository)
VectorLu:learnGit Vector$ git init
Initialized empty Git repository in /Users/Vector/github/learnGit/.git/

可以发现当前目录下多了一个.git目录,这个目录就是git用来跟踪管理版本仓库的,不要去手动修改。ls命令不会显示带.的目录,用ls -a就可以显示了

VectorLu:learnGit Vector$ ls
VectorLu:learnGit Vector$ ls -a
.   ..  .git

将文件添加到版本库

注意
首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件。
因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。
使用Windows的童鞋要特别注意:
千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。

个人很推荐github官方出品的atom文本编辑器,简直好看漂亮好用,当然老牌的sublime也不错,但是要付费(虽然无限期试用),但是atom是开源免费的,而且跟git配合天衣无缝。

用Atom写文本文件

如图中所示,刚刚创建未提交的文件名是绿色的,已经提交过的文件但是经过修改后,没有提交修改后的文件名是黄色的“。要注意Atom在编辑文件时,点文件编辑窗口的关闭键,如果当前的修改没有保存,会弹出提示,但是如果点的是Atom的关闭键。。。它就直接退出了。。。不会提示没有保存,这是个bug,改天看它更新版本的时候会不会修正把,或者什么时候去官网说一下。
一定要放到learngit目录下(子目录也行),因为这是一个Git仓库。
把一个文件放到Git仓库只需要两步:

  1. 把文件添加到仓库,没有任何消息就是表示添加成功
$ git add README.md
  1. 把文件提交到仓库
VectorLu:learnGit Vector$ git commit -m "wrote a readme file"
[master (root-commit) 3be5479] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 README.md

-m之后是本次提交的说明,最好能够简要概括这次提交了什么内容,或者做了什么修改。为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt 
$ git add file3.txt
$ git commit -m "add 3 files."

git的状态和文件的变化

$ git status查看repository的状态,$ git diff查看修改了哪些内容


版本&回退

$ git log由近到远显示提交日志,可以加上参数--pretty=oneline,使显示的信息更加简洁

VectorLu:learnGit Vector$ git log --pretty=oneline
8512e8bcdda603a6184128be151174f962221dd2 append GPL
f53fa0eae5a3ad9689473f01ef9b38cab366cfd5 distributed
3be547948169bfa0fcff7d4755949859628f3312 wrote a readme file

桌面版的github上显示详细的信息

HEAD表示当前版本,HEAD~100第前100个版本git reset --hard HEAD回退到上一个版本。

VectorLu:SE Vector$ git reset --hard HEAD~3
HEAD is now at 547e18f 迭代计算梯度

回退到以前的版本A之后,用git log命令就找不到A之后的版本了,如果想回到之后的版本,需要git reset --hard commitID,但是如果不记得commitID(谁没事会记这个),可以用$ git reflog,它记录了每一个命令

VectorLu:SE Vector$ git reflog
547e18f HEAD@{0}: reset: moving to HEAD~3
da1401a HEAD@{1}: commit: 修改了精度,使之更加严谨
697c680 HEAD@{2}: commit: 精度有问题,重新编写函数测算是否重合
5afa969 HEAD@{3}: commit: 测算是否有圆重合
547e18f HEAD@{4}: commit: 迭代计算梯度
9c80a1b HEAD@{5}: commit (initial): start code the function

VectorLu:SE Vector$ git reset --hard 547e18f
HEAD is now at 547e18f 迭代计算梯度
  1. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
  1. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  2. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

参考来源:廖雪峰的git教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,631评论 9 163
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,676评论 1 17
  • 最近在看android模拟事件点击,找了adb input命令,具体参考adb shell input的用法但是发...
    2远阅读 8,312评论 1 0
  • 艺术是心灵的修行,没有语言,没有说道,凡说必错。一切只能用心去感应,去沉醉。 艺术家走的越远,话语应该越少。你只需...
    心覺阅读 548评论 2 0
  • 校园里的银杏叶,落了满地。 香山的红叶,依旧没有红。 逛了半座山,才发现山脚下的那棵是最红、最鲜艳的。 偶然遇见的...
    一路向北__阅读 111评论 0 0