Git学习笔记

学习地址:https://www.liaoxuefeng.com/wiki/896043488029600

Git本地仓库

创建版本库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 创建版本库
mkdir learngit

## 进入learngit目录
cd learngit

## 指定仓库
git init

## 新建文件:版本1
vim readme.txt
## ins输入
## Git is a version control system.
## Git is a free software.
## Esc退出,:wq保存

## 把文件添加到仓库
git add readme.txt
git commit -m"wrote a readme.txt"

查看修改记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## 修改文件:版本2
vim readme.txt
## ins输入,修改第一行为
## Git is a distributed version control system.
## Esc退出,:wq保存

## 查看仓库状态
git status

## 查看修改内容
git diff

## 把文件添加到仓库
git add readme.txt
git commit -m"add distributed"

版本回退

1
2
3
4
5
## 修改文件:版本3
vim readme.txt
## ins输入,修改第二行为
## Git is free software distributed under the GPL.
## Esc退出,:wq保存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
## 查看版本历史记录:显示从最近到最远的提交日志
git log
git log --pretty=oneline

## 回退到上一版本(版本2)
## 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset --hard HEAD^

## 重新回到版本1
## 找到版本1的commit id
git reflog

## 根据版本1的commit id,重新回到版本1
git reset --hard 150fa61

工作区和暂存区

工作区(Working Directory)

就是你在电脑里能看到的目录,比如learngit文件夹就是一个工作区

版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

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

撤销修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

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

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

删除文件

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

1
2
3
4
5
6
7
8
9
## 删除工作区中的文件readme.txt
rm readme.txt

## 同步删除版本库中的文件
git rm readme.txt
git commit -m"remove readme.txt"

## 撤回修改(删除)
git checkout -- readme.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

Git远程仓库

关联GitHub

本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,因此需要给GitHub添加本地的SSH Key进行关联。

第1步:创建SSH Key。

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

1
2
3
4
5
## 创建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"

## 查找.shh所在目录
ll -d ~/.ssh

把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可。

在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:GitHub添加SSH Key。

登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

从本地上传到GitHub

在本地工作区下执行:

1
2
3
4
5
6
7
8
9
10
11
## 将该目录下的本地仓库与某个GitHub仓库关联
git remote add origin git@github.com:GitHub账号名/仓库名.git

## 将本地的【版本库!!!】上传到GitHub仓库
git push -u origin master

## 查看远程库信息
git remote -v

## 解除与远程库的关系
git remote rm origin

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,第一次推送master分支时,需加上-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,以后的推送,使用git push origin master即可。

注意:推送的是版本库,不是工作区!!!

因此,更新流程是:工作区->版本库->远程库

从GitHub克隆到本地

在本地工作区下执行:

1
2
## 从GitHub克隆到本地
git clone git@github.com:GitHub账号名/仓库名.git
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 归一
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信