【小知识】git 工具入门二,常用命令

905 阅读7分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

前言

我们前面git工具入门一已经对版本控制系统类型、git工作形式、安装配置git进行学习和掌握

我们都知道git是分布式版本控制系统,是目前主流的分布式版本控制系统。

git 有其强大的功能特点如:

  • 文档存储:git以哈希算法进行加密存储,保障文档数据的完整性
  • 分支管理:git以存储的文件主要以分支为主,可以灵活的合并分支的内容
  • 语法命令:git语法简单,上手容易
  • 版本管理:git不仅保存每次更新的,同时也保存完整的目录镜像
  • 协作性好:git分布系统,团队中修改项,可以共享给整个团队中

git 工作原理方式如下:

git 常用命令主要有19个如下:

因此,本期我们将对git工具基本的命令进行系统的学习和掌握,Let's go~

1. git 创建仓库

git 创建仓库有两种方式:

  1. 使用 git init 初始化一个空仓库

🔔 执行完创建仓库命令后,文件目录下会生成 .git目录

  1. 使用 git clone 克隆已有的仓库

    克隆仓库的命令格式为:

    git clone [仓库地址]
    

🔔 仓库地址主要分为ssh形式http形式,如hello_git项目中,我们可以看到此项目的下载链接

一般此方法,第一次加入创建项目的时候,把项目下载链接发给他人,进行下载项目文档

我们在git bash 中进行克隆实操如下:

我们可以看到juejin目录下出现了hello_git项目目录

2. git 下载代码

git 下载代码主要有三种:

  • 克隆仓库:git clone [仓库地址]
  • 下载远程代码并合并:git pull
  • 更新远程代码到本地:git fetch

git clone:

克隆仓库,是一个从无到有的操作,操作前无需git init操作。

具体细节我们已经在上面的章节已讲,本次就跳过哈

git pull

从远程仓库中拉取最新的内容,之后并合并到本地仓库中的操作

git pull 相当于: git fetch + git merge

git pull 语法格式:

git pull [branch] [localbranch]

🔔 此方法一般通常用于每次开发前使用git pull 更新代码仓库

我们来看看实际操作吧

  • 远程仓库hello_git 添加一份新文件 daily

  • 电脑本地更新仓库:

git fetch

git fetch 从远程仓库更新到本地仓库

🔔 git fetch 下载代码之后不自动进行合并,通常在下载代码之后,需要手动进行git merge进行合并

git fetch 下载时,如果没有指定远程分支则默认将master分支作为FETCH_HEAD

我们如果下载一下代码并合并到本地操作步骤:

git fetch origin main           #从远程仓库origin的main分支下下载代码到本地origin main
git log -p master.. origin/main #查看本地仓库和远程仓库的区别
git merge origin/main           #远程和本地的合并

3. git 文件操作

git 文件操作,主要针对仓库里的文件进行添加、删除、还原等操作

  • 添加版本控制:git add
  • 删除版本控制:git rm
  • 还原修改:git checkout
  • 临时保存修改:git stash

git add

git add 将文件更新到本地的暂存区中

git add 文件1 文件2

如果将目录下所有文件更新到本地的暂存区

git add . 

我们在本地仓库hello_git下创建新文件juejin.txt,然后添加到暂存区

git rm

git rm 将文件从暂存区和工作区中删除

git rm 文件1

当我们删除已在暂存区并修改过的文件时,我们需要进行强制删除

git rm -f 文件1

接上面操作,我们在本地仓库hello_git中,删除已经在暂缓区juejin.txt

git checkout

git checkout可以对文件进行还原操作

git checkout -- 文件

git checkout还原文件主要有两种场景:

  1. 改乱的文件未存到暂存区:执行git checkout 撤销文件后回到上次提交log后的状态

  2. 改乱的文件已经存到暂存区后又修改了:执行git checkout 撤销文件后回到修改前的版本库状态

git stash

git stash 针对修改未完,但又不得不先回退的情况

git stash 操作时需要和其他操作联合使用

git stash ==> 将工作区和暂存区的修改打入栈 git stash pop ==> 出栈 git stash list ==> 查看栈信息

🔔 git stash主要针对于远程仓库修改代码发送冲突,

  • 第一步要把我们自己修改的内容暂时存在栈区
  • 第二步更新本地代码
  • 第三步出栈
  • 第四步合并本地代码
  • 第五步添加到暂存区、提交给本地仓库、远程仓库

4. git 查看记录

git 提供查看log日志相关的操作

  • 查看提交记录:git log
  • 查看指令记录:git reflog
  • 查看仓库状态/修改:git status/diff
  • 查看远端:git remote

git log

git log 查看历史提交记录

也可以输入git log --oneline 查看简洁版的日志

git reflog

git relog 查看所有分支的所有操作记录,包括已经被删除的commit记录和reset操作

image.png

git status/diff

git status 查看文件状态

git diff 查看文件状态变更的具体细节

我们在本地仓库hello_git 修改文件juejin.txt,查看其状态:

git remote

git remote 用于远程仓库操作

查看所有远程仓库

git remote -v

查看某个远程仓库信息

git remote show [url]

添加远程仓库

git remote add [仓库名字][url]

5. git 版本操作

git 版本操作主要有5类操作:

  • 版本回退:git reset
  • 推送代码:git push
  • 提交代码:git commit
  • 拷贝某个版本:git cherry-pick
  • 去掉某个版本:git revert

git reset

git reset 对版本进行回退

git reset [HEAD]

版本回退到前状态:

版本回到上两个版本:

git rest 默认回到上一个commit步骤

git push

git push 将存在本地仓库的文件上传到远程仓库中

git push [远程主机][本地分支名]:[远程分支名]

如果当前只有一个分支,主机名可以省去,直接git push进行上传

我们将存在本地库存中juejin.txt上传到远程仓库里

git commit

git commit 将存在暂存区的文件提交到本地仓库中保存

输入git commit之后,需要填写log日志信息,写好后按esc + :wq 保存

成功将juejin.txt文件提交到本地仓库中

git cherry-pick

git cherry-pick 不仅解决对于多分支代码,建模从一个分支转移到另一分支的需求,还是可以合并多个提交


git cherry-pick commitID

我们在pengyouquan分支下修改juejin.txt文件提交之后,切到main分支进行合并

git revert

git revert 适合撤销某个版本,但又想保存目标版后的版本的场景

我们查看log信息,决定撤销第2个提交信息:

revert之后,我们再次查看日志

6. git 分支操作

git 分支操作操作:

  • 切换分支:git checkout
  • 创建分支:git branch

git checkout

git checkout 除了还原文件操作外,还可以支持切换分支操作

git checkout 分支明

git branch

git branch 创建新分支

git branch 分支名

查询所有分支

git branch

总结

本期,对版本控制工具git,常用命令进行系统的学习和掌握,大家在平时提交代码的时候可以多多使用这些指令

以上是本期内容,欢迎大佬们点赞评论,我们下期见~