git学习笔记1

前言

根据廖雪峰老师的教程,我自己打了一遍笔记


参考文章链接:廖雪峰的git教程

一、安装git

在windows上使用git,在git官网上下载安装包,然后安装。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

注意git config命令的--global参数,用这个参数表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

二、创建版本库

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

$ mkdir learngit	//新建文件夹learngit
$ cd learngit		//进入该文件夹
$ pwd				//显示当前目录
/Users/michael/learngit

2.初始化一个Git仓库,使用git init命令

测试如下:此时会多了一个.git目录,这个目录是Git来跟踪管理版本库的。没事不要乱动。
如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

3.添加文件到Git仓库,分两步:

a.使用命令git add <file>,注意,可反复多次使用,添加多个文件;
b.使用命令git commit -m "备注"

commit可以一次提交很多文件,所以你可以多次add不同的文件

三、修改和删除文件

1. 通过命令观察修改

1.可以通过git status命令掌握工作区的状态
2.如果git status告诉你有文件被修改过,用git diff可以查看修改内容

图片
测试如下:我修改了git_learn.txt文件,使用git status命令可以看到红色字体modified标出了修改的文件
在这里插入图片描述
输入了git diff命令,通过观察红色字体和绿色字体得出我添加了3个0

3.然后重新提交

git add git_learn.txt

输入git status查看下,git status告诉我们,将要被提交的修改包括readme.txt,我们就可以放心提交了
在这里插入图片描述

git commit -m "add 000"

再输入git status查看仓库的状态,Git告诉我们当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的
在这里插入图片描述

2. 版本回退

1.每次commit相当于一次存档,一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作
2.用git log可以查看提交历史,以便确定要回退到哪个版本
3.Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
HEAD指向的版本就是当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
4.如果我们要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

测试如下:
可以看到我上传了2次
在这里插入图片描述
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:
在这里插入图片描述
现在将版本后退到上一个版本第一次上次,并查看下内容

在这里插入图片描述
在这里插入图片描述
让我们用git log查看下此时版本库的状态
在这里插入图片描述对比上一次,可以看出最新的那个版本add 000已经看不到了。但是我们只要往上找到之前最新版本的commit id,就可以返回。版本号没必要写全,前几位就可以了,Git会自动去找。
在这里插入图片描述
在这里插入图片描述
如果我们回退版本,关闭了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
不用担心,Git提供了一个命令git reflog用来记录你的每一次命令:
在这里插入图片描述
这样我们就找到新版本的commit id

3. 工作区和暂存区

工作区(Working Directory):你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
在这里插入图片描述
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支;

现在我的工作区有2个文件,一个上传到分支,一个没有。
在这里插入图片描述
LICENSE还从来没有被添加过,所以它的状态是Untracked
将该文件git add后
在这里插入图片描述
再将文件git commit 后,git status查看
在这里插入图片描述
一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:

4. 管理修改

Git跟踪并管理的是修改,而非文件。
每次修改文件,如果不用git add到暂存区,那就不会加入到commit中。
git commit只会将暂存区的文件提交到分支。

比如:
第一次修改 -> git add-> 第二次修改 -> git commit
则只会提交第一次修改
提交后,用git diff HEAD -- filename命令可以查看工作区和版本库里面最新版本的区别;

改善:
第一次修改 -> git add-> 第二次修改 ->git add -> git commit

5. 撤销修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
若文件添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态,也用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库

测试如下:
1.修改后没有add到暂存区
或者文件已经add到暂存区,你修改了文件,想要撤销修改(就是git add和修改文件只进行了一个)
在这里插入图片描述
2.修改后add到暂存区要撤销(既修改了又git add)
在这里插入图片描述
在这里插入图片描述
3.已经提交到版本库,进行版本回退

6. 删除文件

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

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

测试如下:
先创建一个新文件new.txt,并提交到版本库

$ git add new.txt
$ git commit -m "add new.txt"
[master 36ba2a9] add new.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 new.txt

一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了

$ rm new.txt

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,显示删除文件new.txt
在这里插入图片描述
有两种选择:
1.确认删除
那就用命令git rm删掉,并且git commit

$ git rm new.txt
rm 'new.txt'

$ git commit -m "remove new.txt"
[master da6da6d] remove new.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 new.txt

2.删错了,恢复

$ git checkout -- test.txt

四、远程仓库

1. 添加远程库

在GitHub上创建仓库,在本地的learngit仓库下运行命令,关联远程库

$ git remote add origin git@github.com:michaelliao/learngit.git

远程库的名字就是origin
下一步,就可以把本地库的所有内容推送到远程库上:
使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

在这里插入图片描述

在这里插入图片描述

添加ssh秘钥(一次就行):
输入命令ssh-keygen,然后三次回车。
在这里插入图片描述在这里插入图片描述将这些内容复制粘贴到GitHub网站的settings的SSH and GPG keys的ssh keys中。

2. 从远程库克隆

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但ssh协议速度最快

测试如下:

$ cd ..   		//返回上一级目录
$ ls				//查看该目录下的文件
$ mkdir pyqt		//新建文件夹
$ cd pyqt			//进入该文件夹
$ git clone git@github.com:wujunhong-max/PyQt.git
$ cd PyQt			//进入克隆的仓库
$ ls				//查看文件
$ git pull			//能将本地的代码更新至远程仓库 
					 里面最新的代码版本,能更新分支

git clone克隆仓库很慢,可以使用GitHub的镜像地址:即在github.com后面加cnpmjs.org这句

git clone https://github.com.cnpmjs.org/你的GitHub名字/项目名称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值