Git的基础知识与基本使用

206 阅读7分钟

git的基础知识与基本使用

版本管理

本地版本控制系统

人们把项目拷贝到本地磁盘上进行备份,然后以命名方式来区分,这种做法好处是简单,但坏处也不少比如备份比较多或许就会混淆不同版本之间的区别,为了解决这个问题,有人就开发了一个本地版本管理系统

WeChat Image_20220926165328.png

本地版本管理就是把版本号存入数据库来记录文件的历史更新差异

集中化版本控制系统

为了解决开发者协同工作的问题,于是,就出现了集中化的版本控制管理系统(CVS)。这一种管理系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新
但是有一个致命的问题就是,如果服务器坏了,所有人就不能提交代码,如果服务器丢失了数据,没有做数据备份,那么就有丢失数据的风险。还有就是只要项目的历史记录被保存在单一位置,就会有丢失所有历史更新的记录风险(本地版本控制系统也有这种风险)

1664182437634.jpg

分布式版本控制系统(git)

客户端不只是提取最新版本的文件快照,而且把最原始的代码仓库镜像到本地,这样一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。

1664182467123.jpg

git的安装

  • git安装地址:Git (git-scm.com)
  • 在官网把安装包下载下来之后一路next操作即可(无需再勾选或取消其他选项)

1664183938281.png

git的基本配置

  • 鼠标右键然后选中Git Bash Here打开git的控制台
  • 版本查询指令:git --version
  • 配置用户名指令:git config --global user.name "XXX"
  • 配置邮箱指令:git config --global user.email xxxx@qq.com
  • 查看配置指令:git config --list

1664185080457.png

1664185132918.png

输入ssh-keygen -t rsa -C "xxxx@qq.com"然后一直回车直至出现如下图

1664185276663.png

Git文件的三种状态与工作模式

使用Git操作文件时,文件状态有三种

状态描述
已提交(commited)已提交表示数据已经安全的保存在本地数据库中
已修改(modified)已修改表示修改了文件,但还没保存到数据库中
已暂存(staged)已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中

Git项目有三个工作区域:工作区、暂存区和Git仓库

分类描述
工作区简单的理解为在电脑里能看到的目录,比如自己创建的本地项目目录
暂存区Git的版本库里存了很多东西,其中最重要的就是称为stage的暂存区,还有Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD
Git仓库工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

Git项目的工作流程

  1. 在工作区中修改某些文件
  2. 对修改后的文件进行快照,然后添加到暂存区
  3. 提交更新,将保存在暂存区域的文件快照永久存储到Git仓库中

1664196654844.jpg

常用的git指令

新建代码库

  1. git init 在当前目录新建一个Git代码库
  2. git init [project-name] 新建一个目录,将其初始化为Git代码库
  3. git clone [url] 下载一个项目和它的整个代码历史

增加/删除文件

  1. git add [filename] 添加指定文件到暂存区
  2. git add [dir] 添加指定目录到暂存区,包括子目录
  3. git add . 添加当前目录的所有文件到暂存区
  4. git rm [filename] 删除工作区文件,并且将这次删除放入暂存区
  5. git rm --cached [file] 停止追踪指定文件,但该文件会保留工作区
  6. git mv [file-original] [file-renamed] 改文件 并且将这个改名放入暂存区

代码提交

  1. git commit -m [message] 提交暂存区到仓库区
  2. git commit [filename] -m [message] 提交暂存区的指定文件到仓库区
  3. git commit -a 提交工作区自上次commit之后的变化,直接到仓库区
  4. git commit -v 提交时显示所有diff信息

分支

  1. git branch 列出所有本地分支
  2. git branch -r 列出所有远程分支
  3. git branch -a 列出所有本地分支和远程分支
  4. git branch [branch-name] 新建一个分支但是依然停留在当前分支
  5. git checkout -b [branch] 新建一个分支,并切换到该分支
  6. git branch [branch] [commit] 新建一个分支,指向指定commit
  7. git branch --track [branch][remote-branch] 新建一个分支,与指定的远程分支建立追踪关系
  8. git checkout [branch-name]切换到指定分支,并跟新工作区
  9. git checkout - 切换到上一个分支
  10. git branch --set-upstream[branch][remote-branch]建立追踪关系,在现有分支与指定的远程分支之间
  11. git merge [branch] 合并指定分支到当前分支
  12. git cherry -pick [commit]选择一个commit,合并进当前分支
  13. git branch -d [branch-name] 删除分支
  14. git push origin --delete[branch-name]删除远程分支
  15. git branch -dr [remote/branch]

标签

  1. git tag 列出所有tag
  2. git tag [tagname]新建一个tag在当前的commit
  3. git tag [tag][commit]新建一个tag在指定的commit
  4. git tag -d [tag]删除本地tag
  5. git push origin :ref/tags/[tagName]删除远程tag
  6. git show [tagname]查看tag信息
  7. git push [远程仓库] [tagname]提交指定tag
  8. git push [远程仓库] --tags 提交所有tag
  9. git checkout -b [branchname] [tagname]新建一个分支,指向某个tag

查看信息

  1. git status 显示有变更文件
  2. git log 显示当前分支的版本历史
  3. git diff 显示暂存区和工作区的差别
  4. git reflog 显示当前分支的最近几次提交

远程同步

  1. git fetch [remotename] 下载远程仓库的所有变动
  2. git remote -v 显示所有远程仓库
  3. git remote show [remotename]显示某个远程仓库的信息
  4. git remote add [shortname][url]增加一个新的远程仓库并命名
  5. git pull [remotename] [branch]取回远程仓库的变化,并与本地分支合并
  6. git push [remotename][branch]上传本地指定分支到远程仓库
  7. git push [remotename] --force 强行推送当前分支到远程仓库,即使有冲突
  8. git push [remotename] --all 推送所有分支到远程仓库

撤销

  1. git checkout [file]恢复暂存区的指定文件到工作区
  2. git checkout [commit][filename]恢复某个commit的指定文件到暂存区和工作区
  3. git checkout 恢复暂存区的所有文件到工作区
  4. git reset [file] 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
  5. git reset --hard 重置暂存区和工作区,与上一次commit保持一致
  6. git reset [commit] 重置当前分支的指针为指定commit,同时重置暂存区,但是工作区不变
  7. git reset --hard [commit] 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
  8. git reset --keep [commit]重置当前HEAD为指定commit,但保存暂存区和工作区不变

其他

  1. git log --pretty=online 使日志格式化在一行显示
  2. git reset --hard HEAD^回退版本 多少个^就回退几个版本

在vscode集成git

下载git插件

1664282124291.png

在vscode中配置git信息

文件->首选项->设置->搜索.gitpath->setting.json中编辑->配置git.path与git.confirmSync

1664282370712.png

注意:git.path要到git.exe

1664282520635.png 最后当按钮被点亮就说明成功啦!!