参考:
零零散散的一些记录,仅供参考
1.Git 常用操作命令
- 创建分支:
git checkout -b dev // 创建并切换 - 切换分支
git checkout master // 切换到主分支 - 查看当前分支
git branch / git branch -r 查看远程分支
你可以通过"git remote"命令自由定义额外的“远程名称”。但“git clone”命令默认使用的是“origin”这个名称(origin 表示主机,下面fork时会有介绍 )。 - 合并分支
git merge dev // 命令用于合并指定分支到当前分支 - 删掉指定分支
git branch -d dev
git push origin :dev2 // 删除远程分支 《不要用》
git push origin dev // 提交 : 注意冒号 - 查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit - checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
git checkout -b dev origin/dev
2.小工程的Git 分支管理策略
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
和小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
分支是如何存的
- .git/refs/head/[本地分支]
- .git/refs/remotes/[正在跟踪的分支]
合并分支时:请注意--no-ff参数,表示禁用Fast forward,Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息)
git merge --no-ff -m "merge with no-ff" dev 这里是双引号
2.1 Bug分支管理流程
- 保存工作现场:
git stash - 确认哪个分支上有bug,如:master,马上创建临时分支:
git checkout master // 切换到master分支
git checkout -b issue-101 // 创建解决bug分支 issue-101 - 修复bug,切换到主分支,完成合并,并删除 issue-101分支
git checkout master
git merge --no-ff -m 'merged bug fix 101' issue-101 // 合并
git branch -d issue-01 // 删除bug分支
git checkout dev // 干活去
git stash pop
2.2 Feature 新功能分支
类似于bugs分支管理流程
- 创建新的分支,并着手新功能开发
git checkout -b feature-vulcan
2.切换到dev,准备合并
3. git tag 命令
- 打TAG:
git tag -a 标签名称 -m "标签注释" - push标签
git push origin 标签名称
4. git fetch 命令
- git fetch一般流程
- git fetch 只会将本地库所关联的远程库的commit id更新至最新
比如,取回origin主机的master分支。 - git fetch origin master
拉取远程 master 分支的更新,注意不会合并,只是更新.git/remotes/下相关的文件; - git fetch origin
拉取远程 origin下的所有分支的更新,主要与上面的命令的区别fetch origin master
- git diff master origin/master
本地分支master和远程分支master的差异 - .cat .git/FETCH_HEAD
可以看到其状态,若都是 not-for-merge 则不会有接下来的 merge 动作 - git merge origin/dev
将本地当前
的分支与远程远程dev进行合并;
完整写法:(git merge origin/dev dev
) 远程分支 origin/dev merge 到本地 dev 分支;
- git fetch 只会将本地库所关联的远程库的commit id更新至最新
- 将本地修改推送到远程分支
-
git push origin dev
将本地的dev分支推送到origin主机的dev分支。如果dev不存在,则会被新建;如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支;
git push origin :master 等同于 git push origin --delete master
-
git push origin dev:dev_by
远程分支名称跟本地不一样的处理,dev_by 为远程分支名
-
5. git fork 后的操作 (github,gitlab)
fork 就是将别人仓库的fork到自己的仓库中,如果需要与上游仓库进行同步,则需要在本地建立2个remote:1个自己库的(
origin
自己的主机),一个上游库的(upstream
主机);
一般操作流程与相关命令
- git remote -v
查看关联的远程仓库;verbose - git remote add upstream http://git.xxx.xxx/xxx.git
将本地分支关联到上游远程 upstream,为别名,跟origin类似
这样通过 git remote -v 可查看所有的远程分支 - git fetch upstream dev
fetch upstream的dev分支 - git fetch upstream
fetch upstream 上的所有分支 - git merge upstream/dev
merge upstream/dev 到本地当前分支
完整写法如:(git merge upstream/dev dev) // merge 到本地 dev 分支 - git push origin dev:dev
将当前dev分支内容push到origin下的dev分支 - git remote set-url origin git@git.xxx.xx.git
用来别名来修改对应的远程git地址 - 全部操作完毕后, 在网站上使用 new request merge 向上游分支发起
pull request
请求;
6.Rebase操作
- git pull --rebase
注意:一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作
https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/rebase
网友评论