美文网首页git学习Git使用开发
Git教程笔记+Atom推荐(一·入门)

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

作者: 洛朗不展傅立叶 | 来源:发表于2016-06-02 00:01 被阅读9663次

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教程

相关文章

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

    git——分布式版本控制软件其实这个只是用来了解一下git,其实我个人比较偏向使用图形化工具,比较清晰直观,当然在...

  • GIT 笔记一:基本操作

    GIT 笔记一:基本操作 SVN 笔记一:入门 Git已经非常流行,网络上的教程很多。这里做个归纳吧。命令行操作很...

  • git的学习笔记-入门

    PS:小白的入门笔记,希望能有用,主要参考廖君Git教程 操作环境说明: github仓库 https://git...

  • Git完全入门指南

    Git完全入门指南 教程参考 廖雪峰Git教程 三十分钟入门Git 概述 Git是项目版本管控的工具,可以用来追踪...

  • Git版本控制

    《GitHub入门与实践》笔记推荐Git练习网站:LearnGitBranching 初次使用时,使用下列命令设置...

  • 2020-08-28全网最简单的Git入门

    一个想学Git但是苦于没有简易的教程,最近在看B站的一个Git教程,很不错,我自己也做个笔记帮助需要快速入门的网友...

  • git 入门

    git 入门学习笔记----3个入门命令:git init、git add、git commit -v 学习场景(...

  • Git教程笔记

    Git教程笔记 Git教程-菜鸟教程 1. Git 安装配置 1.1 Linux | Windows | Mac...

  • git技术,GitHub、GitLab

    git学习 Git教程(小白快速入门版) Git教程(简化版) git详细学习 Gitlab的管理使用手册git初...

  • Git学习笔记

    写在前面: 建议大家可以先去看详细的入门教程,然后通过该笔记来复习整理。 初始化git仓库:git init 添加...

网友评论

  • huduku:引用 你的原话:
    --------------------------------------------------------------------------------------------------------------------
    如图中所示,刚刚创建未提交的文件名是绿色的,已经提交过的文件但是经过修改后,没有提交修改后的文件名是黄色的“。要注意Atom在编辑文件时,点文件编辑窗口的关闭键,如果当前的修改没有保存,会弹出提示,但是如果点的是Atom的关闭键。。。它就直接退出了。。。不会提示没有保存,这是个bug,改天看它更新版本的时候会不会修正把,或者什么时候去官网说一下。
    --------------------------------------------------------------------------------------------------------------------
    这其实不是bug。
    因为关闭单独的标签页,说明用户知道,用户自己在干什么,所以提示保存。但是直接关闭atom,会启用“热保存”,把已经编辑,但是没有保存的内容“热保存”下来。因为atom的关闭有可能不是我们手动关闭,而是系统宕机,或者在没有关闭atom的情况下直接关机导致atom退出,这些情况如果不热保存,那么我们编辑但是未保存的内容就丢失了。
    热保存是指:保留编辑器tab页的保存状态,如果保存状态是编辑未保存,则还要把未保存的内容保留下来,下次打开atom的时候,就能直接在原有编辑的基础上工作,如果单独关闭标签页,则会提示保存。
    这个功能是非常好的设计。
    huduku:@洛朗不展傅立叶 这个是各种编辑器都支持的功能,用的多了就发现了。
    洛朗不展傅立叶:好久没有用简书了,现在才看到。试了一下,发现真的是这样。非常感谢你的纠正,请问这个方面的知识是在哪里学到的 Orz 希望能深入学习一下相关知识。

本文标题:Git教程笔记+Atom推荐(一·入门)

本文链接:https://www.haomeiwen.com/subject/agghdttx.html