申明:资料来源于网络及书本,通过理解、实践、整理成学习笔记。
分支定义
主分支:master
开发分支:develop
功能分支:feature
预发布分支:release
修补bug分支:fixbug
feature、release、fixbug这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有Master和Develop。
分支的使用规划
master:主分支(远程记录,管理员提交),只用来标记客户使用的发行版,当develop中的一次提交测试完成后,正式给客户使用时,将开发分支合并到主分支并进行标记。
develop:开发分支(远程记录,开发人员提交),记录的主干,功能的开发并不在这里完成。
feature: 用于功能开发(本地临时记录),在这里我们是一个开发人员完成一个功能开发。
开发时先从 develop 分支创建一个以 “功能” 命名的临时分支,一个功能开发完成后合并到 develop 分支,并删除这个临时分支(必须要删除),再次从 develop 分支创建新的临时分支进行下一个功能开发。为什么这样做,等你会用分支树,并需要在以后翻代码时就知道了。
一、提交开发代码
- 编辑及新建文件
- 查看文件状态:git status
- 添加与更新暂存区的文件:git add .
- 将暂存区的文件向仓库中提交:git commit -m “说明信息”
- 查看提交记录:git log
- 查看命令历史:git reflog
Administrator@PC202008061317 MINGW64 /c/www/git-demo (feature)
$ git status
On branch feature
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@PC202008061317 MINGW64 /c/www/git-demo (feature)
$ git add .
Administrator@PC202008061317 MINGW64 /c/www/git-demo (feature)
$ git commit -m "完成第一个功能"
[feature 9d5417c] 完成第一个功能
1 file changed, 2 insertions(+), 1 deletion(-)
Administrator@PC202008061317 MINGW64 /c/www/git-demo (feature)
$ git log
commit 9d5417cd8a21a6e5658cdda76e21558e5219f9a0 (HEAD -> feature)
Author: vteetty <vteetty@gmail.com>
Date: Tue Feb 23 11:11:02 2021 +0800
完成第一个功能
commit b1aa32a291e4460d9e100372f5b169c0e147ca53 (origin/develop, develop)
Author: vteetty <vteetty@gmail.com>
Date: Tue Feb 23 10:34:32 2021 +0800
init develop commit
commit ff445e71fd22479f3b2e63b921f074152518ee50 (origin/master, origin/HEAD, master)
Author: vteetty <vteetty@gmail.com>
Date: Tue Feb 23 10:29:25 2021 +0800
init master commit
Administrator@PC202008061317 MINGW64 /c/www/git-demo (feature)
$ git reflog
9d5417c (HEAD -> feature) HEAD@{0}: commit: 完成第一个功能
b1aa32a (origin/develop, develop) HEAD@{1}: checkout: moving from develop to feature
b1aa32a (origin/develop, develop) HEAD@{2}: checkout: moving from master to develop
ff445e7 (origin/master, origin/HEAD, master) HEAD@{3}: checkout: moving from develop to master
b1aa32a (origin/develop, develop) HEAD@{4}: checkout: moving from master to develop
ff445e7 (origin/master, origin/HEAD, master) HEAD@{5}: clone: from git@gitee.com:vteetty/git-demo.git
Administrator@PC202008061317 MINGW64 /c/www/git-demo (feature)
$
二、相关操作
查看文件状态
git status
- 新文件是否加入暂存区
- 加入暂存区的文件是否发生改变 ,改变的文件需要更新到暂存区中才能正确提交
添加与更新暂存区的文件
git add "文件列表"
git add .
将暂存区的文件向仓库中提交
git commit -m "说明信息"
查看提交记录
git log
git log --pretty=oneline --abbrev-commit
git log --oneline
git log --graph --oneline --all
git log --graph --oneline --all --decorate --simplify-by-decoration
--pretty=oneline 参数一行显示,只显示哈希值和提交说明
--abbrev-commit 参数仅显示 SHA-1 的前几个字符,而非所有的 40 个字符
--oneline 此一条替代 "--pretty=oneline" "--abbrev-commit" 两条
--graph 参数可以看到分支合并图,有时候需要与参数 --all 一起用才看得到图形
--all 表示显示所有的branch,这里也可以选择,比如我指向显示分支ABC的关系,则将--all替换为branchA branchB branchC
--decorate 标记会让git log显示每个commit的引用(如:分支、tag等)
--simplify-by-decoration 只显示被branch或tag引用的commit
查看命令历史
git reflog
当恢复特定提交版本后,使用查看“git log”命令就看不到此版本之上的提交记录了,此时使用此命令可以看到所有的命令记录,以便确定要回到未来的哪个版本。