Git官网
Git常用命令及方法大全
-m含义从官网查看
git tag使用
比cv强的懒人工具. 分布式版本控制系统.
管理代码
Git下载
何种工具可以清楚查看git的提交路线. (vscode的git插件)
GitFlow工作流图解 *维护分支图
master 分支 // 上线主分支 在gitlab上叫production
release 分支 // 测试
develop分支 // 开发
hotfix/xx 分支 // 修xxbug,打补丁
feature/xx 分支 // 分支名要体现功能的作用
最终保留 master和develop分支其余删除.
master v0.1版本,先拉取最新代码,基于master最新时间点,切出开发分支develop,然后再从develop分支切出功能分支feature/xx,去开发功能,然后安排另外一个同事去开发另外一个feature/xx, 都是从开发分支去创建功能分支.
此时线上有一个bug,所以从master分支切出hotfix分支去修复,修复完成,回到master分支进行faster-forward合并,合并后打一个新的标签v0.2版本,让线上可以正常运作. 因为开发分支依旧是v0.1存在该bug,所以要去到develop分支上去合并hotfix这个分支,以解决了bug,然后develop分支就到了v0.2的版本.然后feature的人员继续工作,做完后,但是此时feature分支是v0.1版本,而hotfix没有体现到.因为最下面的feature分支,是没有在v1.0的路线上,上面的feature分支是在的,然后上面的feature分支合并到develop分支就会出现冲突,因为有bug出来,然后合并冲突,合并后,从develop上切出release分支去做测试,测试该bug是否影响.测试完成后分别合并到 master和develop分支上,且master因为有了一个新功能,所以打上一个新的tag v1.0. 然后下面的feature就继续,做完合并就可以了.
前提,安装好git bash、配置好SSH或使用公司的git.
创建文件夹,进入到文件夹右键后点击Git Bash Here,看到下图 Git的窗口,如果字体小可以右键上面的路径栏,找到option的font调字体
通过pwd 确认是否在对的路径,使用ls -al查看所有文件,如果没有就可以使用git init命令初始化本地仓库,再通过ls -al就可以看到有 .git的文件,说明初始化成功.
显示当前的Git配置
// 查看 user.name和user.email,为了方便以后工作交接
git config --list
// 设置提交代码时的用户信息
git config --global user.name "[name]"你的名称(不用引号)
git config --global user.email "[email address]" 你的邮箱
// 作为默认设置
git config --global push.default simple
// 如果没有仓库就需要git init,会看到master分支
$ git init
// 取回远程仓库的变化,并与本地分支合并,如果是git fetch 需要手动合并
// 从master拉取最新代码,并与本地分支合并,pull会自动合并
$ git pull [remote] [branch]
// 从master创建并切到dev分支
$ git checkout -b develop
// 从develop分支切除feature分支做功能开发,用英文描述
$ git checkout -b feature/addButton
// 在feature分支上创建并编辑文件推送并提交文件
$ vi feature.txt
$ git add . 或 git add -A
$ git commit -m 'create new file feature.txt'
// 查看工作区状态
git status
// 从master创建并切到dev分支
$ git checkout -b develop
// 查看当前分支的文件
$ ls
// 创建并编辑文件,进入到linux界面编辑后 :wq保存出来.
$ vi feature.txt
// 查看文件内容
$ cat feature.txt
// 查看工作区状态,会看到修改的文件
git stauts
// 推送到暂存区
$ git add <file1> <file2> // 多个文件
$ git add . 或 git add -A // 全部推送
// 突然要改,从暂存区撤会到工作区(会有提示)
$ git rm --cached feature.txt
// 如果不修改就提交到本地历史记录 -m 是备注
$ git commit -m 'create new file feature.txt'
// 再查看提交后的工作区状态,显示working tree clean
$ git status
// 一开始的master是 v0.1版本,打上tag
$ git tag -a v0.1 -m 'release 0.1'
// 以feature/xx分支为例子,此时feature/xx上有一个功能文件,已提交,而develop是没有的.
// 那么切换到develop后通过快速合并,将feature/addButton合并到develop分支.
$ git merge --no-ff feature/addButton
// 合并后会出现vi界面显示合并成功 :q 即可
// 查看合并后的文件即可,合并成功后就不需要再提交了.
$ ls
// 无论要改什么都要拉最新代码.
git pull remote master
// 基于master切出hotfix/xx分支
// 再hotfix/xx修改完成后,要分别合并到master和develop分支
// * 一定要提交后再去合并,如果中途修bug被叫去做别的.先提交备注合并.
// 要合并就切换到master
$ git checkout master
$ git merge --no-ff hotfix/button_invaild
// 还要合并一份到develop分支
$ git checkout develop
$ git merge --no-ff hotfix/button_invaild
// 合并完
// 因为feature/addButton也合并到了develop上.
// develop 也合并到了master上
// 然后就删除其他分支
$ git branch -d feature/addButton
$ git branch -d hotfix/button_invaild
// 查看分支,剩下master和develop分支.
$ git branch
// 从master切到dev,从dev分支切到feature/add_scorll分支
$ git checkout -b develop
$ git checkout -b feature/add_scorll
// 再feature/add_scorll分支去添加推送提交
feature_scorll.txt
// 此时线上master有bug,切到master后切出hotfix/fixbug分支
$ git checkout master
$ git checkout -b hotfix/fixbug
// 同时修改了 feature/add_scorll分支,并提交到本地历史
...
$ git commit -m 'fixbug'
// 为了让线上能够继续运作,就需要合并到master主分支并打上tag
$ git checkout master
$ git merge --no-ff hotfix/fixbug
$ git tag -a v0.2 -m 'master0.2'
// 然后develop分支也需要合并,但是此时修改了同一个文件,所以接下来的合并会产生冲突,在dev分支上分别合并feature/add_scorll和hotfix/fixbug分支
$ git merge --no-ff feature/add_scorll
$ git merge --no-ff hotfix/fixbug
// (develop|MERGING) 状态改变
需要修复合并冲突后直接commit才能修复,然后其他两个分支的文件也依旧.只是在dev上做了冲突合并.
// 合并后就需要做测试,看是否会影响,切出release分支
$ git checkout -b release
// 测试成功后分别提交到master打上tag和dev