Git 通用命令-记录篇一(持续更新.....)

239 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

起因

git -- 对于我们来说, 再熟悉不过的“分布式版本控制系统”.并且还有一个可视化工具ScourceTree,方便大家使用. 和同事交流过中,SourceTree用的都很 6, 但Git的原理,以及相应的命令,大部分人都不太清楚.

通过上面的沟通,我觉得有必要再一次记录一下.之前在19年再给团队分享Git的原理和命令的时候,做过对应的PPT,但由于时间长了,文件也找不到.我这里就从新再一次记录一下.本文只记录一下,对应的命令使用.随后我会再出一篇 Git -原理篇

目录

  1. Git流程示意图
  2. Git常用命令

git config

git init

git clone

git add

git status

git commit

Git流程示意图

v2-468760f57d75b51ad696d1a2cd42ec57_720w.webp

这个图是在网上找到,我也省的再去画一个,这个就描述的很详细了.包含了我们能用到的. 下面我来简单的讲解一下对应的内容代表的意思

  • workspace

    工作区:平时开发项目根目录里所有的内容都是工作区

  • staging

    暂存区: 当执行过 git add 后,就会当前编辑的内容,提交到暂存区. git_add.png

  • Local repository

    本地代码仓库区: 当执行 git commit 后,就会把暂存区里面的内容,添加到了仓库区,并清空暂存区 git_commit.png

  • Remoete repository:

    远程代码仓库区

Git常用命令

git config

我们在命令面板上,输git config.来看一下对应的输出.

用法:git config [<选项>]

配置文件位置
  --global              使用全局配置文件
  --system              使用系统级配置文件
  --local               使用仓库级配置文件
  --worktree            使用工作区级别的配置文件
  -f, --file <文件>     使用指定的配置文件
  --blob <数据对象 ID>  从给定的数据对象读取配置

操作
  --get                 获取值:名称 [值模式]
  --get-all             获得所有的值:键 [值模式]
  --get-regexp          根据正则表达式获得值:名称正则 [值模式]
  --get-urlmatch        获得 URL 取值:section[.var] URL
  --replace-all         替换所有匹配的变量:名称 值 [值模式]
  --add                 添加一个新的变量:名称 值
  --unset               删除一个变量:名称 [值模式]
  --unset-all           删除所有匹配项:名称 [值模式]
  --rename-section      重命名小节:old-name new-name
  --remove-section      删除一个小节:name
  -l, --list            列出所有
  --fixed-value         在比较值与 '值模式' 时,使用字符串字面比较
  -e, --edit            打开一个编辑器
  --get-color           获得配置的颜色:配置 [默认]
  --get-colorbool       获得颜色设置:配置 [stdout-is-tty]

类型
  -t, --type <>         取值为该类型
  --bool                值是 "true" 或 "false"
  --int                 值是十进制数
  --bool-or-int         值是 --bool--int
  --bool-or-str         值是 --bool 或字符串
  --path                值是一个路径(文件或目录名)
  --expiry-date         值是一个到期日期

其它
  -z, --null            终止值是 NUL 字节
  --name-only           只显示变量名
  --includes            查询时参照 include 指令递归查找
  --show-origin         显示配置的来源(文件、标准输入、数据对象,或命令行)
  --show-scope          显示配置的作用域(工作区、本地、全局、系统、命令)
  --default <取值>      使用 --get 参数,当缺少设置时使用默认值

从上面我们可以看的出来,git config 通用命令模版如下

git config [<选项>]

我一般用的比较多的是配置用户信息,从上面的分类,我们可以知道,用户信息最好设置在全局配置文件里,一般我们的个人用户信息,在一个设备上,都是不改变的.对应设置命令如下所示:

git config --global user.name name #名字
git config --global user.email email #邮箱

将 name和 email 替换成你github 当然你也可以使用git config --list,来查看你的git config的配置项. 其他配置这里就不再一一说了,上面也都有很详细的注释

git init

  • 语法

git init [options]

  • git init

    git init 初始化一个空的本地git仓库.会在当前目录下自动生成**.git** 文件夹.如下所示
    截屏2022-10-11 21.47.02.png

  • git init -- bare

    git init -- bare 初始化一个裸库.如下图所示 截屏2022-10-11 21.56.35.png

这里我们就简单的讲解一下git init --bare指令.

裸库多用于多人协助的远程仓库,也可以作为局域网仓库.可以pushpull数据,实现数据共享和同步,只会保存历史提交信息.一般来说,裸库命名方式都是以.git为后缀,然后你会发现,你的远程仓库地址也是以.git结尾.其中因该也是按照这个规则吧.

从上面的裸库的目录中.我们发现,其实它是不包含WorkSpace区域的,所以git addgit commit指令是不能使用的,这也刚好符合我上面的说,只可以进行pushpull

git clone

  • git clone [url]

    克隆完成工程到本地 eg: git clone https://gitee.com/tengteng_fan/shelltest.git

  • git clone [url] [File name]

    克隆远程仓库中某一个文件到本地 eg: git clone https://gitee.com/tengteng_fan/shelltest.git "ios"

  • git clone -b <Barnch name> [url]

    克隆远程仓库中某一个分支到本地 eg: git clone -b master https://gitee.com/tengteng_fan/shelltest.git

git add

  • git add [file1] [file2]

    添加单个或多个文件 eg: git add test.txt test1.txt

  • git add [dir]

    添加文件夹 eg: git add ios

  • git add .

    添加当前目录下所有改动过和新增的文件和文件夹 eg: git add .

  • git add --all

    无论你当前工作区哪一级目录下,都会把本地工作区的所有修改都提交**

git status

git status命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status不显示已经commit到项目历史中去的信息. 此时我们在测试目录下创建一个ts.sh文件,然后我们执行git status命令,查看一下,

On branch master
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
ts.sh
nothing added to commit but untracked files present (use "git add" to track)

从上面的打印中,我们可以看到.它提示我们,有一个ts.sh文件需要添加到 track区,我们按照它的提示,执行git add ts.sh后,再一次使用git status,查看一下变化.

On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
new file:   ts.sh

然后我们执行git commit后,在执行git status,看一下效果

On branch master
nothing to commit, working tree clean

由于我们已经执行git commit命令,此时已经把ts.sh文件添加到了本地仓库,所有当我们在执行git status的时候,它会提示我们,无需提交,工作树干净,说明此时,我们的暂存区,已经把工作区提交过来的文件,提交给本地仓库,并清空了暂存区.

因此,我们在每次执行git commit的时候,最好先执行一下git status检查文件状态,方便查看一下,我们提交到暂存区的时候,文件是否丢失,以及是否忽略掉我们不想提交的文件呢.

git commit

  • git commit

    直接使用 git commit,此时会显示,文件变动,然后在控制台,编辑提交信息,然后wq,保存退出即可
  • git commit -m

    -m 后面可以之间添加提交信息即可,相对第一个,可以直接在当前命令下,完成提交日志的输入 eg: git commit -m "提交信息"
  • git commit -a

    可以直接省略git add这个命令.算是一个addcommit的组合 eg:git commit -am "提交信息"

系列文章

Git 通用命令-记录篇二

文章内容预告

将会包含以下或者更多内容

1.
- git stash
- git reset --hard
- git checkout
- git branch
- git merge
- git rebase
- git remote
- git fetch
- git pull 
- git flow