gitcmd
git操作多个库
git push <REMOTE_NAME> <BRANCH_NAME>
# 1. 命令默认格式如上,origin是默认的remote_name,可以随便命名
# 2. remote name,默认是origin,可以自己指定
# 3. branch name,默认是当前分支master,可以自己指定
git push是git push origin master的缩写- git push/pull没有指定remote和branch时,默认从配置文件(
cat .git/config)读取 git remote add gitee gitee-url配置多个remote,同时管理多个版本库- blog.csdn.net/weixin_4128…
git-remote
# 1. 修改命令
git remote set-url gitee <url>
# 2. 删除/增加
git remote rm gitee
git remote add gitlab [url]
# 3. 修改配置文件
./git/config
git版本回滚
- git reset
- git revert 比较安全
master是默认的分支名,第一次git init系统自动生成的一个分支名,其他的分支可以自己指定;HEAD指向当前分支最新commit; 是个系统指针,默认的名字是HEAD^;
git reset
# 修改HEAD指向的某个commit_id,commit_id(HEAD^默认是最新的提交)之后的提交会丢失,分支已经push;
git reset --hard [commit_id|HEAD^];
# 分支没有push,只是commit
git reset [commit_id | HEAD^];
# 同步远程,同步远程要强推,因为本地落后remote
git push -f;
修改HEAD指针从最新的提交到指定的commit_id,中间的提交全部丢弃;
git revert
只撤销某个分支的某个commit_id。不操作HEAD指针,比较安全;
# 只撤销某个版本commit_id
git revert -n commit_id;
# 撤销commit_id后,生成会新的提交
git commit -m 'git revert commit_id';
# 直接push,因为`git revet`是生成新的commit_id
git push;
git revert -n默认当前最新的提交
git delete
- git branch -d
- git push origin -d
# 1.查看本地分支[远程分支|全部分支]
$ git branch [-r|-a]
# 2. 删除本地分支,删除远程分支
$ git branch -d branch-name
$ git push origin -d remote-branch-name
# 3. 批量本地删除
git branch | grep [-v] "bug" | xargs git branch -d
# 4. 批量删除远程分支,但远程分支需要删除origin/,origin是默认的remote名字,命令已经指定
git branch -r | grep [-v] "bug" |sed s/origin\\/// | xargs -I{} git push origin -d {}
# 5. bug_1: 在远程参数删除后本地引用错误,同步远程信息到本地
git fetch origin -p
gitignore
# 忽略 .a 文件
*.a
# 但否定忽略 lib.a, 尽管已经在前面忽略了.a 文件
!lib.a
# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO
# 忽略 build/ 文件夹下的所有文件
build/
# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt
# 忽略所有的.pdf文件在doc/ directory 下的
doc/**/*.pdf
git-tag
tag:项目管理的里程碑,tag某个完成的功能;存在2类:轻量tag,备注tag
# 1. 创建tag;分别创建带备注和不带备注的tag
$git tag tag_name
$git tag -a tag_name -m 'tag_ps'
$git tag -a tag_name commitId # 基于某个 commitid创建
# 2. 查看tag
$ git tag #所有tag
$ git tag -l '*tag_' #模糊匹配
$ git show tag_name #显示某个tag_name
$ git checkout tag_name # 切换分支
# 3. 推送remote
$ git push origin tag_name
$ git push origin --tags # 推送所有
# 4. 删除tag
$git tag -d yag_name
$git push origin -d tag tag_name # 删除远程tag
git branch manager
gitflow
版本号命名
主版本.次版本.修订版本.日期版本_希腊字符(base,alpha,beta,RC,release)
- 主板本:主要功能,架构,发版; ==> master柱分枝,m-版本使用tag
- 次版本:小功能,优化; ==> 对应dev-或者fea-分支
- 修订版本:bug修复 ==> 对应bug-分支
- 日期版本:修改日期; ==> 开发日期,或开发阶段可以根据个人喜好使用
- 希腊字符:版本的开发阶段 ==>开发阶段
- base:系统架构设计,API定义
- alpha: 开发完成,白盒测试完成
- beta:黑盒测试,bug修复完成
- RC: 基本无bug,正式版本
- release:交付用户的最终版
-
master: 产品发布分支 => 产品功能全部实现,在master对外发布.使用tag标记里程碑 -
develop:开发分支 =>克隆master分支,独立功能开发的主分枝; [多人合作的功能主分枝:dev-] -
feature:子功能临时分支=>克隆develop, 多人协同开发,开发完成合并到develop并删除当前分支[单人开发的分支:fea-] -
release:测试临时分支=> 克隆develop, 测试代码,小的bug在本分支直接修复,测试完成合并develop并删除当前分支[4,5可以使用:bug-,测试分支可以不用] -
bugfix | hotfix:bug分支=>主要修复master对外发布的bug, 修复完成合并master并删除当前分支
分支/tag的命名规则
- fea(分支说明fea|bug)/x-x-date(业务-时间)
分支命名
# dev/func/master
# dev/func/f1-1
# dev/func/f2-1
分支目录: /dev/func/是文件夹, fn是文件名(分支名),要避免冲突;否则cannot lock ref error
- 分支命名的规则: 推荐是用
-或/做分割,tag的版本号使用.- 分支命名: dev/功能/(master|date|f1)
- 代码版本命名