【Git零基础教程】(2)基本命令

本文详细介绍Git的基本结构与核心指令,包括工作目录、缓存区域、git仓库的概念;讲解如何使用git status、git add、git commit、git rm、git diff、git log等命令,并给出实际应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章主要介绍Git的基本结构和基本指令。

如下图(记为图1)所示,一个Git工程可以分为三个区域:工作目录,缓存区域,git仓库。
这里写图片描述

工作目录就是你的所有文件,缓存区域是暂存下一次commit要更改的内容的区域,git仓库则存着所有的commits。

在上图介于working directory 和 staging area之间的文件的状态大致可以分为如下几种(记为图2):
这里写图片描述

untracked表示该文件还未被git跟踪,不会进行版本管理。后面的unmodified、modified、staged均为 tracked之后的状态。staged即表面加入了staging area。


git status

我们可以使用这个命令来查看当前工程中所有文件的状态。它的结果大致如下(记为图3):
这里写图片描述


git add

如图2所示,add的作用是将各种状态的文件变成staged状态。它可以添加多个文件或使用通配符:

git  add  *.cpp
git  add  a.doc  b.txt
# 以下两个都代表所有文件
git  add  .
git  add  *

git commit

用于将staging area中的文件存到git仓库中。
基础用法如下:

# -m 表示该commit的 message
git  commit  -m  “ add new files”

# -a 表示将已经跟踪(tracked)的文件都加入staging area,比如图3中“changes not staged for commit”中的文件。可以省去git  add的步骤。
git  commit  -a  -m   “ change some files“

# 可以将这两个指令合并
git  commit  -am  “change some files”

git rm

用于删除文件。常用

# 不能删除图2中 untracked 和 staged 的文件
git  rm  a.cpp

# 强制删除(如untracked 和 staged 的文件)
git  rm  -f  a.cpp

# 只从staging area中删除,而不从working directory中删除
git  rm  --cached  a.cpp

# 删除所有文件(不能删除文件夹)
git  rm  *

# 删除所有文件包括文件夹
git  rm  \*

# 和上面效果相同
git  rm  *  -r   或   git  rm  .  -r

# 删除log文件夹下的.log文件,不包括子目录
git  rm  log/*.log

# 包括子目录中的
git  rm  log/\*.log

git diff

显示working directory与staging area中的内容的不同之处。如下图所示:
这里写图片描述

git  diff  

# 显示 staging  area和 上一次提交(commit)之间的区别
git  diff  --cached

# 显示 working directory和 上一次提交(commit)之间的区别
git  diff  HEAD

#  显示两个 <branch>(或 commit)之间的区别
git  diff  <branch>..<branch>
如  git  diff  master..origin/master

git log

显示commits的历史记录,效果如下图所示:
这里写图片描述

git log <commit>..<commit>
显示指定范围的log(注:A..B在Git中的意思是B中含有的而A中不含有的那些commits,如master..test表示test分支含有的,而master分支不含有的那些commits)

git log --stat
同时显示改动的统计信息
这里写图片描述

git log -p
同时显示改动的详细信息

git log --oneline
每个commit 一行
这里写图片描述

git log --graph --decorate
这里写图片描述

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s - %Cgreen(%cr) %C(cyan)(%cd) %C(blue)<%an>%Creset' --date=format:'%Y-%m-%d %H:%M'
可以使用alias来给这个命令取一个别名。方法是在.gitconfig中添加

[alias]
      <name>  =  log  .....  

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值