==== git ~/.gitconfig 配置 =========
[user] name = xxx email = xxx@126.com [alias] co = checkout ci = commit st = status sh = stash br = branch pr = pull --rebase ruop = remote update origin --prune [merge] tool = vimdiff [color] status = auto branch = auto ui = auto [core] excludesfile = ~/.gitignore_global [difftool "sourcetree"] cmd = opendiff \"$LOCAL\" \"$REMOTE\" path = [mergetool "sourcetree"] cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" trustExitCode = true [commit] template = ~/.stCommitMsg [url "git://github.com"] insteadOf = https://github.com [pull] rebase = false [http] proxy = http://127.0.0.1:7890 [https] proxy = http://127.0.0.1:7890
.gitignore 当前目录下,添加忽略文件
# ~/.gitignore_global .DS_Store .idea .vscode
====== 配置操作无需密码登录:========
$> ssh-keygen -t rsa
Enter file in which to save the key (/u/kim/.ssh/id_rsa): 【回车】
Enter passphrase (empty for no passphrase): 【第一次密码】
Enter same passphrase again: 【第二次密码】
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
2. 接下来把密钥文件内容上传到的SSH帐号下:
local:~ yourname$ cat ~/.ssh/id_rsa.pub | ssh severname@host 'cat >> .ssh/authorized_keys
=============== git flow =======================
Git命令
1. 创建develop分支
首先给默认的master配备一个develop分支。让一个开发者在本地建立一个空的develop分支,然后把它推送到服务器。
$ git branch develop
$ git push -u origin develop
2. 小马和小明开始开发新功能
我们的故事从小马和小明要分别开发新功能开始。他们俩各自建立了自己的分支。注意,他们在创建分支时,父分支不能选择master,而要选择develop。
$ git checkout -b some-feature develop
他们俩都在自己的功能开发分支上开展工作。通常就是这种Git三部曲:edit,stage,commit:
$ git status
$ git add <some-file>
$ git commit
3. 小马把她的功能开发好了
在提交过几次代码之后,小马觉得她的功能做完了。如果她所在的团队使用“拉拽请求”,此刻便是一个合适的时机——她可以提出一个将她所完成的功能合并入develop分支的请求。
要不然,她可以自行将她的代码合并入本地的develop分支,然后再推送到中央仓库,像这样:
$ git checkout develop
$ git pull origin develop
$ git merge some-feature
$ git push origin develop
$ git branch -d some-feature # -D
拉取命令确保了本地的develop分支拥有最新的代码——这一步必须在将功能代码合并之前做!注意,新开发的功能代码永远不能直接合并入master。
必要时,还需要解决在代码合并过程中的冲突。
4. 小马开始准备一次发布
尽管小明还在忙着开发他的功能,小马却可以开始准备这个项目的第一次正式发布了。
类似于功能开发,她使用了一个新的分支来做产品发布的准备工作。在这一步,发布的版本号也最初确定下来。
$ git pull origin develop
$ git checkout -b release-0.1 develop
这个分支专门用于发布前的准备,包括一些清理工作、全面的测试、文档的更新以及任何其他的准备工作。它与用于功能开发的分支相似,不同之处在于它是专为产品发布服务的。
一旦小马创建了这个分支并把它推向中央仓库,这次产品发布包含的功能也就固定下来了。任何还处于开发状态的功能只能等待下一个发布周期。
5. 小马完成了发布
一切准备就绪之后,小马就要把发布分支合并入master和develop分支,然后再将发布分支删除。
注意,往develop分支的合并是很重要的,因为开发人员可能在发布分支上修复了一些关键的问题,而这些修复对于正在开发中的新功能是有益的。再次提醒一下,如果小马所在的团队强调代码评审(Code Review),此时非常适合提出这样的请求。
$ git checkout master
$ git pull origin master
$ git merge release-0.1
$ git push
$ git checkout develop
$ git pull origin develop
$ git merge release-0.1
$ git push
$ git branch -d release-0.1
发布分支扮演的角色是功能开发(develop)与官方发布(master)之间的一个缓冲。无论什么时候你把一些东西合并入master,你都应该随即打上合适的标签。
$ git tag -a 0.1 -m "Initial public release" master
$ git push --tags
6. 用户发现了一个Bug
当一次发布完成之后,小马便回去与小明一起开发其他功能了。突然,某个用户提出抱怨说当前发布的产品里有一个bug。为了解决这个问题,小马(或者小明)基于master创建了一个用于维护的分支。她在这个分支上修复了那个bug,然后把改动的代码直接合并入master。
$ git checkout -b issue-#001 master
$ git checkout master
$ git pull origin master
$ git merge issue-#001
$ git push
跟用于发布的分支一样,在维护分支上的改动也需要合并入develop分支,这一点是很重要的!因此,小马务必不能忘了这一步。随后,她就可以将维护分支删除。
$ git checkout develop
$ git pull origin develop
$ git merge issue-#001
$ git push
$ git branch -d issue-#001
Git flow 工作流
- 初始化: git flow init
- 开始新功能: git flow feature start some-feature
- 推送一个功能(也就是push到远程): git flow feature publish some-feature
- 获取新功能: git flow feature pull origin some-feature
- 完成一个新功能: git flow feature finish some-feature
- 开始一个发布版本: git flow release start RELEASE [BASE]
- 推送一个发布版本: git flow release publish RELEASE
- 完成一个发布版本: git flow release finish RELEASE
- 推送版本标签:git push --tags
- 开始一个Hotfix: git flow hotfix start VERSION [BASENAME]
- 发布一个Hotfix: git flow hotfix finish VERSION
# 这个命令会进行一些默认的配置,可以自动创建上面介绍的所有分支:master、develop、feature、relase、hotfix等分支。
$ git flow init
它会问你一组问题,但是你最好接受默认值:
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
完成后当前所在分支就变成 develop. 任何开发都必须从 develop 开始。
# 当进行新功能开发的时候:
$ git flow feature start some_awesome_feature
# 完成功能开发之后:
$ git flow feature finish some_awesome_feature
# 该命令将会把feature/some_awesome_feature合并到develope分支,然后删除功能(feature)分支。将一个 feature 分支推到远程服务器
$ git flow feature publish some_awesome_feature 或者 git push origin feature/some_awesome_feature
# 当你的功能点都完成时(需要发布新版本了),就基于develop创建一个发布(release)分支。
$ git flow release start v0.1.0
当你在完成(finish)一个发布分支时,它会把你所作的修改合并到master分支,同时合并回develop分支,所以,你不需要担心你的master分支比develop分支更加超前。
$ git flow release finish v0.1.0
当系统出现问题的时候,需要进行紧急修改的时候,就好基于master创建一个维护(hotfix)分支。
$ git flow hotfix start v0.1.0
当你在完成(finish)一个维护分支时,它会把你所作的修改合并到master分支,同时合并回develop分支。
$ git flow hotfix finish v0.1.0
Git 高级用法(慎用)
# 克隆项目
$ git clone https://xxxx@xxxx.com/xxxx.git
# 查看所有分支(本地及远程)
$ git branch –a
# 刷新本地仓库与远程仓库的保持这些改动的同步
$ git remote prune origin
# 删除远程分支
$ git push origin --delete some-feature
$ git push origin :some-feature
# 拉取远程分支数据,但不合并
$ git fetch origin
# 拉取、合并、重置
$ git pull --rebase origin develop
# 查看本地有哪些未提交的改动
$ git diff .
# 获取所有操作历史
$ git reflog
# 重置到上一个提交
$ git reset --hard HEAD~1
# 重置到某一个提交
$ git reset --hard <提交的哈希值>
# 重置到和远程develop分支一样
$ git reset --hard origin/develop
# Rebase 方法(慎用、慎用、慎用)
$ git rebase HEAD~3
# 保存所有本地未提交的文件
$ git stash save "日志信息"
# 列出所有的暂存项
$ git stash list
# 获取并删除暂存项
$ git stash apply stash@{1}
$ git stash drop stash@{1}
# 获取并删除 使用一条命令
$ git stash pop stash@{1}
相关推荐
Git flow 命令清单 提供了详细的命令,有图有真相
2. 功能开发:使用 `git flow feature start` 命令来创建新特性分支,开发完成后使用 `git flow feature finish` 命令来合并回 develop 分支。 3. 预发布:使用 `git flow release start` 命令来创建预发布分支,...
wget -q -O --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash ``` - 需要预先安装 `wget` 和 `util-linux` 工具。 - 更多安装方法可参考官方文档中的 ...
# 使用git flow命令创建 git flow feature start 20180820-story-view-999 # 或者使用原生命令 git checkout -b feature/20180820-story-view-999 master ``` 完成开发后,将feature分支推送到远程仓库: ```...
Git的安装包:Git-1.9.4-preview20140929.exe Git安装完成后,把getopt.exe、libiconv2.dll、libintl3.dll放到git的安装目录的bin目录下。 Git flow的安装与配置;
这些插件简化了许多常见的Git Flow命令,使得开发者能够更加专注于代码开发本身。 #### 六、最佳实践 - **避免直接在Develop分支上开发大型功能**,建议使用Feature分支。 - **定期同步远程仓库**,确保本地与远程...
返回Git Bash命令窗口,执行`git flow`命令,如果看到一系列帮助信息,则说明GitFlow已成功安装。 #### 三、GitFlow的使用与实践 一旦GitFlow安装完毕,就可以开始使用它来管理项目分支了。常见的操作包括: - ...
这个名为"gitflow相关文件.zip"的压缩包包含了Git Flow工作流的几个关键组件,用于确保在Windows环境下顺利运行Git Flow命令。下面将详细解释这些组件的作用以及如何在Git环境中设置它们。 1. **Git Flow**: Git ...
执行完成后,Git 的安装目录下会新增一个名为 `gitflow` 的文件夹。 ##### 3. 执行批处理命令 - **打开命令提示符**:按下 `Win + R` 键,输入 `cmd` 并按回车键打开命令提示符窗口。如果是 Windows 7 及以上版本...
例如,安装GitFlow工具可以通过以下命令完成: ```bash brew install git-flow ``` #### 四、GitFlow图形用户界面工具 除了命令行工具外,还有一些第三方工具提供了更友好的图形用户界面来支持GitFlow工作流,如...
"Git 项目管理 Git Flow" Git 项目管理是一种软件开发方法,它使用 Git 版本控制系统来管理项目代码。Git Flow 是一种流行的 Git 项目管理模式,旨在提供一套结构化的开发工作流程,以提高开发效率和质量。 主干...
Git的基本命令以及GitFlow工作流为团队协作提供了一套完整的工具和流程。正确使用这些命令可以帮助团队高效地管理工作流,提高代码质量和项目管理效率。通过合理的分支管理和交互,可以确保项目的稳定性和可维护性。
02★Git入门★理解版本管理的流程_Git_Flow
gitflow流程图
git_flow工具介绍 Gitflow工作流是经典模型,体现了工作流的经验和精髓。...Gitflow工作流没有用超出功能分支工作流的概念和命令,而是为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。
在Git-flow模型中,建议使用Git-flow命令扩展来辅助操作,它是一组脚本工具,通过这些命令可以更容易地管理不同类型的分支。 Git-flow适用于团队协作开发环境,它有助于理清不同阶段开发工作的边界,使项目的版本...
Git Flow Plus 4Idea是针对IntelliJ IDEA开发的一款高效分支管理插件,它的核心功能是基于Git Flow分支模型,旨在为开发团队提供一种结构化、可预测且易于维护的分支策略。Git Flow是一种广泛使用的Git分支管理模式...