GIT&github入门

版本控制的原理: 根据md5进行文件的校验【MD5的特性就是每次的输入一致则输出也一致】,对于每次的修改进行一次快照

版本控制的2个功能: 版本管理  +   协作开发

什么是GIT

GIT因为最初是从Linux起家的,非常依赖文件系统的一些特性,这些在 Linux 下表现的很好,而 Windows 下特别糟糕Git 中文教程。
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理.
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 最近就迁移到 Git 上来了,很多 Freedesktop 的项目也迁移到了 Git 上。【Linus在1991年创建了开源的Linux】

GitHub:

· 一个拥有143万开发者的社区。其中不乏Linux发明者Torvalds这样的顶级黑客,以及Rails创始人DHH这样的年轻极客。

· 这个星球上最流行的开源托管服务。目前已托管431万git项目,不仅越来越多知名开源项目迁入GitHub,比如Ruby on Rails、jQuery、Ruby、Erlang/OTP;近三年流行的开源库往往在GitHub首发,例如:BootStrapNode.jsCoffeScript等。

git安装

安装Git

最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。

下载地址;https://git-scm.com/download/win

安装的时候使用默认的配置即可,next一路到底即可

安装完成后启动git

【拓展工具下载】

Url: https://www.baidu.com/link?url=-8AHsP5NG3nH4Zozbu4xG26f2n1PLBYrzAHlWaPKnU3mj_IEbuRpM5V4N0bHIfVjqLoS2bJKGAQzPa4aettYXl4gylTFEvGX-4uNiiAqAAS&wd=&eqid=c4ba8e4b00042077000000035ae3233e

版本库创建

什么是版本库呢?

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:

Administrator@AFOEC-704092020 MINGW64 ~
$ cd F:/ Administrator@AFOEC-704092020 MINGW64 /f
$ cd GIT_Repository/ Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository
$ ls -a
./ ../ Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository
$ git init
Initialized empty Git repository in F:/GIT_Repository/.git/ Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ ls -a
./ ../ .git/ Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ ls -a .git/
./ ../ config description HEAD hooks/ info/ objects/ refs/ 瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

把文件添加到版本库

明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

【Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的】

真正使用版本控制系统,就要以纯文本方式编写文件

因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

GIT的工作分为: 工作区  -->  暂存区  --> 版本库

工作区: 编辑文件

暂存区: git add 文件名  添加文件到git的缓存区

版本去: git commit -m “commit” 提交内容到库中

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ vim helloworld.txt
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ cat helloworld.txt
hello world 2020
好好学习,天天向上

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git add helloworld.txt
warning: LF will be replaced by CRLF in helloworld.txt.
The file will have its original line endings in your working directory.
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git commit -m " first commit file to github "
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'Administrator@AFOEC-704092020.(none)')

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git config --global user.email "ftl@baidu.com"
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git config --global user.name "ftl"

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git commit -m " first commit file to github "
[master (root-commit) 71474ae] first commit file to github
1 file changed, 3 insertions(+)
create mode 100644 helloworld.txt

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ echo "fftl" >> helloworld.txt
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ cat helloworld.txt
hello world 2020
好好学习,天天向上 fftl
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) modified: helloworld.txt no changes added to commit (use "git add" and/or "git commit -a")
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git add helloworld.txt
warning: LF will be replaced by CRLF in helloworld.txt.
The file will have its original line endings in your working directory.
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) modified: helloworld.txt

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git commit -m " second commit file to github "
[master f227b64] second commit file to github
1 file changed, 1 insertion(+) Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git status
On branch master
nothing to commit, working tree clean

在没提交之前可以查看修改的变化

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ cat helloworld.txt
hello world 2020
好好学习,天天向上 fftl
HHHHHHHHHHHHHHHHHHHHHHHH
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git diff helloworld.txt
warning: LF will be replaced by CRLF in helloworld.txt.
The file will have its original line endings in your working directory.
diff --git a/helloworld.txt b/helloworld.txt
index 44ed930..0dea578 100644
--- a/helloworld.txt
+++ b/helloworld.txt
@@ -2,3 +2,4 @@ hello world 2020
好好学习,天天向上 fftl
+HHHHHHHHHHHHHHHHHHHHHHHH

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git add *
warning: LF will be replaced by CRLF in helloworld.txt.
The file will have its original line endings in your working directory.
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git commit -m "all commit"
[master ec8b78f] all commit
1 file changed, 1 insertion(+)

