Git必知必会基础(03):Git本地仓库操作

全栈测试笔记 / 2024-01-18 / 原文

 

本系列汇总,请查看这里

常用命令汇总

下面是本地仓库常用命令

命令

作用

备注

git init

初始化本地Git仓库(项目)

会在当前目录中创建—个.git目录,用于记录所有的版本变更信息

git status

查看本地仓库的文件状态

显示工作目录和暂存区的状态,能看到那些修改被暂存到了,哪些没有,哪些文件没有被 Git tracked 到

git add 文件路径

将文件添加到跟踪列表(暂存区),交由git托管

-A 或 --all或 . 表示添加所有文件,也可以使用*进行匹配,比如*.java

文件路径可以是文件也可以是目录

git commit

将跟踪列表中(暂存区)的文件提交到本地仓库

-m指定提交日志,方便后续查看提交或改动记录

git log

用于查看提交历史(commit的记录,也就是提交日志,包含完整版本号、作者、日期、comments),显示的顺序是由近到远,也就是最新的修改在上面

概要显示:git log --oneline,一行展示每次日志,内容仅含7位版本号、comments

查看最近n次的提交:git log -n,n是数字

查看指定作者的提交,如果没有,就显示空:git log --author xxx

一条线串联整个提交历史:git log --graph,结果左侧会有一条线

显示最近n次提交的差异:git log -p -n,n是数字

git reset --hard 版本id

回退到指定版本

HEAD表示当前的版本

git reflog

查看所有操作记录

包括被回退的版本id、reset操作等

 

说明:所有命令都必须在Git仓库的根目录下执行,也就是.git同级目录操作,否则会报错:

 

文件状态

Git文件的四种状态:

  untracked:未跟踪,表示文件不受git管理,显示为:Untracked files

  staged:已暂存,表示对已修改文件的当前版本做了标记,显示为:Changes to be committed

  committed:已提交,表示文件已经被提交到本地仓库

  modified:已修改,表示文件内容已被修改,但没有对已修改文件的当前版本做标记,显示为:Changes not staged for commit

 

命令操作

初始化仓库

创建项目目录:mkdir pytest_apiautotest

 

初始化:git init

 

目录下多了.git目录,将当前的目录交由Git进行管理,用于记录所有的版本变更信息,HEAD文件记录了当前分支

 

补充:上面提示信息是说要配置全局默认分支

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in D:/ren/code/pytest_apiautotest/.git/

 

设置默认分支为master级别:git config --global init.defaultBranch master

 

查看状态、添加暂存区、提交到本地仓库

查看状态:git status,还没任何新增修改

 

新增文件:touch qzcsbj.txt

 

添加到暂存区:git add qzcsbj.txt

 

提交到本地仓库:git commit -m "add qzcsbj.txt"

1个文件改变,0行新增,0行删除

 

更新并提交到本地仓库

编辑文件:vim qzcsbj.txt

文件内容如下:

 

查看状态:git status

Changes not staged for commit:未暂存以供提交的更改

 

添加到暂存区:git add *.txt

 

提交到本地仓库:git commit -m "modify qzcsbj.txt"

1个文件改变,1行新增

 

修改文件内容

 

提交到本地仓库

1个文件改变,3行新增,1行删除

 

查看日志

git log

显示的顺序是由近到远

显示的log的含义:

commit id,每个id都是唯一的

Author,初始化时候的配置信息,作者及邮箱

Date,提交日期

xxx,commit -m的提交说明

 

git log --oneline,仅含7位版本号、comments

 

回退

git reset --hard  c7844cd350d943dd8ff5486e122c4cde419b7322

 

只看到两个版本了

 

git reflog,前七位是版本简写

 

git reset --hard 50ca458

 

忽略文件

可以在git仓库的根目录下添加—个名为.gitignore的文件,用于指定需要被git忽略的文件或文件夹

注意:

  文件名必须是.gitignore

  文件必须在项目的根目录下

  每行指定—个忽略文件

  以#开头的行表示注释

 

比如:java自动化中,target文件夹、.iml文件是不需要提交的
 
创建如果文件、文件夹

 

创建.gitignore文件,内容如下:

 

查看状态,未跟踪的文件中没有被添加到忽略文件中的内容

 

提交到本地仓库,仅显示创建了ren.txt和.gitignore两个文件

 

【bak】