Git使用
Git使用
泡泡安装和初始化配置
官网提供了各个电脑系统的安装教程,可按照具体需要进行安装。
安装完成之后,可查看版本信息:
1
git -v
配置用户名:
1
git config --global user.name "My Name"
配置邮箱:
1
git config --global user.email "mail@example.com"
配置默认分支名:
1
2git config --global init.defaultBranch main
一般我们设置main为默认主分支名
储存配置:
1
git config --global credential.helper store
查看配置信息:
1
git config --global --list
创建仓库
本地创建:
1
2
3git init [project-dir]
省略[project-dir]则在当前目录创建
克隆远程仓库:
1
git clone <url>
工作区域和文件状态
工作区域
工作区(Working Directory)
: 就是你在电脑里能实际看到的目录。暂存区(Stage/Index)
: 暂存区也叫索引,用来临时存放未提交的内容,一般在.git目录下的index中。本地仓库(Repository)
: Git在本地的版本库,仓库信息存储在.git这个隐藏目录中。远程仓库(Remote Repository)
: 托管在远程服务器上的仓库。 常用的有 GitHub、 GitLab、 Gitee。
文件状态
已修改(Modified)
:修改了但是没有保存到暂存区的文件。已暂存(Staged)
:修改后已经保存到暂存区的文件。已提交(Committed)
:把暂存区的文件提交到本地仓库后的状态。
文件状态描述字符:
未跟踪(Untracked)
: ??已添加暂存(Added)
: A已修改(Modified)
: M已删除(Deleted)
: D重命名(Renamed)
: R已更新未合并(Updated)
: U
查看各工作区域文件
查看工作区文件:
1
ls
查看暂存区文件:
1
2git status
列出未追踪,还未提交的新的或者修改的文件
查看仓库文件:
1
git ls-tree -r HEAD
查看所有被git跟踪的文件:
1
git ls-files
添加和提交文件
添加一个文件到暂存区:
1
2git add <file>
git add . 就表示添加所有文件到暂存区。
提交所有暂存区的文件到本地仓库:
1
git commit -m "message"
提交所有已修改的文件到本地仓库:
1
git commit -am "message"
移动一个文件到新的位置:
1
git mv <file> <new-file>
从工作区和暂存区删除一个文件, 并且将这次删除放入暂存区:
1
git rm <file>
从暂存区中删除文件,但是本地工作区文件还在:
1
git rm --cached <file>
恢复一个文件到之前的版本:
1
git checkout <commit-id> <file>
创建一个新的提交,用来撤销指定的提交,后者的所有变化将被前者抵消,并且应用到当前分支:
1
git revert <commit-id>
重置当前分支的HEAD为之前的某个提交, 并且删除所有之后的提交:
1
2
3
4
5git reset --mixed <commit-id>
--soft参数表示重置暂存区
--mixed参数表示重置工作区
--hard参数表示重置工作区和暂存区
撤销暂存区的文件,重新放回工作区(git add的反向操作):
1
git restore --staged <file>
查看提交历史:
1
git log --oneline
查看文件差异
比较工作区和暂存区:
1
git diff [file]
比较工作区和仓库区:
1
git diff HEAD [file]
比较暂存区和仓库区:
1
git diff --cache [file]
比较两个版本仓库:
1
get diff <commit-id> <commit-id> [file]
关联本地仓库和远程仓库
需要我们先创建好远程仓库,才能才能进行关联。
当我们没有本地仓库时:1
2
3
4git init
git commit -m "first commit"
git remote add origin <repo-url>
git push -u origin main
当我们已经有本地仓库时:1
2git remote add origin <repo-url>
git push -u origin main
查看当前仓库对远程仓库的别名和地址1
git remote -v
分支
查看所有本地分支:
1
2git branch
当前分支前面会有一个星号*,-r查看远程分支,-a查看所有分支。
创建一个新的分支:
1
git branch <branch-name>
删除一个已经合并的分支:
1
2git branch -d <branch-name>
-D 强制删除
切换到指定分支:
1
git {switch | checkout} <branch-name>
创建并切换分支:
1
git {switch | checkout} -b <branch-name>
修改分支名称:
1
git branch -m <name>
合并分支(注意所处分支位置):
1
2git merge --no-ff -m "message" <branch-name>
--no-ff参数表示禁用 Fast Forward模式, 合并后的历史有分支, 能看出曾经做过合并,而-ff参数表示使用 FastForward模式, 合并后的历史会变成一条直线。
查看分支图:
1
git log --graph --oneline --decorate --all
GitFlow
GitFlow 是一种流程模型,用于在Git上管理软件开发项目。
主分支(master/main)
:代表了项目的稳定版本,每个提交到主分支的代码都应该是经过测试和审核的。开发分支(develop):
用于日常开发。所有的功能分支、发布分支和修补分支都应该从开发分支派生出来。功能分支(feature):
用于开发单独的功能或者特性。每个功能分支都应该从开发分支派生,并在开发完成后合并回开发分支。发布分支(release):
用于准备项目发布。发布分支应该从开发分支派生,并在准备好发布版本后合并回主分支和开发分支。热修复分支(hotfix):
用于修复主分支上的紧急问题。热修复分支应该从主分支派生,并在修复完成后,合并回主分支和开发分支。
基于特征分支进行的开发
创建特征分支
1 | 更新 main 分支 |
1 | 创建特征分支 |
1 | 在中央版本库中维护特征分支(可选) |
在 main 分支上集成某一个特征
1 | 更新 main 分支 |
1 | 合并特征分支 |
1 | 回归测试后正确,进行提交 |
1 | 将 main 分支传递给中央版本库(github) |
删除或继续使用该特征分支
1 | 删除分支 |