Git的使用流程(详细教程)
目录
01.Git是什么?
1.1 Git简介
1.2 SVN与Git的最主要的区别
1.3 GIt主要特点
02.Git是干什么的?
2.1.Git概念汇总
2.2 工作区/暂存区/仓库
2.3 Git使用流程
03.Git的安装配置
3.1 Git的配置文件
3.2 配置-初始化用户
3.3 Git可视化工具
04-Git使用入门
05 Git常用命令
5.1 仓库
5.2 增加/删除文件
5.3 代码提交
5.4 分支
5.5 标签
5.6 撤销
5.7 查看信息
5.8 远程同步
01.Git是什么?
1.1 Git简介
Git是一个开源的分布式版本控制系统,由Linus Torvalds创建,用于有效、高速地处理从小到大的项目版本管理。Git是目前世界上最流行的版本控制系统,被广泛用于软件开发中,以帮助开发者追踪代码变更、协作开发以及维护项目历史记录
1.2 SVN与Git的最主要的区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
1.3 GIt主要特点
开源免费,使用广泛。
强大的文档(代码)的历史版本管理,直接记录完整快照(完整内容,而非差异),支持回滚、对比。
分布式多人协作的的代码协同开发,几乎所有操作都是本地执行的,支持代码合并、代码同步。
简单易用的分支管理,支持高效的创建分支、合并分支。
02.Git是干什么的?
先了解下Git的基本概念,及基本框架、工作流程
2.1.Git概念汇总
2.2 工作区/暂存区/仓库
🔸工作区(Workspace)就是在电脑里能看到的代码库目录,是我们搬砖的地方,新增、修改的文件会提交到暂存区。
- 在这里新增文件、修改文件内容,或删除文件。
🔸暂存区(stage或index) 用于临时存放文件的修改,实际上上它只是一个文件(.git/index),保存待提交的文件列表信息。
- 用
git add命令将工作区的修改保存到暂存区。🔸版本库/仓库(Repository /rɪˈpɑːzətɔːri/ 仓库)Git的管理仓库,管理版本的数据库,记录文件/目录状态的地方,所有内容的修改记录(版本)都在这里。就是工作区目录下的隐藏文件夹
.git,包含暂存区、分支、历史记录等信息。
- 用
git commit命令将暂存区的内容正式提交到版本库。master为仓库的默认分支master,HEAD是一个“指针”指向当前分支的最新提交,默认指向最新的master。2.3 Git使用流程
使用 Git 可以追踪代码的历史修改记录,方便团队协作、代码共享和代码重构。Git 的基本工作流程如下:
在开始编写代码之前,首先需要创建一个 Git 仓库(repository),用于存储代码和版本历史记录。
在编写代码时,可以通过
git add命令将更改的文件添加到 Git 的暂存区(staging area)中。通过
git commit命令将暂存区中的更改提交到 Git 仓库中,并生成一个新的版本号(commit hash)。如果需要撤销某个提交,可以使用
git revert命令来创建一个新的提交,该提交将会抵消先前的提交效果。如果需要合并不同分支的代码,可以使用
git merge命令进行合并。如果需要查看代码的历史提交记录,可以使用
git log命令来获取详细信息。如果需要将代码推送到远程仓库,可以使用
git push命令将本地代码推送到远程仓库。如果需要从远程仓库中获取代码,可以使用
git pull命令将远程代码拉取到本地。
03.Git的安装配置
Git官网:https://www.git-scm.com/ 下载安装包进行安装。Git的使用有两种方式:
- 命令行:Git的命令通过系统命令行工具,或Git提供的命令行工具运行(
C:\Program Files\Git\git-bash.exe)- GUI工具:Windows(GUI)、Mac(GUI)工具,需单独安装,使用更简单、更易上手。
指令
git --version查看安装版本号$ git --version git version 2.33.0.windows.23.1 Git的配置文件
Git有三个主要的配置文件:三个配置文件的优先级是① < ② < ③
- ① 系统全局配置(--system):包含了适用于系统所有用户和所有仓库(项目)的配置信息,存放在Git安装目录下
C:\Program Files\Git\etc\gitconfig。- ② 用户全局配置(--global):当前系统用户的全局配置,存放用户目录:
C:\Users\[系统用户名]\.gitconfig。- ③ 仓库/项目配置(--local):仓库(项目)的特定配置,存放在项目目录下
.git/config#查看git配置 git config --list git config -l#查看系统配置 git config --system --list#查看当前用户(global)全局配置 git config --list --global#查看当前仓库配置信息 git config --local --list3.2 配置-初始化用户
当安装Git后首先要做的事情是配置你的用户信息—— 告诉Git你是谁?配置 用户名、邮箱地址,每次提交文件时都会带上这个用户信息,查看历史记录时就知道是谁干的了。
配置用户信息:
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" # 配置完后,看看用户配置文件: $ cat 'C:\Users\Kwongad\.gitconfig' [user]name = Kandingemail = 123anding@163.com
user.name为用户名,user.email为邮箱。--global:config的参数,表示用户全局配置。如果要给特定仓库配置用户信息,则用参数--local配置即可,或直接在仓库配置文件.git/config里修改。3.3 Git可视化工具
- TortoiseGit:小乌龟,SVN时代就很流行的代码管理GUI利器。
- 🚫只有Windows版本,支持中文,需要单独下载安装中文语言包。
- ✔️开源,免费,与文件管理器的良好集成。
- ✔️内置冲突对比解决工具。
- Sourcetree:SourceTree是老牌的Git GUI管理工具了,也号称是最好用的Git GUI工具。
- ✔️适用于 Windows 和 Mac 系统,内置中文版,自动识别语言。
- ✔️免费、功能强大,使用简单。
- ✔️功能丰富,基本操作和高级操作都设计得非常流畅,适合初学者上手,支持Git Flow。
- 🚫无冲突对比工具,支持配置第三方组件。
- GitHub Desktop:Github官方出品的Git管理工具。
- GitKraken:GitKraken是一个跨平台GUI Git客户端,有免费版,专业版和企业版,这些版本启用了不同的功能。
在这里,我推荐新手使用Git Gui可视化工具,它提供了一种直观的方式来管理Git仓库
优点:
- 易于上手:对于不熟悉命令行操作的开发者来说,Git GUI提供了直观的图形化界面,使得版本控制操作更加直观和易于上手。
- 可视化操作:Git GUI工具通常提供可视化的提交、分支管理,以及代码变更等功能,使得开发者可以通过图形化界面轻松地进行这些操作,而不需要记忆所有的Git命令。
- 跨平台性:很多Git GUI工具都支持多个操作系统,因此可以在Windows、Mac和Linux等不同平台上使用,满足了不同开发者的需求。
- 减少错误:通过点击操作可以减少输入错误的机会。
- 可视化日志:GUI可以实时显示提交日志、分支树等信息,有助于更好地理解和管理版本控制的过程。
关于Git GUI的官网和下载流程,以下是详细步骤:
访问Git官方网站:打开浏览器,进入Git官方网站 https://git-scm.com/。
选择操作系统:在官方网站上找到“Downloads”选项,根据您所使用的操作系统(Windows、Mac OSX等),选择相应的下载选项。
下载安装程序:点击相应的操作系统选项后,会自动下载一个安装程序。对于Windows系统,通常会下载一个.exe文件。
安装Git:下载完成后,双击安装程序文件以启动安装过程。在安装过程中,您可以选择安装程序的安装路径、组件和选项。默认选项通常已将Git GUI包含在内,您可以直接选择继续安装。
启动Git GUI:安装完成后,您可以通过在开始菜单或应用程序列表中找到Git GUI并点击打开,或者在命令行中输入“git gui”来启动Git GUI工具
04-Git使用入门
首先,打开终端或命令行界面,进入要创建版本库的目录下。
接着,使用以下命令初始化一个空的 Git 仓库:
git init然后,将需要管理的文件添加到暂存区:
git add <file>你也可以使用以下命令一次性将所有变更添加到暂存区:
git add.接下来,提交暂存区中的变更到本地仓库,并添加一个描述信息:
git commit -m "Initial commit"使用
git status命令查看工作目录和暂存区的状态:git status使用
git log命令查看提交历史git log创建新分支:
git branch new-branch切换分支:
git checkout new-branch合并分支:
git merge new-branch将本地分支的更改推送到远程仓库。
git push origin main使用
git pull命令从远程仓库拉取最新的更改并合并到本地分支。git pull origin main
05 Git常用命令
5.1 仓库
# 在当前目录新建一个Git代码库 $ git init# 新建一个目录,将其初始化为Git代码库 $ git init [project-name]# 下载一个项目和它的整个代码历史 $ git clone [url]5.2 增加/删除文件
# 添加指定文件到暂存区 $ git add [file1] [file2] ...# 添加指定目录到暂存区,包括子目录 $ git add [dir]# 添加当前目录的所有文件到暂存区 $ git add .# 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 $ git add -p# 删除工作区文件,并且将这次删除放入暂存区 $ git rm [file1] [file2] ...# 停止追踪指定文件,但该文件会保留在工作区 $ git rm --cached [file]# 改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]5.3 代码提交
# 提交暂存区到仓库区 $ git commit -m [message]# 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message]# 提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a# 提交时显示所有diff信息 $ git commit -v# 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 $ git commit --amend -m [message]# 重做上一次commit,并包括指定文件的新变化 $ git commit --amend [file1] [file2] ...5.4 分支
# 列出所有本地分支 $ git branch# 列出所有远程分支 $ git branch -r# 列出所有本地分支和远程分支 $ git branch -a# 新建一个分支,但依然停留在当前分支 $ git branch [branch-name]# 新建一个分支,并切换到该分支 $ git checkout -b [branch]# 新建一个分支,指向指定commit $ git branch [branch] [commit]# 新建一个分支,与指定的远程分支建立追踪关系 $ git branch --track [branch] [remote-branch]# 切换到指定分支,并更新工作区 $ git checkout [branch-name]# 切换到上一个分支 $ git checkout -# 建立追踪关系,在现有分支与指定的远程分支之间 $ git branch --set-upstream [branch] [remote-branch]# 合并指定分支到当前分支 $ git merge [branch]# 选择一个commit,合并进当前分支 $ git cherry-pick [commit]# 删除分支 $ git branch -d [branch-name]# 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]5.5 标签
# 列出所有tag $ git tag# 新建一个tag在当前commit $ git tag [tag]# 新建一个tag在指定commit $ git tag [tag] [commit]# 删除本地tag $ git tag -d [tag]# 删除远程tag $ git push origin :refs/tags/[tagName]# 查看tag信息 $ git show [tag]# 提交指定tag $ git push [remote] [tag]# 提交所有tag $ git push [remote] --tags# 新建一个分支,指向某个tag $ git checkout -b [branch] [tag]5.6 撤销
# 恢复暂存区的指定文件到工作区 $ git checkout [file]# 恢复某个commit的指定文件到暂存区和工作区 $ git checkout [commit] [file]# 恢复暂存区的所有文件到工作区 $ git checkout .# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset [file]# 重置暂存区与工作区,与上一次commit保持一致 $ git reset --hard# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit]# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 $ git reset --hard [commit]# 重置当前HEAD为指定commit,但保持暂存区和工作区不变 $ git reset --keep [commit]# 新建一个commit,用来撤销指定commit # 后者的所有变化都将被前者抵消,并且应用到当前分支 $ git revert [commit]# 暂时将未提交的变化移除,稍后再移入 $ git stash $ git stash pop5.7 查看信息
# 显示有变更的文件 $ git status# 显示当前分支的版本历史 $ git log# 显示commit历史,以及每次commit发生变更的文件 $ git log --stat# 搜索提交历史,根据关键词 $ git log -S [keyword]# 显示某个commit之后的所有变动,每个commit占据一行 $ git log [tag] HEAD --pretty=format:%s# 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件 $ git log [tag] HEAD --grep feature# 显示某个文件的版本历史,包括文件改名 $ git log --follow [file] $ git whatchanged [file]# 显示指定文件相关的每一次diff $ git log -p [file]# 显示过去5次提交 $ git log -5 --pretty --oneline# 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn# 显示指定文件是什么人在什么时间修改过 $ git blame [file]# 显示暂存区和工作区的差异 $ git diff# 显示暂存区和上一个commit的差异 $ git diff --cached [file]# 显示工作区与当前分支最新commit之间的差异 $ git diff HEAD# 显示两次提交之间的差异 $ git diff [first-branch]...[second-branch]# 显示今天你写了多少行代码 $ git diff --shortstat "@{0 day ago}"# 显示某次提交的元数据和内容变化 $ git show [commit]# 显示某次提交发生变化的文件 $ git show --name-only [commit]# 显示某次提交时,某个文件的内容 $ git show [commit]:[filename]# 显示当前分支的最近几次提交 $ git reflog5.8 远程同步
# 下载远程仓库的所有变动 $ git fetch [remote]# 显示所有远程仓库 $ git remote -v# 显示某个远程仓库的信息 $ git remote show [remote]# 增加一个新的远程仓库,并命名 $ git remote add [shortname] [url]# 取回远程仓库的变化,并与本地分支合并 $ git pull [remote] [branch]# 上传本地指定分支到远程仓库 $ git push [remote] [branch]# 强行推送当前分支到远程仓库,即使有冲突 $ git push [remote] --force# 推送所有分支到远程仓库 $ git push [remote] --all
以上便是所有的关于Git的基础知识以及简单运用,希望对你有所帮!!



