Git相关的一些操作

初始化项目到提交至远程仓库

cd wcms                 # 进入项目目录
git init # 初始化
echo "# wcms" >> README.md
git add README.md
git commit -m "first commit"
git remote add origin git@git.coding.net:pengec/wcms.git # 添加远程主机
git push -u origin master # 推送到远程仓库

修改远程分支的地址

git remote set-url origin <新地址>

修改远程主机的名称

git remote rename <原主机名> <新主机名>

删除一个分支

git branch -D <name> ## 删除本地name分支
git push --delete origin <name> ## 删除远程name分支

git提供了一个stash功能

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

git stash  # 把当前修改的储存起来 每次执行都是一次存储
git stash list #可以查看stash到哪儿了
git stash apply stash@{0} # 可以恢复你想恢复的哪一次改动, stash内容并不删除
git stash drop stash@{0} # 删除stash 内容
git stash pop stash@{0} # 恢复并删除stash@{0}

合并单个分支

先使用git log 查看有哪些提交,确定需要合并的commit,比如 将develop62ecb3合并到master,如下:

git checkout master  
git cherry-pick 62ecb3

合并多个分支

在一些特殊情况下,合并单个commit并不够,你需要合并一系列相连的commits。这种情况下就不要选择cherry-pick了,rebase 更适合。假设你需要合并feature分支的commit76cada ~ 62ecb3 到master分支。
首先需要基于feature创建一个新的分支,并指明新分支的最后一个commit:

git checkout -bnewbranch 62ecb3

然后,rebase这个新分支的commit到master(–ontomaster)。76cada^ 指明你想从哪个特定的commit开始。

git rebase --ontomaster 76cada^

删除在本地有但在远程库中已经不存在的分支

git remote prune origin

优雅撤销git的提交

git revert #sha   ##这个命令把#sha版本的改动回退并commit
git push ##不用删除远程分支 比较优雅

暴力撤销git的提交(不留痕迹)

git reset --hard #sha   ##这个命令把退回到#sha提交节点上
git push --force

gitflow 发版流程

初始化操作

采用gitflow 进行版本管理时,首先应该在项目根目录下执行

git flow init

发布版本

前言: 博主在develop分支开发 结合maven构建项目(其他情况,可自行百度

  • 首次发版
    如果一个版本开发完成, 可以直接执行以下命令
git flow release start 1.0.0  # 基于 develop分支 1.0.0-SNAPSHOT
mvn versions:set -DnewVersion=1.0.0 # 基于release/1.0.0 分支
mvn versions:set -DnewVersion=1.0.1-SNAPSHOT # 基于develop分支,下个开发版本
  • 非首次发版(如即将发布1.0.1)
git flow release finish 1.0.0     # finish 1.0.0 需要打标签,及版本号
git push --tag # 推送标签
git push --delete origin release/1.0.0 # 删除远程仓库里的release/1.0.0
# 以下 和首次发版一样
git flow release start 1.0.1
mvn versions:set -DnewVersion=1.0.1
mvn versions:set -DnewVersion=1.0.2-SNAPSHOT
坚持原创技术分享,您的支持将鼓励我继续创作!