一.工作区
1.位置:
包含项目的实际文件,对应项目文件夹
2.相关操作:
- 创建版本控制仓库,生成.git文件夹,跟踪管理仓库:git init
- 将修改保存到本地仓库中的暂存区index:git add
- 将未提交的更改保存到stash中,保持当前工作目录干净:git stash [save “message”]
- 查看stash列表:git stash list
- 恢复stash中的记录:git stash apply 应用更改但不删除 stash;git stash pop 应用更改的同时删除 stash
- 删除最新的stash:git stash drop
二.本地仓库
1.位置:
项目文件夹根目录下隐藏的.git文件夹
2.重要文件/文件夹
- index: 暂存区, git commit 后将内容提交到本地仓库。
- HEAD: 默认指向 master 分⽀的⼀个指针。
- refs/heads/master: ⽂件⾥保存当前 master 分⽀的最新 commit id 。
- objects: 包含了创建的各种版本库对象及内容,存放 git 维护的所有修改。
三.远程仓库
1.相关操作:
- 本地创建远程仓库的拷贝:git clone <remote_url>
- 本地获取远程仓库数据:git fetch;git fetch <remote_name>
<source_branch>[:<destination_branch>] *不指定即为更新到对应跟踪分支 - 本地获取远程仓库数据并合并:git pull;git pull <remote_name>
<source_branch>[:<destination_branch>] *不指定即为合并到当前分支 - 本地获取远程仓库数据并将工作复制到远程分支最新记录:git pull --rebase;git pull --rebase
<remote_name> <source_branch>[:<destination_branch>] *不指定即为复制到当前分支 - 上传数据并合并到远程仓库:git push;git push <remote_name>
<source_branch>[:<destination_branch>] *不指定即为合并到对应跟踪分支
四.提交
1.定义:
一个特定的代码状态,记录项目的发展历史,包含了更改的文件和内容,以及提交的作者和时间等信息。
2.相关操作
- 提交:git commit [-m “commit message”]
- 查看commit历史:git log
- 查看commit信息:git show <commit_hash>
- 切换到标签对应commit:git checkout <tag_name>
- 撤销commit:git reset <target_commit>*适用于本地,会重写项目历史;git revert
<recall_commit> *适用于远程,重新提交未变更的记录
git reset --soft <target_commit> 将 HEAD 移动到目标提交,但不更改暂存区和工作目录的内容
git reset --mixed <target_commit> 将 HEAD 移动到目标提交,同时将暂存区的内容撤销到指定提交,但保留工作目录的更改
git reset --hard <target_commit> 将 HEAD 移动到目标提交,并且彻底清除暂存区和工作目录中的更改,将它们恢复到目标提交时的状态
- 应用commit到当前分支:git cherry-pick <commit_hash1> <commit_hash2>
<commit_hash3>
五.分支
1.定义:
指向特定提交的引用,包含了该提交及其所有父提交的快照。
2.主分支(Master/Main):
主要分支,通常是稳定和可发布的代码
3.相关操作:
-
创建分支:git branch <new_branch>
-
查看分支:git branch *本地;git branch -r *远程
-
切换分支:git checkout <branch_name>;git switch <branch_name>(Git 2.23后)
-
创建并切换到分支:git checkout -b <new_branch> [<start_branch>]
扫描二维码关注公众号,回复: 17420398 查看本文章*可选是否基于某分支/跟踪某远程分支;
git switch -c <new_branch> [<start_branch>](Git 2.23后) -
合并当前分支到另一分支:git merge <target_branch>
-
复制分支到另一分支:git rebase <target_branch> [<move_branch>] *不指定即为当前分支
-
删除分支:git branch -d <branch_name> *已被合并分支,安全;git branch -D <branch_name>
*未被合并分支,强制
4.优势:
- 并行开发:允许开发者同时处理多个任务,不会互相干扰。
- 快速切换:使开发者能够灵活地切换到不同的工作上下文。
- 版本历史清晰:每个分支都有自己的提交历史,合并时也会保留信息。
六.标签
1.定义:
指向某个特定提交的不可变的引用,通常用于标识版本发布或其他重要的里程碑。
2.相关操作:
- 创建轻量标签:git tag <new_tag>
- 创建附注标签:git tag -a <new_tag> -m “Tag message”
- 列出标签:git tag (所有);git tag -l “v1.*” (可使用通配符指定特定)
- 查看标签信息:git show <tag_name>
- 删除标签:git tag -d <tag_name> *本地;git push origin --delete <tag_name>
*远程 - 上传标签:git push origin <tag_name> *指定;git push --tags *所有