某 Git 的入门笔记(1)基本原理与入门操作
这是一篇多多多年前刚学习 Git 的时候写的笔记。
Git 基本原理
- 工作区(Working Directory) :在电脑里能看到的目录
- 版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
- stage(或者叫index):暂存区
- Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
注:
- Git 跟踪并管理的是修改,而非文件。
- 每次修改,如果不用git add到暂存区,那就不会加入到commit中。
Git 入门操作
- 在安装好 Git 后,首先,应该做一点基础的配置,设定默认的用户名、邮箱地址:
$ git config --global user.email "you@example.com"
$ git config --global user.name "Your Name"
- 创建一个 Git 仓库(一个由 Git 管理版本的文件夹):
$ mkdir new_rs
$ cd new_rs
$ git init
git init
会创建一个子目录 ./.git
, Git 仓库就基于这个目录,其中的内容由 git 自己维护,我们不应该手动修改其中的任何内容。
- 添加文件到 Git 仓库:
$ git add file_0
$ git add file_1 file_2
$ git commit -m "commit message"
"commit message"
应该简要介绍这一次更改做了什么,方便日后查阅。
- 看当前工作区状态(有没有改变了但未add、commit的文件)
$ git status
- 看文件修改内容
git status
展现了更改了的文件,如果想要看那个文件具体更改了那些内容,就可以用 git diff
:
$ git diff
- 退回到某个过去的版本
查看提交过的版本历史记录:
$ git log
如果觉得过于冗长,可以用: git log —pretty=oneline
,这样就一行显示一条记录。
在 log 的结果中,我们可以看到顶部的记录(HEAD),就是最近一次提交的版本。各个版本由一串 SHA1 编码作为 ID 来唯一识别。
要回到上一个版本可以用:
$ git reset --hard HEAD^
HEAD^
是上一版本,HEAD^^
是上上版本,HEAD~100
是往上100个版本。
恢复到以前的版本后,git log 中 最后一个版本(之前的HEAD)会消失,但也不是完全消失了。用那个消失版本的ID(前几位就行,不用写完整的一长串)可恢复:
$ git reset —hard 1094a
恢复,其实就是,更改当前的版本,其实就是,把HEAD指向不同版本号。
但如果你找不到之前的版本 ID 是多少了,可以用:
$ git reflog
git reflog
记录了每一次命令历史(操作记录),这就可以找到消失的新版号。
- 查看工作区和版本库里面最新版本的区别
$ git diff HEAD -- readme.txt
- 撤销修改(丢弃工作区的修改)(改乱了工作区某个文件的内容,想直接丢弃工作区的修改时)
$ git checkout -- readme.txt
这里可能有几种情况:
readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
- 把暂存区的修改撤销掉(unstage),重新放回工作区
$ git reset HEAD readme.txt
这里也有几种不同场景:
-
当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。 -
当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD file
,就回到了场景1,第二步按场景1操作。 -
已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
- 删除文件
先在系统里 rm
,再 git rm
转载自:https://juejin.cn/post/6995864236450643981