git 的常用命令
GIT的使用
- 一. 创建git本地仓库
- 1. 配置仓库
- 2. 忽略某些文件的提交
- 3. 添加文件并提交
- 4. 推送到远程仓库
- 二. 常用的git指令
- 1. 克隆项目
- 1. 克隆项目并初始化所有子模块
- 2. 对已克隆的项目初始化子模块
- 3. 其他实用命令和技巧
- 2. 创建分支
- 1. 仅创建新的分支
- 2. 创建分支并立即切换到该分支
- 3. 切换分支
- 1. 查看远程分支列表
- 2. 切换分支
- 4. 提交和推送到远程分支
- 1. 查看远程主机名指令
- 2. 查看远程分支列表
- 3. git push 推送
- 5. merge 合并分支
- 6. 撤销和回退
- 7. git stash:临时保存工作进度
- 8. 查看git仓库的记录
- 9. 删除远程仓库
- 10. 重命名远程仓库
一. 创建git本地仓库
Git 使用 git init 命令来初始化一个 Git 仓库.
在文件夹中,
git init
执行后会在目录下生成一个隐藏的 .git
文件夹,这就表示仓库初始化成功。
1. 配置仓库
git 仓库的设置使用 git config 命令。
使用 git config --list
显示当前的Git全部配置信息:
$ git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
。。。
只编辑本仓库设置:
$ git config -e # 针对当前仓库
当你需要单独设置这个仓库的用户名和邮箱,可以使用配置仓库命令,单独编辑该仓库。
编辑全局Git设置,针对系统上所有仓库
$ git config -e --global # 针对系统上所有仓库
也可以使用指令配置:
设置提交代码时的用户信息:
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
如果去掉 –global 参数只对当前仓库有效。
⭐️也可以在仓库中找到.git/config
,直接编辑.git/config
文档也是一样的效果。
2. 忽略某些文件的提交
在 Git 中,忽略某些文件,不提交,可以在git仓库中配置 .gitignore
文件来实现。
在项目的根目录下新建(或修改) .gitignore
文件,把不需要提交的文件路径或规则写进去。
例如,在 .gitignore
添加想要忽略的文件,在提交时,这些文件就会被忽略,不会被提交。
# 忽略编译生成的文件
**/*.o
**/*bin# 忽略系统文件
.DS_Store
Thumbs.db
tags# 忽略编译后的build内容
build/
3. 添加文件并提交
# 将文件添加到暂存区
git add README.md# 添加当前目录下的所有文件到暂存区:
git add .# 提交到本地仓库
git commit -m "填写本次提交的原因和仓库更新信息"
4. 推送到远程仓库
git push 命令用于从将本地的分支版本上传到远程并合并。
命令格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
查看远程主机名指令:
$ git remote origin #示例
查看远程分支列表:
使用以下命令列出所有远程分支:
$ git branch -r origin/HEAD -> origin/master origin/master origin/develop
查看所有本地和远程分支:
如果需要同时查看本地和远程分支,可以运行:
git branch -a
第一次推送新分支并建立跟踪关系
git push -u origin main
-u
或--set-upstream
:把本地main
与origin/main
绑定,之后只需git push
即可。
推送当前分支到远程同名分支
git push
- 前提是已经建立了跟踪关系(通常通过
git clone
或上面的-u
)。
二. 常用的git指令