文件回滚
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git log
commit ec8b78f7ff0e97d57c7217f29665aba2a6eb0d4b (HEAD -> master)
Author: ftl <ftl@baidu.com>
Date: Fri Apr 27 23:14:12 2018 +0800 all commit
commit f227b64508a389b41797141b581aca47b1fb8fd0
Author: ftl <ftl@baidu.com>
Date: Fri Apr 27 23:04:21 2018 +0800 second commit file to github
commit 71474ae7f3e3947e4ffe9a5144b0f83138596b2a
Author: ftl <ftl@baidu.com>
Date: Fri Apr 27 21:40:38 2018 +0800 first commit file to github
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git log --pretty=oneline
ec8b78f7ff0e97d57c7217f29665aba2a6eb0d4b (HEAD -> master) all commit
f227b64508a389b41797141b581aca47b1fb8fd0 second commit file to github
71474ae7f3e3947e4ffe9a5144b0f83138596b2a first commit file to github

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ cat helloworld.txt
hello world 2020
好好学习,天天向上 fftl
HHHHHHHHHHHHHHHHHHHHHHHH
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git reset --hard HEAD^
HEAD is now at f227b64 second commit file to github
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ cat helloworld.txt
hello world 2020
好好学习,天天向上 fftl

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git reflog
f227b64 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
ec8b78f HEAD@{1}: commit: all commit
f227b64 (HEAD -> master) HEAD@{2}: commit: second commit file to github
71474ae HEAD@{3}: commit (initial): first commit file to github

Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ cat helloworld.txt
hello world 2020
好好学习,天天向上 fftl
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ git reset --hard 71474ae
HEAD is now at 71474ae first commit file to github
Administrator@AFOEC-704092020 MINGW64 /f/GIT_Repository (master)
$ cat helloworld.txt
hello world 2020
好好学习,天天向上

GitHub的使用

登录并创建一个项目

在git bash内依次输入上面的内容,表示将文件上传到github内

【更多参考】http://www.cnblogs.com/alex3714/articles/5930846.html

GIT学习---GIT&github的使用的更多相关文章

  1. Git学习-Git时光机之版本回退(二)

    Git,是Linus花了两周时间用C写的一个分布式版本控制系统.牛人该怎么定义? 零.结论先行 倒叙总结一下: HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git ...

  2. 菜鸟之路——git学习及GitHub的使用

    首先,感谢廖雪峰老师的git教程 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 ...

  3. git学习——Git 基础要点【转】

    转自:http://blog.csdn.net/zeroboundary/article/details/10549555 简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是 ...

  4. git学习——git命令之创建版本库和版本退回

    原文来至 一.创建版本库 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追 ...

  5. git学习——git下载安装

    原文来至 一.集中式vs分布式 Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 先说集中式版本控制系统,版本库是集中 ...

  6. git学习——git理解和仓库的创建

    一.git用的3个工作的状态的理解. 1. 工作区 workspace(modified); 2. 暂存区 stage(staged) ; 3. git本地仓库 repository(commited ...

  7. 【学习总结】Git学习-GIT工作流-千峰教育(来自B站)

    Git工作流指南 - av32575602 文档资料 目录: 1-什么是版本控制系统 2-工作流简介 3-集中式工作流 4-功能分支工作流 5-GitFlow工作流 小记: 初看差点放弃了,不过后面还 ...

  8. git学习------>Git 分支管理最佳实践

    ps:本文转载于 : https://www.ibm.com/developerworks/cn/java/j-lo-git-mange/index.html Git 是目前最流行的源代码管理工具.大 ...

  9. Git学习-Git配置(一)

    零.前言 Git是一个工具,就没必要把时间浪费在那些"高级"但几乎永远不会用到的命令上.一旦你真的非用不可了,到时候再自行Google或者请教专家也未迟. 如果你是一个开发人员,想 ...

随机推荐

  1. springweb flux websocket

    直接上代码: import org.springframework.stereotype.Component; import org.springframework.web.reactive.sock ...

  2. WPF中List的Add()与Insert()方法的区别

    先来看看定义: // Summary: // Adds an object to the end of the System.Collections.Generic.List<T>. // ...

  3. 根据模板导出excel

    @RequestMapping(value = "/export", method = RequestMethod.GET) public void exportApprovals ...

  4. JAVA 之 继承

    1:继承的定义: Java继承是面向对象的最显著的一个特征.继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力. 2:关键字: extends :继承 3:格式形式: ...

  5. Object-C语言Block的实现方式

    开场白 Block基本概念 中间态转换方法 Block编译后结果分析 Block运行时状态与编译状态对比   开场白   Object-C语言是对C语言的扩展,所以将OC源码进行编译的时候,会将OC源 ...

  6. C#语法之Linq查询基础一

    Linq做.Net开发的应该都用过,有些地方很复杂的逻辑用Linq很方便的解决.对于Linq to object.Linq to xml.Linq to sql.Linq to Entity(EF)都 ...

  7. 使用 ahk 让普通键盘变为Dvorak键盘

    本文告诉大家,如何使用软件做出Dvorak键盘. 在开始说如何做之前,需要告诉大家,什么是Dvorak键盘. Dvorak Simplified Keyboard /ˈdvɔːræk, dəˈvɔː- ...

  8. JavaScript 正则表达式RegExp 和字符串本身的正则表达式

    JavaScript 正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE)使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索模 ...

  9. MySQL 学习 --- 数据结构和索引

    本文参考了多篇文章集成的笔记,希望各位学习之前可以阅读以下参考资料先 概述 文章分几个部分 :第一部分介绍了B-Tree 和 B+Tree 这种数据结构作为索引:第二部分介绍索引的最左前缀原则和覆盖索 ...

  10. mysql sql语句大全(MySQL语句 整理一)

    1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...