<Git>学习笔记

四个很好的学习git网站:
git - 简明指南
图解Git
Git教程-廖雪峰
Learn Git Branching

还有一个Git常用操作和命令的清单(英文版):
GIT CHEAT SHEET

当然如果你是那种一看英语就头晕的人(程序员最好不要有这种问题),这里有个中文版的可以参考来看:
Git Cheat Sheet中文版

在这里插入图片描述

在这里插入图片描述

一、Git简介

1.Git的诞生

Linus在1991年创建了开源的Linux。

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git。一个月之内,Linux系统的源码已经由Git管理了。

2008年,GitHub网站上线了,它为开源项目免费提供Git存储。

2.集中式vs分布式

在这里插入图片描述

在这里插入图片描述

二、安装Git

1.Linux

在这里插入图片描述

2.windows

在这里插入图片描述

三、创建版本库

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

1.创建空目录

  1. mkdir learngit
  2. cd learngit
  3. pwd
    /c/Users/chiu/learngit

2.git init命令把这个目录变成Git可以管理的仓库,当前目录下多了一个.git的目录,这个目录是Git用来追踪管理版本库的。ls -a命令看隐藏目录

把文件添加到版本库

把一个文件放到Git仓库的两步骤:

  1. git add readme.txt
  2. git commit -m "wrote a readme file"

在这里插入图片描述
小结

  1. git init 初始化一个Git仓库
  2. git add <file>添加文件(可多个),git commit -m <message>提交

四、时光机穿梭

  • 要随时掌握工作区的状态,使用git status命令。
  • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

1.版本回退

git log查看历史记录:
在这里插入图片描述
每提交一个新版本,实际上Git就会把它们自动串成一条时间线:
在这里插入图片描述
要回退版本,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本。

git reset命令:
在这里插入图片描述
在这里插入图片描述
想回到未来,找到对应版本的commit id(版本号):
在这里插入图片描述
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL:
在这里插入图片描述
然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。

git reflog 记录每一次命令:用来找版本号
在这里插入图片描述
小结

  • git reset --hard commit_id在版本历史间穿梭
  • git log 查看提交历史,以便确定要回退到哪个版本
  • git reflog查看命令历史,以便确定要回到未来的哪个版本

2.工作区和暂存区

工作区
learngit文件夹就是一个工作区。

版本库Repository
工作区有一个隐藏目录.git,不算工作区,而是Git的版本库(Repository)。
在这里插入图片描述
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
在这里插入图片描述
修改readme和新建LICENSE后查看状态:
在这里插入图片描述
readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。
在这里插入图片描述
两次git add 后:
在这里插入图片描述
暂存区状态:
在这里插入图片描述
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

git commit后:
在这里插入图片描述

在这里插入图片描述

3.管理修改

Git跟踪并管理的是修改,而非文件

git commit提交后,用git diff HEAD – readme.txt命令可以查看工作区版本库里面最新版本的区别:
在这里插入图片描述

每次修改,如果不用git add到暂存区,那就不会加入到commit中。

4.撤销修改

添加了错误的一行,解决方法:

  1. 删掉最后一行,手动把文件恢复到上一个版本的状态。
  2. git checkout – file 可以丢弃工作区的修改

git checkout – file : 让这个文件回到最近一次git commit或git add时的状态
命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

如果git add而且没git commit:
在这里插入图片描述
用git reset HEAD readme.txt 可以把暂存区的修改撤销掉(unstage),重新放回工作区:
在这里插入图片描述

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

现在暂存区是干净的,工作区有修改。

丢弃工作区的修改:用
git checkout – readme.txt :
在这里插入图片描述
如果提交到版本库了,可以版本回退。但如果提交后还把自己的本地版本库推送到远程,就麻烦了。

小结

  • 丢弃工作区修改:git checkout -- file
  • 添加到暂存区了:git rest HEAD <file>,然后 再git checkeout -- file
  • 提交了不合适的修改到版本库,版本回退:git reset -- hard HEAD^

5.删除文件

1.确实要从版本库中删除该文件:git rm test.txt 然后 git commit -m “remove test.txt”
2.删错了,版本库还有,所以可以很轻松地将误删文件恢复到最新版本git checkout – test.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!

五、远程仓库

找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
GitHub的神奇的网站,这个网站是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库

1.添加远程库

在这里插入图片描述
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
在这里插入图片描述
在这里插入图片描述
从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

2.从远程库克隆

首先必须知道仓库的地址,然后用命令git clone从远程库克隆一个本地库
在这里插入图片描述
进入gitskills工作区,已经有README.md文件了。
在这里插入图片描述
Git支持多种协议,包括https,但ssh协议速度最快。

六、分支管理

在这里插入图片描述

练习分支的沙盒:学习Git分支


初始分支:

在这里插入图片描述
1.查看分支

在这里插入图片描述
2.创建分支
在这里插入图片描述
在这里插入图片描述
3.切换分支

在这里插入图片描述
4.创建+切换分支:

在这里插入图片描述
5.合并某分支到当前分支

在这里插入图片描述
6.删除分支

在这里插入图片描述

七、标签管理

在这里插入图片描述
在这里插入图片描述


闲谈

很多人对勋伯格的印象就是怪诞和难听的表现主义,但在无调性/十二音作品诞生之前,他首先是个彻头彻尾的后浪漫主义者。

我看过他写的《风格与创意》一书,很赞同他表达的风格不应该束缚创意的想法。

【浪漫主义最壮丽的收尾】古雷之歌最后的"Seht die Sonne(阳光)!"大合唱+配图/西蒙拉特BPO版

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值