Git 工作流描述了如何在团队中使用 Git 进行协作。不同的团队和项目可能会选择不同的工作流,但以下是一些常见的 Git 工作流:
main
或master
)。以下是一个简单的集中式工作流(Centralized Workflow)流程图:
+------+
| |
| 主分支 |
| |
+---+--+
|
+----+ | +----+
| | | | |
| 开发者A +-----> | 开发者B |
| | | | |
+----+ | +----+
|
+---+--+
| |
| 主分支 |
| |
+------+
在集中式工作流中:
master
或main
)克隆仓库。这种工作流确保了所有开发者都在一个单一的分支上工作,简化了管理,但也可能导致冲突,特别是在多人同时工作时。如果两个开发者几乎同时进行更改并尝试推送它们,那么可能需要一些冲突解决策略。
绘制“功能分支工作流”(Feature Branching)流程图需要展示主要分支、如何从主分支切出功能分支、开发、测试,以及如何将功能分支合并回主分支的流程。
下面是一个简单的示意图:
+----------------+ +-------------------+
| | | |
| 主分支 +<----+ 功能分支1 |
| (Main Branch) | | (Feature Branch1) |
| | | |
+----+-----+-----+ +-------------------+
|
| +-------------------+
| | |
+<--+ 功能分支2 |
| | (Feature Branch2) |
| | |
| +-------------------+
|
| +-------------------+
| | |
+<--+ 功能分支3 |
| | (Feature Branch3) |
| |
+-------------------+
步骤说明:
注意:在实际操作中,可能还需要其他步骤,如解决合并冲突、代码审查等。
main
或master
保存稳定的发布版本。develop
分支用于日常开发。develop
分支创建并合并回develop
。release
分支用于准备新的产品版本。hotfix
分支用于快速处理生产中的问题。Gitflow 工作流是一个 Git 工作流设计,它定义了一个围绕项目发布的严格分支模型。以下是 Gitflow 工作流的简化版本的流程图:
这个流程图描述了 Gitflow 工作流中的主要分支和它们之间的交互。
开发者从develop
分支开始,创建一个新的feature
分支来开发新功能。一旦功能完成,它会被合并回develop
分支。
当准备进行一个新的发布时,从develop
分支创建一个release
分支。
一旦发布准备好,release
分支会被合并到master
和develop
分支。
如果生产中发现了错误,可以从master
分支创建一个hotfix
分支,修复错误后,将其合并回master
和develop
分支。
git init
git add -A
git commit -m"init"
git tag v1.0.0
git remote add origin git@gitee.com:zhang_renyang/tmall.git
git push origin master
git push origin v1.0.0
git clone git@gitee.com:zhang_renyang/tmall.git
cd tmall
git branch
git checkout master
git pull
git branch develop
git checkout develop
或
git checkout -b develop
git push -u origin develop
git branch feature/feature1
git branch feature/feature2
git push origin feature/feature1
git push origin feature/feature2
git clone git@gitee.com:zhang_renyang/tmall.git
cd tmall
git branch -r
git checkout -b feature1 origin/feature/feature1
touch feature1.txt
git add -A
git commit -m"完成feature1"
git clone git@gitee.com:zhang_renyang/tmall.git
cd tmall
git branch -r
git checkout -b feature1 origin/feature/feature2
touch feature2.txt
git add -A
git commit -m"完成feature2"
git checkout -b develop origin/develop
git pull
git checkout -b release/v1.1.0
git push origin release/v1.1.0
git clone git@gitee.com:zhang_renyang/tmall.git
git checkout -b release/v1.1.0 origin/release/v1.1.0
合并release/v1.1.0
分支到 master
git checkout master
git pull
git tag v1.1.0
git push origin v1.1.0
git checkout master
git pull origin master
git checkout -b hotfix/hotfix1
touch hotfix1.txt
git add -A
git commit -m"fix(): add hotfix1.txt"
git push origin hotfix/hotfix1
git checkout master
git pull origin master
git tag v1.1.1
git push origin v1.1.1
git branch -D 分支名称
git branch -D hotfix/hotfix1
git branch -D release/v1.1.0
git branch -D feature/feature1
git branch -D feature/feature2
git push origin --delete 分支名称
git push origin --delete hotfix1
git push origin --delete v1.1.0
git push origin --delete feature1
git push origin --delete feature2
Git是一个分布式版本控制系统。下面是一些基本概念和命令:
仓库 (Repository): 一个存放项目代码的地方。
提交 (Commit): 将代码的更改保存到仓库。
分支 (Branch): 代码的不同版本。默认主分支名为main
或master
。
克隆 (Clone): 复制仓库到本地。
拉取 (Pull): 从远程获取最新的更改。
推送 (Push): 将本地的更改发送到远程仓库。
合并 (Merge): 将一个分支的更改合并到另一个分支。
常用命令:
git init
: 初始化一个新的 Git 仓库。git clone [url]
: 克隆一个远程仓库。git status
: 查看当前更改的状态。git add [file/directory]
: 将文件/目录添加到暂存区。git commit -m "message"
: 提交更改。git push [remote] [branch]
: 推送更改到远程仓库。git pull [remote] [branch]
: 从远程仓库拉取更改。git branch
: 查看所有分支。git checkout [branch]
: 切换到其他分支。git merge [branch]
: 合并分支。SourceTree是一款流行的图形界面 Git 和 Mercurial 版本控制工具。它为用户提供了一个直观的界面,使得版本控制操作变得更加简单和直观,而无需依赖命令行。
以下是 SourceTree 的基本功能和使用:
仓库管理:
提交:
分支和标签:
合并和变基:
拉取和推送:
历史和日志:
冲突解决:
子模块和子仓库:
图形界面:
其他功能:
如 stash、cherry-pick、回滚等高级功能都可以在 SourceTree 中轻松完成。
闪退解决方案
删除 C:\Users\zhangrenyang\AppData\Local\Atlassian\SourceTree.exeUrl***
在git push
命令中,-u
选项是--set-upstream
的简写。使用-u
或--set-upstream
选项时,它会做以下两件事:
推送分支到远程仓库:它会将当前分支推送到指定的远程仓库。
设置上游跟踪:除了推送分支,它还会设置远程分支为当前分支的上游(或称为"跟踪")分支。这意味着,在未来,当你从这个分支执行git pull
或git push
(不带其他参数)时,Git 会知道默认从哪个远程分支获取或推送更改。
设置上游跟踪分支的好处是,它简化了日常的 Git 操作。例如,如果你已经设置了上游跟踪分支,那么下次你想从远程仓库更新当前分支时,只需简单地运行git pull
,而无需指定远程仓库和分支名。同样,当你想推送更改时,只需运行git push
。
总之,-u
选项在推送分支的同时,还帮助你设置上游跟踪,从而简化了后续的 Git 操作。
SemVer
是“Semantic Versioning”的缩写,也就是“语义化版本”。它是一个版本命名规范,旨在帮助开发者更容易地理解软件之间的依赖关系和兼容性。
按照 SemVer 的规范,一个版本号应该由三部分组成:MAJOR.MINOR.PATCH
,例如2.5.0
。每一部分的意义如下:
除了主要的版本号,SemVer 还允许在版本号后面添加标签和构建元数据。例如:1.0.0-alpha+20130313144700
其中:
alpha
是一个预发布版本标签。20130313144700
是构建元数据,这些数据是忽略在版本比较中的。为什么使用 SemVer?
总结:SemVer 是一个版本命名规范,旨在清晰、系统地表示版本信息,使得开发者和用户都可以更容易地理解软件版本之间的关系。