小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
前言
我们前面git工具入门一已经对版本控制系统类型、git工作形式、安装配置git进行学习和掌握
我们都知道git是分布式版本控制系统,是目前主流的分布式版本控制系统。
git 有其强大的功能特点如:
- 文档存储:git以哈希算法进行加密存储,保障文档数据的完整性
- 分支管理:git以存储的文件主要以分支为主,可以灵活的合并分支的内容
- 语法命令:git语法简单,上手容易
- 版本管理:git不仅保存每次更新的,同时也保存完整的目录镜像
- 协作性好:git分布系统,团队中修改项,可以共享给整个团队中
git 工作原理方式如下:
git 常用命令主要有19个如下:
因此,本期我们将对git工具基本的命令进行系统的学习和掌握,Let's go~
1. git 创建仓库
git 创建仓库有两种方式:
- 使用 git init 初始化一个空仓库
🔔 执行完创建仓库命令后,文件目录下会生成 .git目录
-
使用 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还原文件主要有两种场景:
-
改乱的文件未存到暂存区:执行git checkout 撤销文件后回到上次提交log后的状态
-
改乱的文件已经存到暂存区后又修改了:执行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操作
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,常用命令进行系统的学习和掌握,大家在平时提交代码的时候可以多多使用这些指令
以上是本期内容,欢迎大佬们点赞评论,我们下期见~