git从陌生到熟悉
笔记

git从陌生到熟悉

2026-01-31 139 阅读 2 分钟 admin

一、git的基本使用

# 一:创建并初始化仓库
mkdir /Users/daveb/  
cd /Users/daveb/ 
git init 

# 二:设置用户与邮箱
git config --local user.name vigouous'
git config --local user.email 'duanewnbo1633@163.com'

# 三:查看Git当前状态,如:哪些文件被修改过、哪些文件还在暂存区里尚未被提交到版本库等。
git status 

# 四:将检测到修改的文件添加到暂存区
git add 文件名 

# 五:将暂存区的文件提交到版本库的分支。
git commit -m '提交信息' 

# 六:查看提交记录,即:历史版本记录
git log 
git log --pretty=oneline 

git reflog

二、版本回退与前进

# 1、查看版本信息
$ git log --pretty=oneline 
87e199e0a766ecb10028ab93fe57fb4b326445fa (HEAD -> master) 版本3
353b5afb8784f0e19c8dab83be1cb97a93b13bd4 版本2
b740905aaf2753572a714ccdf3bd58a1d437148a 版本1

# 2、回滚到上一个版本
# 方式1:HEAD指向当前版本,HEAD^代表指向当前版本的上一个,HEAD^^代表指向当前版本的上上个,依次类推,HEAD~n代表指向当前版本的上上上...n个
$ git reset --hard HEAD^  # 如果执行的是git resert --hard HEAD~2 往后数两个版本,就会回到版本1
HEAD is now at 353b5af 版本2

# 方式2:回到某个指定的版本用git log查询出的commit id号
$ git reset --hard 353b5afb8784f0e19c8dab83be1cb97a93b13bd4

当前版本为1,前进到3
 # 1、用git log查看会发现最新的版本“版本3”不见了!!!
$ git log --pretty=oneline
353b5afb8784f0e19c8dab83be1cb97a93b13bd4 (HEAD -> master) 版本2
b740905aaf2753572a714ccdf3bd58a1d437148a 版本1

# 2、我们当然可以在命令终端中往上翻阅查找当初版本3还在时,我们用git log查出的commit id进行操作,但是这种做法毕竟不靠谱。我们可以用更靠谱的命令
$ git reflog
......
87e199e HEAD@{6}: commit: 版本3
353b5af HEAD@{7}: commit: 版本2
b740905 (HEAD -> master) HEAD@{8}: commit (initial): 版本1

# 3、前进到版本3
$ git reset --hard 87e199e
HEAD is now at 87e199e 版本3

三、撤销修改

20260131_051336_dae84572.png

四、管理修改

$ echo "hello" > a.txt # 第一次修改
$ git add a.txt 
$ echo "world" >> a.txt  # 第二次修改,本次修改并没有add到暂存区,暂存区的a.txt内容为“hello”
$ git commit -m "版本1" # 把暂存区的内容提交到版本库

$ git status  # 查看到第二次修改仍然存在于工作区,并未提交
$ git diff HEAD -- a.txt # 可以用命令查看版本库最新版本与工作区的区别
diff --git a/a.txt b/a.txt
index ce01362..94954ab 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,2 @@
 hello
+world

五、删除文件

在文件管理器中把没用的文件删了,或者用~m命令删了,git status命令会立刻告诉你哪些文件被删除.

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    test.txt

no changes added to commit (use "git add" and/or "git commit -a")

确实要从版本库中删除该文件,那就用命令gitrm删掉,并且gitcommit

$ git rm -f test.txt
rm 'test.txt'

$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test.txt

#可以配置.gitignore配置忽略文件,这些文件不被git追踪

git rm --cached :仅从暂存区删除
git rm :从暂存区与工作目录同时删除
git rm $(git ls-files --deleted):删除所有被跟踪但是在工作目录被删除的文件

六、分支管理

  1. 在当前分支下创建子分支并切换
# 1.1 创建+切换=>两条命令搞定
git branch dev # 在当前分支下创建子分支
git checkout dev # 由当前分支切换到子分支

#1.2 创建+切换=>一条命令搞定
git checkout -b dev # 等同于上述两条命令,代表创建并切换到子分支
  1. 直接切换到已有分支
git checkout dev
  1. 查看当前分支
$ git branch # 该命令会列出所有分支,当前所在分支前会标一个*号。
* dev
master
  1. 切换到dev分支下修改并提交记录/版本
git checkout dev
echo "111" > c.txt
git add .
git commit -m "v4"

git checkout master
git merge dev  # git merge命令用于合并指定分支到当前分支。

$ git branch -d dev
Deleted branch dev (was f1d9621).

$ git branch
* master

5、switch
因为get checkout -- 文件通常是用来撤销修改的,又用它来创建并切换分支,有点容易让人混淆,所以
最新版本的Git提供了新的git switch命令来创建or切换分支,推荐使用

$ git switch -c dev  # 创建并切换到新的dev分支,等同于git checkout -b dev
$ git switch master  # 直接切换到已有的master分支

原文地址:https://egonlin.com/?p=4378