git 的基本使用流程会涉及到四个部分:
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:版本库或本地仓库
- remote repository:远程仓库
暂存区是一个临时存储区域,它包含了即将被提交到版本库中的文件快照,在提交之前,你可以选择性地将工作区中的修改添加到暂存区。
版本库包含项目的所有版本历史记录。每次提交都会在版本库中创建一个新的快照,这些快照是不可变的,确保了项目的完整历史记录。
工作区是当前编码使用的分支区,add指令后,我们更改的内容会保存到暂存区,之后 commit指令会提交到本地仓库中,使用push指令之后,会推送到远程仓库。
1. 克隆项目
1. 克隆项目并初始化所有子模块
git clone --recursive <主项目仓库地址>
# 或者使用更长的形式
git clone --recurse-submodules <主项目仓库地址>
此命令会克隆主仓库,并根据主仓库中记录的特定提交(通常是某次快照)来检出子模块特定版本的代码。
2. 对已克隆的项目初始化子模块
如果你之前已经用普通 git clone
命令克隆了主项目,此时子模块目录是空的,你需要额外执行命令来初始化和拉取子模块内容:
# 进入已经克隆的主项目根目录
cd <已克隆的主项目目录>
# 初始化并更新所有子模块(包括嵌套子模块)
git submodule update --init --recursive
--init
:初始化子模块,将.gitmodules
文件中定义的子模块信息注册到本地 Git 配置中。--recursive
:递归地处理所有嵌套的子模块(即子模块中可能包含的其他子模块)。
3. 其他实用命令和技巧
-
显示进度:如果子模块很多或很大,可以添加
--progress
参数查看克隆进度。git submodule update --init --recursive --progress
-
并行加速初始化:使用
-j <n>
参数(例如-j 4
)可以并行处理多个子模块,以加快初始化速度。git submodule update --init --recursive -j 4
2. 创建分支
1. 仅创建新的分支
创建一个新的分支,不切换过去。 git branch <分支名>
git branch new-feature # 创建了一个名为 "new-feature" 的新分支
这个命令仅仅创建一个新的分支。执行后,你仍然会停留在当前工作的分支上,需要手动切换分支,才能开始在上面工作。
2. 创建分支并立即切换到该分支
有两种命令:
命令(现代推荐): git switch -c <分支名>
switch
是较新的命令,专用于切换分支,比checkout
更直观。-c
是--create
的缩写,表示创建新分支。
命令(传统方式): git checkout -b <分支名>
checkout
命令功能较多(既能切换分支又能恢复文件),容易混淆。-b
表示创建新分支。
3. 切换分支
1. 查看远程分支列表
git fetch origin # 首先确保获取远程仓库的最新信息:cite[4]
git branch -r # 查看远程分支列表:cite[1]:cite[3]:cite[7]
git branch -a # 查看所有分支(包括本地和远程):cite[3]:cite[7]
git branch -r
会列出所有远程分支(通常以 origin/
开头),git branch -a
则会同时列出本地和远程分支。
2. 切换分支
获取到所有的分支后,有两种主要的切换方法。
方法特点 | 方法一:创建本地分支并跟踪远程分支 | 方法二:直接切换到远程分支(Detached HEAD) |
---|---|---|
适用场景 | 需要在该分支上进行持续开发和提交 | 临时查看远程分支内容,不打算立即进行提交 |
命令 | git checkout -b <本地分支名> origin/<远程分支名> 或 git switch -c <本地分支名> --track origin/<远程分支名> | git checkout origin/<远程分支名> |
操作结果 | 在本地创建一个新的分支,并自动与指定的远程分支建立跟踪关系(tracking) | HEAD 指针直接指向远程分支的最新提交,处于分离头指针(detached HEAD)状态 |
后续操作 | 在此分支的修改、提交可直接通过 git push 推送到对应的远程分支(无需指定分支名) | 在此状态下的新提交不会属于任何分支。若需保存修改,必须创建新分支:git checkout -b <新分支名> |
4. 提交和推送到远程分支
1. 查看远程主机名指令
$ git remote
origin #示例
2. 查看远程分支列表
使用以下命令列出所有远程分支:
$ git branch -r
origin/HEAD -> origin/master
origin/master
origin/develop
查看所有本地和远程分支:
如果需要同时查看本地和远程分支,可以运行:
git branch -a
3. git push 推送
git push 命令用于从将本地的分支版本上传到远程并合并。
命令格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
第一次推送新分支并建立跟踪关系
git push -u origin main
-u
或--set-upstream
:把本地main
与origin/main
绑定,之后只需git push
即可。
推送当前分支到远程同名分支
git push
- 前提是已经建立了跟踪关系(通常通过
git clone
或上面的-u
)。
5. merge 合并分支
将其他分支合并到当前分支:
git merge <branchname>
例如,切换到 main 分支并合并 feature-xyz 分支:
git checkout main
git merge feature-xyz
6. 撤销和回退
- 撤销工作区的修改:
git checkout -- file.txt
- 取消暂存区的文件:
git reset HEAD file.txt
- 回退到某个提交(保留修改):
git reset --soft <commit-id>
- 回退到某个提交(丢弃修改):
git reset --hard <commit-id>
7. git stash:临时保存工作进度
git stash
命令允许你临时保存当前工作目录的更改,以便你可以切换到其他分支或处理其他任务。
- 保存当前工作进度:先把目前的修改保存起来
git stash
- 查看存储的进度:查看当前保存的记录情况
git stash list
- 应用最近一次存储的进度:
git stash apply
- 应用并删除最近一次存储的进度
git stash pop
- 删除特定存储
git stash drop stash@{n}
- 清空所有存储
git stash clear
8. 查看git仓库的记录
-
查看仓库状态:
git status
-
查看提交历史:
git log
9. 删除远程仓库
git remote remove <远程名>
例如:
git remote remove origin
10. 重命名远程仓库
git remote rename <旧名字> <新名字>
例如:
git remote rename origin upstream