TortoiseGit操作

git规范

版本管理中必须遵循的规则

  • 每个提交必须包含清晰,有意义的Commit Message,零碎的提交在push前适当使用rebase整理
  • 开发完成后只允许push到个人分支,通过merge request合并到master-*,develop-*,feature-*,hotfix-*,不允许直接push到master-*,develop-*,feature-*,hotfix-*
  • 每次代码变动均需要包括二次检查,即push前自测,merge的交叉检查
  • 测试环境部署只能使用master-*,develop-*,feature-*,hotfix-*分支,上线部署只能使用master-*分支,镜像tag和版本库tag一一对应
  • 冲突前置原则,通过良好的设计和合理的工作安排,能在个人分支解决的冲突不要蔓延feature-*,能在feature-*解决的不延伸到master

分支说明

master*

功能:存储正式发布的历史

限制:发布前由团队负责人合并,其他成员没有合并权限

develop

功能:功能集成,测试

限制:测试前从feature合并,可随时合并,也可以限制经过pull request来合并

feature-*

功能:每个功能的独立分支,该功能的修改都在这个分支完成,然后合并到develop测试

限制:上线后删除

hotfix-*

功能:修复线上bug的临时分支

限制:完成后合并到master和deveop然后删除

用户名-*

功能:代码开发完成的推送服务端的分支

命名规则:用户名-目标分支,例:zhangsan-feature-*

Commit Message参考规范

message规范

每次提交,Commit message 都包括三个部分:type/scope/subject

格式为:<type>(<scope>): <subject>

type

用于说明 commit 的类别,只允许使用下面7个标识。

  • feat:新功能(feature)

  • fix:修补bug

  • docs:文档(documentation)

  • style: 格式(不影响代码运行的变动)

  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)

  • test:增加测试

  • chore:构建过程或辅助工具的变动

如果type为featfix,则该 commit 将肯定出现在 Change log 之中。其他情况(docschorestylerefactortest)由你决定,要不要放入 Change log,建议是不要。

scope

scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

例如在Angular,可以是$location$browser$compile$rootScopengHrefngClickngView等。

如果你的修改影响了不止一个scope,你可以使用*代替。

subject

subject是 commit 目的的简短描述,不超过50个字符。

TortoiseGit操作

项目设置多个远端库


克隆项目的dev分支

也可以切换分支

重置到某个版本

git reset --hard



 重置到指定的版本

 新增的文件添加到忽略列表,不是.gitignore中的忽略列表

Git 分支操作命令

#查看远程分支
git branch -r 

#查看本地分支
git branch 

#切换至某分支
git checkout master

#把其他某个分支,合并入当前分支.
git merge branchName

#删除本地dev分支
git branch -D dev

专业的分支管理

apt-get install git-flow

初始化: git flow init

开始新Feature: git flow feature start MYFEATURE

Publish一个Feature(也就是push到远程): git flow feature publish MYFEATURE

获取Publish的Feature: git flow feature pull origin MYFEATURE

完成一个Feature: git flow feature finish MYFEATURE 分支的内容就会合并到develop,并且删除feature/name分支

避免git clone和push时每次都需要输入用户名和密码

//git remote add origin https://username:password@xxx.git 
git clone https://username:password@xxx.git

Git源地址

#查看源地址
git remote -v

#替换地址
git remote set-url origin https://xxx@github.org/XX.git

#添加源
git remote add other https://xxx@github.org/XX.git 

#删除源
git remote remove other

#拉取指定源的master分支
git pull --no-rebase other master

#推送 git pull 源 本地分支:远端分支
git push origin dev:dev

Git-将指定文件回退到指定版本

1.首先查看文件的历史版本。

git log /path/to/file

 2.找到你想要还原的版本。如 

commit 052c0233bcaef35bbf6e6ebd43bfd6a648e3d93b 
Author: panww <panww@gmail.com> 
Date: Wed Nov 8 11:48:31 2017 +0800 

 3. 将文件还原到你想要还原的版本。$ git checkout ${commit} /path/to/file。即

$ git checkout 052c0233bcaef35bbf6e6ebd43bfd6a648e3d93b /path/to/file

查看状态(冲突文件 未提交 修改列表)
 

git status

还原本地修改

git checkout .
git checkout a.js

git push --all 当遇到这种情况就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要 -all 选项
git push --tags 不会推送分支,如果一定要推送标签的话那么可以使用这个命令


如何合并多次提交纪录
每一次功能开发, 对多个 commit 进行合并处理。
这时候就需要用到 git rebase -i 了。这个命令没有太难,不常用可能源于不熟悉,所以我们来通过示例学习一下。

git commit –amend
在使用git作为版本控制的时候,偶尔会出现这种情况:对当前的修改用git commit -m'xxx'做一次commit,并记录一些commit log。但是随即又因为某些原因对工程做了修改,而这次修改逻辑上属于上次的commit的内容,此时再提交一些commit显然不合适,这时候我们需要有一种命令能将本次修改的内容合并到上一次的commit中,这样本次的修改和上一次的commit中的修改就逻辑上属于同一个commit了。

Git 中的stash功能

stash可以把当前工作现场“保存”起来,等以后恢复现场后继续工作

当你的开发进行到一半,但是代码还不想进行提交 ,然后需要同步去关联远端代码时.如果你本地的代码和远端代码没有冲突时,可以直接通过git pull解决.但是如果可能发生冲突怎么办.直接git pull会拒绝覆盖当前的修改.遇到这种情况,需要先保存本地的代码,进行git pull,然后再pop出本地代码

git stash save "临时"     #添加带备注的stash
git stash list            #缓存的列表
git pull 
git stash drop stash@{0}  #删除单个缓存
git stash apply           #与git stash pop相似,但他不会在堆栈中删除这条缓存,适合在多个分支中进行缓存应用

解决git revert后再次merge代码丢失问题

核心思想就是对 revert 的那次提交记录再次进行 revert(有点像负负得正的意思),下面开始实验。

 然后切换回 dev 分支,将revert_tmp 这个分支 merge 到 dev 分支上。

# 切换到master分支
git checkout master
git pull
# 基于master拉出一个分支 revert_tmp
git checkout -b revert_tmp

# 将之前git revert那次commit再次revert(commit号从git log可以查到)
git revert f5c3b544164eec662ea6914d6bd19aedf46874f8
git checkout dev
git merge revert_tmp
git commit -m "revert"
git push

将 dev 分支推送到远程后,重新提交对 master 的 merge 申请

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值