Git的使用

目录

git官网地址

Git的三种使用方式

命令行

图形化界面(GUI)

IDE插件/扩展

Git的四个区域

[工作区(Working Directory)](#工作区(Working Directory))

暂存区(Stage/Index)

本地仓库(Repository)

远程仓库(Remote)

Git的状态

未跟踪(Untrack)

未修改(Unmodified)

已修改(Modified)

已暂存(Staged)

已提交(Committed)

[基本的git 命令](#基本的git 命令)

初始化

创建仓库/克隆仓库

添加和提交

分支

合并分支

Rebase

Rebase和merge的区别

撤销

查看

Stash(存储)

其他

重命名远程仓库

从远程仓库拉取代码

fetch默认远程仓库(origin)当前分支的代码,然后合并到本地分支

将本地改动的代码Rebase到远程仓库最新的代码上

获取所有远程分支

查看远程分支

fetch(获取)某一个特定的远程分支

[Git Flow](#Git Flow)


git官网地址

git官网地址---Git (git-scm.com)

版本控制系统,由Repository仓库管理

版本控制系统

集中式管理:由中央服务器统一管理

分布式管理:每个人电脑上都有完整的版本,开源

Git的三种使用方式

命令行

最基本的方式

所有的命令都以git开头

图形化界面(GUI)

在官网上找GUI工具

IDE插件/扩展

在常用的IDEA或者VSCode中通过插件和扩展的方式

Git的四个区域

工作区(Working Directory)

你在电脑里能看到的目录

暂存区(Stage/Index)

一般存放在·git 目录下的index 文件,所以我们把暂存区有时也叫作索引(index)

本地仓库(Repository)

工作区有一个隐藏目录·git,这个不算工作区,而是Git的版本库

远程仓库(Remote)

托管在远程服务器上的仓库

Git的状态

未跟踪(Untrack)

还没被管理起来的

未修改(Unmodified)

已经被Git管理起来的,但文件内容没有发生变化的

已修改(Modified)

修改了文件,但没保存到暂存区

已暂存(Staged)

把修改后的文件放到暂存区

已提交(Committed)

把暂存区的文件提交到本地仓库

基本的git 命令

省略(Local):本地配置,只对本地仓库有效

--global:q全局配置,所有仓库生效

--system:系统配置,对所有用户生效

初始化

初始化设置用户名和邮箱

git config --global user.name "Your Name"

git config --global user.email [email protected]

git config --global credentail.helper store (保存用户名和密码)

git config --global --list (查看配置的用户名和邮箱)

创建仓库/克隆仓库

创建一个新的本地仓库(省略project-name则在当前目录创建)

git init <project-name>

下载一个远程仓库(后面加网址参数)

git clone <url>

例:创建仓库

mkdir learn-git

cd learn-git

git init

mkdir命令是用于在当前目录下创建一个新的目录。在这个例子中,mkdir learn-git表示创建一个名为"learn-git"的目录。

cd命令是用于改变当前工作目录。在这个例子中,cd learn-git表示将当前工作目录切换到名为"learn-git"的目录中。

查看仓库(-a显示隐藏文件,-al显示所有文件)

ls -a

添加和提交

添加一个文件到仓库

git add <file>

添加所有文件到仓库

git add .

提交所有暂存区的文件到仓库

git commit -m "message"

提交所有已修改的文件到仓库

分支

查看所有本地分支,当前分支前面会有一个*,-r查看远程分支,-a查看所有分支

git branch

创建一个分支

git branch <branch-name>

切换到指定分支,并更新工作区

git checkout <branch-name>

给当前的提交打上标签,通常用于版本发布

git tag <tag-name>

合并分支

合并分支a到分支b,-no-ff参数表示表示禁用Fast forward模式,合并后的历史有分支,能看出曾经做过合并

git merge --no-ff -m "message" <branch-name>

而-ff参数表示使用Fast forward模式,合并后的历史会变成一条直线

git merge --ff -m "message" <branch-name>

合并&squash所有提交到一个提交

git merge --squash <branch-name>

Rebase

Rebase操作可以把本地未push的分叉提交历史整理成直线看起来更直观。但是,如果多人协作时,不要对已经推送到远程的分支执行Rebase操作。

git checkout <dev>

git rebase <main>

Rebase和merge的区别

rebase不会产生新的提交,而是把当前分支的每一个提交都"复制"到目标分支上,然后再把当前分支指向目标分支,而merge会产生一个新的提交,这个提交有两个分支的所有修改。

撤销

移动一个文件到新的位置

git mv <file> <new-file>

从工作区和暂存区中 删除一个文件,然后暂存删除操作

git rm <file>

只从暂存区中删除一个文件,工作区中的文件没有变化

git rm --cached <file>

恢复一个文件到之前版本

git checkout <file> <commit-id>

(替换)创建一个新的提交,用来撤销指定的提交,后者的所有变化都将被前者抵消,并且应用到当前分支

git revert <commit-id>

重置当前分支的HEAD为之前的某个提交,并且删除所有之后的提交。

--hard 参数表示重置工作区和暂存区,

--soft 参数表示重置暂存区,

--mixed 参数表示重置工作区

git reset --mixed <commit-id>

撤销暂存区的文件,重新放回工作区(git add的反向操作)

git restore --staged <file>

查看

列出还未提交的新的或修改的文件

git status

查看提交历史,--oneline 可省略

git log --oneline

查看未暂存的文件更新了哪些部分

git diff

查看两个提交之间的差异

git diff <commit-id> <commit-id>

Stash(存储)

Stash操作可以把当前工作现场"储藏"起来,等以后恢复现场后继续工作。

-u 参数表示把所有未跟踪的文件也一并存储,

-a 参数表示把所有未跟踪的文件和忽略的文件也一并存储,

-save参数表示存储的信息,可以不写。

git stash save "message'

查看所有stash

git stash list

恢复最近一次stash

git stash pop

恢复指定的stash,stash@{2}表示第三个stash,stash@{0}表示最近的stash

git stash pop stash@{2}

重新接受最近一次stash

git stash apply

pop 和 apply 的区别是,pop 会把 stash 内容删除,而apply不会。可以用 git stash drop 来删除 stash

git stash drop stash@{2}

删除所有stash

git stash clear

其他

重命名远程仓库

git remote rename <old-name> <new-name>

从远程仓库拉取代码

git pull <remote-name> <branch-name>

fetch默认远程仓库(origin)当前分支的代码,然后合并到本地分支

git pull

将本地改动的代码Rebase到远程仓库最新的代码上

(为了有一个干净的、线性的提交历史)

git pull --rebase

获取所有远程分支

git fetch <remote-name>

查看远程分支

git branch -r

fetch(获取)某一个特定的远程分支

git fetch <remote-name> <branch-name>

Git Flow

GitFlow 是一种流程模型,用于在 Git 上管理软件开发项目。

主分支(master):代表了项目的稳定版本,每个提交到主分支的代码都应该是经过测试和审核的。

开发分支(develop):用于日常开发。所有功能分支、发布分支和修补分支都应该从 develop 分支派生。

功能分支(feature):用于开发单独的功能或特性。每个功能分支应该从 develop 分支派生,并在开发完成后合并回 develop 分支。

发布分支(release):用于准备项目发布。发布分支应该从 develop 分支派生,并在准备好发布版本后合并回master 和 develop 分支。

修补分支(hotfix):用于修复主分支上的紧急问题。修补分支应该从 master 分支派生,并在修复完成后合并回 master 和 develop 分支。

创建仓库

mkdir learn-git

cd learn-git

git init

将文件添加到仓库里

相关推荐
ikkkkkkkl3 小时前
Git基本操作
git
互联网搬砖老肖5 小时前
git 的基本使用
大数据·git·elasticsearch
程序猿chen7 小时前
量子跃迁:Vue组件安全工程的基因重组与生态免疫(完全体终局篇)
前端·vue.js·git·安全·面试·前端框架·跳槽
SunTecTec8 小时前
Idea 配置 Git
git
chxii9 小时前
2.4.5goweb项目上传到csdn的git仓库
git
清风徐来QCQ9 小时前
git和github的使用指南
git·github
serene9410 小时前
IntelliJ IDEA 2025.2 和 JetBrains Rider 2025.1 恢复git commit为模态窗口
java·git·intellij-idea
sun00770011 小时前
git 工具
git
G皮T14 小时前
【DevOps】Git 命令实战:一个简单的 Web 开发项目示例
git·github·devops·版本控制
像风一样自由202017 小时前
Git 进阶使用指南
git