第1节:仓库 = github项目目录文件夹
1.1本节涉及概念:
概念 | 解释 |
---|---|
仓库 | 就是github项目 |
远程仓库 | 远程github项目所在的位置 |
本地仓库 | 克隆github项目到本地后的项目目录 |
工作区 | 当前项目目录所在的本地文件夹,可以理解成 本地仓库=工作区 |
版本库 | 仓库里的.git文件夹 |
暂存区 | 与分支一样,都属于版本库的一部分 |
1.2图解:
【git clone项目到本地后,项目目录结构】
假设
1.github项目名:GitTest
2.该项目下有一个文件夹folder-1和一个文件file-1
【工作区与版本库的关系】
1.3本节涉及git指令:
指令 | 作用 |
---|---|
git clone | 克隆项目到本地 |
git status | 查看当前本地分支下文件情况 |
git add | 保存刚刚的操作(包括增、删、改),也可以说是将工作区的内容保存到暂存区 |
git commit -m | 提交刚才add的内容,形成一个历史节点,也可以说是将暂存区的内容提交到版本区 |
git fetch | 更新远端仓库所有远程分支的最新状态 |
git pull | 将对应的远程分支里的内容拉取到本地分支(一般不建议使用该指令,容易产生冲突) |
git push | 将本地分支提交的内容推到对应的远程分支上,也可以说是将版本区的内容推到远程分支的版本区(一般来说,远程分支没有暂存区、工作区) |
git push -f | 强制推(强制覆盖) |
1.4提交代码的基本操作流程:
# 克隆github项目到本地
git clone https://xxx/yyy.git
# 进入项目目录
cd yyy
# 创建readme.txt
mkdir readme.txt
# 查看刚刚的操作
git status
# 保存刚才的操作
git add .
# 提交“保存的内容”
git commit -m'创建了readme.txt'
# 同步一下远程仓库的更新
git fetch
# 将远程仓库对应的远程分支的更新拉到本地
git pull
# 将本地分支提交的内容推到远程仓库对应的远程分支
git push
1.5图解
【git add和git commit】
【git pull】
【git push】
第2节:版本 = 当前分支的历史节点
2.1本节涉及概念:
概念 | 解释 |
---|---|
分支 | 就是github项目的副本 |
本地分支 | 本地副本:就是在你自己电脑上的分支 |
远程分支 | 远程副本:就是在远程仓库里的分支 |
历史节点 | 一次commit,就会给当前分支创建一个新的历史节点 |
版本 | 就是当前分支的历史节点 |
版本号 | 就是commit id |
2.2本节涉及指令:
指令 | 作用 |
---|---|
git log | 查看当前分支的提交历史 |
git reset --hard | 强制回到一个指定的历史节点上 |
2.3图解
【一个分支的历史节点形成过程】
2.4回到指定历史节点的操作流程(本地分支版):
# 在上面操作的基础之上,继续创建一个新的文件
mkdir test.txt
# 查看刚刚的操作
git status
# 保存刚才的操作
git add .
# 提交“保存的内容”
git commit -m'创建了test.txt'
# 突然发现不想要这个test.txt了,想剔除它,但是已经commit了
# 先查看历史节点信息
git log
# 可以看到如下信息:
# commit a0e55bcea8088a9cab9dc0d23edbc7db369eaf8f (HEAD -> master, origin/master)
# Author: wywangye <[email protected]> Date: Wed Apr 29 11:47:55 2020 +0800
#
# 创建了test.txt
# commit 06b96e30afeeef9f2890a2e9c7a46205f451b426
# Author: wywangye <[email protected]> Date: Mon Apr 27 12:50:54 2020 +0800
#
# 创建了readme.txt
# 复制上一个历史节点的commit id,使用git reset --hard回到上一个历史节点
git reset --hard 06b96e30afeeef9f2890a2e9c7a46205f451b426
# 查看本地文件夹,就可以看到test.txt文件不见了
# 但是如果又又后悔了,发现test.txt不应该剔除的,应该保留下来
# 这个时候git log也看不到提交test.txt的commit id了
# 不要慌,只要没有关闭终端,往上翻,能看到之前git log的内容就行
# 复制提交test.txt的历史节点的commit id
git reset --hard a0e55bcea8088a9cab9dc0d23edbc7db369eaf8f
# 查看本地文件夹,发现test.txt又回来了
2.5回到指定历史节点的操作流程(远程分支版):
# 如果不仅仅已经commit了,而且还push到远程分支了,这个时候想反悔,想提出test.txt,怎么办
# 仍旧先在本地分支回到上一个历史节点
git reset --hard 06b96e30afeeef9f2890a2e9c7a46205f451b426
# 然后强制推到远程分支即可
git push -f
2.6回到指定历史节点的操作流程(简易版):
# 回到上一个历史节点
git reset --hard HEAD^
# 回到上上个历史节点
git reset --hard HEAD^^
# 回到上100个历史节点
git reset --hard HEAD~100
2.7图解
【版本穿梭】