Git 基础命令
Git概述
- Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等),在软件开发过程中被广泛使用。
- 作用
- 代码回溯
- 版本切换
- 多人协作
- 远程备份
简介
- Git 是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git仓库来存储和管理这些文件,Git仓库分为两种:
- 本地仓库:开发人员自己电脑上的Git仓库
- 远程仓库:远程服务器上的Git仓库
commit:提交。将本地文件和版本信息保存到本地仓库push:推送,将本地仓库文件和版本信息上传到远程仓库pull:拉取,将远程仓库文件和版本信息瞎啊滋到本地仓库
Git常用命令
| 命令 | 功能 |
|---|---|
| git config —global user.name 用户名 | 设置用户签名 |
| git config —global user.email 邮箱 | 设置用户签名 |
| git init | 初始化本地库 |
| git status | 查看文件状态 |
| git add [文件名称] | 将文件的修改加入暂存区 |
| git reset [文件名称] | 将暂存区的文件取消暂存 |
| git reset —hard [版本号] | 切换到指定版本 |
| git commit [文件名] | 将暂存区文件提交到版本库中 |
| git commit -m “日志信息” | 将暂存区的文件提交到版本库中 |
| git log | 查看日志 |
| git reflog | 查看历史记录 |
| 命令 | 功能 |
|---|---|
| git remote | 查看远程仓库 |
| git remote -v | 查看当前所有远程地址别名 |
| git remote add [short-name] [url] | 添加远程仓库 |
| git remote rm [short-name] | 移除远程仓库 |
| git clone [url] | 从远程仓库克隆 |
| git pull [short-name] [branch-name] | 从远程仓库拉取 |
| git push [short-name] [branch-name] | 推送到远程仓库 |
| 命令 | 功能 |
|---|---|
| git branch | 查看分支:列出本地的所有分支 |
| git branch -r | 查看分支:列出所有的远程分支 |
| git branch -a | 查看分支:列出所有的本地分支和远程分支 |
| git branch [branch-name] | 创建分支 |
| git checkout [branch-name] | 切换分支 |
| git push [short-Name] [branch-name] | 推送至远程仓库分支 |
| git merge [branch-name] | 合并分支 |
| git branch -d [branch-name] | 删除分支 |
| git branch -D [branch-name] | 删除分支(即使该分支中进行了一些开发动作) |
| git push [short-Name] –d [branch-name] | 删除远程仓库中的分支 |
初始化
- 初始化设置用户名和邮箱
1
2git config --global user.name "yourname"
git config --global user.email "youremail@example.com"
- 查看配置信息命令通过该命令设置的信息都保存在
1
git config --list
~/.gitconfig文件中
创建仓库
- 在本地初始化一个新的Git仓库(不常用)
1
2# 省略参数时,默认创建在当前目录下
git init <仓库名称> - 下载一个远程存在的仓库(常用)
1
git clone <远程仓库地址>
工作区域和文件状态
工作区域
- 工作区(Working Directory / Working Tree)
存放当前正在编辑、查看的项目文件。
- 就是你电脑上看到的文件夹内容。
- 修改文件后,它们处于
已修改(modified)状态。- 工作区是从本地仓库中某个提交版本检出的副本。
暂存区(Staging Area / Index)
临时保存即将提交的变更。
- 当执行
git add <file>时,修改会被放入暂存区。 - 暂存区记录了下一次提交所包含的文件快照。
- 实际上,它是
.git/index文件。
- 当执行
本地仓库(Local Repository)
保存了项目的完整历史记录(所有提交、分支、标签等)。
- 位于
.git/目录中。 - 当执行
git commit时,Git 会把暂存区的内容保存为一个新的提交对象(commit)到本地仓库。
- 位于
远程仓库(Remote Repository)
托管在远程服务器(如 GitHub、GitLab、Gitee)上的仓库。
- 通过网络与本地仓库同步(
git push、git pull)。 - 通常多人协作时使用。
- 通过网络与本地仓库同步(
| 区域 | 说明 | 关键命令 |
|---|---|---|
| 工作区 | 你看到和编辑的文件 | git status |
| 暂存区 | 临时保存将要提交的修改 | git add |
| 本地仓库 | 保存所有历史提交 | git commit |
| 远程仓库 | 服务器上的共享仓库 | git push / pull |
文件状态
| 状态 | 说明 | 典型命令 |
|---|---|---|
| 未追踪(Untracked) | Git 未跟踪的文件 | git add |
| 已暂存(Modified) | 工作区修改但未暂存 | git add 或 git restore |
| 已暂存(Staged) | 已暂存等待提交 | git commit 或 git restore --staged |
| 已提交(Committed) | 已提交到本地仓库 | git log 查看 |
基本概念
- main:默认主分支
- origin:默认远程仓库
- HEAD:指向当前所在的分支或提交
- HEAD^:上一个版本
- HEAD~4:倒数第四个版本(可以是任意数字)
特殊文件
- .git: Git仓库的元数据和对象数据库
- .gitignore: Git忽略文件列表,用于指定哪些文件或目录不被 Git 跟踪。
- .gitattributes:指定文件的属性,比如换行符
- .gitkeep:使空目录被提交到仓库
- .gitmodules:如果项目包含子模块,这个文件会记录子模块的信息。
- .gitconfig:用户级别的Git配置文件,用于设置用户信息、默认编辑器等。
添加和提交
- 添加单个文件到仓库
1
git add <文件名>
- 添加所有文件到仓库
1
git add .
- 提交所有暂存区的文件到仓库
1
git commit -m "提交信息"
- 提交所有已修改的文件到仓库(被git追踪即可,不需要添加到暂存区)
1
git commit -am "提交信息"
查看
git status查看文件状态,git status -s使输出信息更加简洁1
git status
- 查看提交历史,—oneline可省略
1
git log --oneline
- 查看未暂存的文件更新了哪些部分
1
git diff
- 查看两次提交之间的差异
1
git diff [commit1] [commit2]
远程仓库
- 添加远程仓库
1
git remote add <远程仓库名> [远程仓库url]
- 查看远程仓库
1
git remote -v
- 删除远程仓库
1
git remote rm <远程仓库名>
- 重命名远程仓库
1
git remote rename <远程仓库名> <新远程仓库名>
- 从远程仓库拉取代码
1
git pull <远程仓库名> <分支名>
- 推送代码到远程仓库
1
git push <远程仓库名> <分支名>
- 获取所有远程分支
1
git fetch <远程仓库名>
- 查看远程分支
1
git branch -r
分支
- 查看本地所有分支,当前分支前面有一个
*,-r查看远程分支,-a查看所有分支1
git branch
- 创建新分支
1
git branch <分支名>
- 切换到指定分支并更新工作区
1
git checkout <分支名>
- 创建新分支并切换到该分支
1
git checkout -b <分支名>
- 删除一个已经合并的分支
1
git branch -d <分支名>
- 删除一个分支,不管是否合并
1
git branch -D <分支名>
- 给当前的提交打上标签,通常用于版本发布
1
git tag <标签名>
合并分支
- 合并分支a到分支b,
-no-ff表示禁用fast-forward模式,合并后的历史有分支,能够清晰的看出曾经做过合并,而-ff则表示使用fast-forward模式,合并后的历史会变成一条直线,没有分支。合并&squash所有提交到一个提交1
git merge -no-ff "message" <分支名>

1
git merge -ff "message" <分支名>

1
git merge --squash <分支名>
评论
