《 imooc-git入门》 |
一、git操作
1、git查状态
(1)git status
git status // git状态
git show 9d461ad1d75b13c9be3efc75f8344babe6d8940e // 看某次修改的具体内容
(2)git log
git log // 近期提交的版本记录
git log --stat // 近期提交的版本记录,及修改的文件
2、git修改远端地址
(1)直接修改:
git remote set-url origin xxxxx.git
(2)先删后加 :
git remote rm origin
git remote add origin xxxxx.git
2、提交
git status
git checkout feature/yanqm // 确定分支,如果不是要操作的分支,则检出要操作的分支
git add index.html // 提交到暂存区
git commit -m "初次提交" // 提交到本地仓库。 -m参数表示后面可以直接跟提交信息
git push // 提交到远程分支
3、回滚
git log // 得到commit号,如果要退出log,则按英文状态下的q
git reset --hard commit号 // 本地仓库回滚(强制回滚)
git rm index.html // 本地文件清空
git commit -m "删除了index.html" // 暂存区和本地仓库文件清空
(2)未提交之前,恢复之前的版本
①
如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉
②
我可以按以前的方法直接恢复到上一个版本。使用 git reset --hard HEAD^
③
git checkout -- file 可以丢弃工作区的修改
(3)
假如现在我对readme.txt添加一行 内容为6666666666666,我git add 增加到暂存区后,接着添加内容7777777,我想通过撤销命令让其回到暂存区后的状态。
git checkout – readme.txt 中的 – 很重要,如果没有 – 的话,那么命令变成创建分支了
4、分支合并
(1)合并全部
修改了feature/yanqm,将修改的结果合并到feature/chint-develop
用merge
git checkout feature/chint-develop
git pull origin feature/chint-develop
git merge feature/yanqm // 然后会有merge信息,按esc,然后输入:wq保存
git push origin feature/yanqm
(2)合并部分
修改了feature/yanqm的两处,分别为a、b、c,将其中两处b、c提交到另一分支feature/chint-develop
用cherry-pick
①git checkout feature/yanqm
②git log
③复制要的commit号,b为909b4a13cf3fc702aec9edace4a36f4e4d61fa71,c为c39d50cfde90d3614c0c73da5d74684da55acf40
④git checkout feature/chint-develop
⑤git cherry-pick 909b4a13cf3fc702aec9edace4a36f4e4d61fa71 c39d50cfde90d3614c0c73da5d74684da55acf40 // 后两串分别为b、c的commit号
// commit-hash使用空格分割, commit-hash最好按提交时间先后排列, 即最先提交的commit放在前面.
⑥git push
cherry-pick 过程中也是可能会产生冲突的,解决冲突后先 add,然后使用 git cherry-pick --continue。
如果想放弃 cherry-pick,使用 git cherry-pick --abort
5 基于原有分支创建新分支
git checkout -b develop dice-origin/feature/add_company // 基于来源与dice-origin的feature/add_company创建develop分支
git push dice-origin develop // 推送到远端
6、让某分支基于另一分支
git checkout master
git reset --hard feature/add_company
git push origin master --force
5、冲突解决
本地修改冲突的地方
然后按提交的方式提交代码,add commit 等
6、查看分支
git branch // 查看本地所有分支
git branch -r // 查看远程所有分支
git branch -a // 查看本地和远程的所有分支
git log dice-origin/feature/chint-develop(分支名) // 查看某个分支近期的提交
7、新建分支
(1)新建分支
git branch <branchname> // 新建分支
(2)基于原有分支创建新分支
cd ~/git/asgard-frontend
git status // 获取id号:dfa6
git checkout -b 新分支名 要复制的id号 // git checkout -b feature/add_company dfa6
8、删除分支
(1)删除本地分支
git branch -d <branchname> // 删除本地分支
git branch -d -r <branchname> // 删除远程分支,删除后还需推送到服务器
git push origin:<branchname> // 删除后推送至服务器
(2)删除远端分支
git branch -d -r <branchname> // 删除远程分支,删除后还需推送到服务器
git push origin:<branchname> // 删除后推送至服务器
可以简写成如下方式:
git push origin -d <branchname> // 删除远端分支(单个)
9、重命名分支
git branch -m <oldbranch> <newbranch> // 重命名本地分支
/**
*重命名远程分支:
*1、删除远程待修改分支
*2、push本地新分支到远程服务器
*/
10、git远端信息
git remote -v // 查看远端信息,fetch下来的地址,push上去的地址。得到信息webstorm-vcs-git-remotes的信息
11、git中一些选项解释:
简写 | 全称 | 释义 |
---|---|---|
-f | –force | 强制 |
-d | –delete | 删除 |
-D | –delete --force | |
-m | –move | 移动或重命名 |
-M | –move --force | |
-r | remote | 远程 |
-a | –all | 所有 |
12、代码上传命名规范
未看完:《 imooc-版本管理工具介绍-git篇》 |
地址:http://www.imooc.com/learn/208
一、多人合作经验
1、多用客户端和工具,少用命令行,除非是在linux服务器上直接开发。
2、每次提交前,diff自己的代码,以免提交错误的代码。
3、下班回家前,整理好自己的工作区。
4、并行的项目,使用分支开发。
5、遇到冲突时,搞清楚冲突的原因,千万不要随意丢弃别人的代码。
6、产品分布后,记得打tag,方便将来拉分支修改bug。
未看完:《imooc-版本控制入门 – 搬进 Github》 |
地址:http://www.imooc.com/learn/390
暂无
《PHP项目中的Gitflow多人协作开发工作流》 |
地址:http://www.imooc.com/learn/751
第01章
1-1 Gitfolw 各分支交互流程分析
一、gitflow
1、gitflow定义了一个围绕项目发布的严格的分支模型
2、gitflow仍然用中央仓库作为所有开发者的交互中心。
二、 master: master分支,存储正式发布的历史。发布的版本号
hotfix:上线分支,bug情急修复分支
release:发布分支,发布上线的时候
develop:开发分支,作为功能的收集分支。
feature:功能分支,每次开发新功能的时候都会有对应的feature分支
第02章
2-1 SourceTree创建Gitflow结构
一、repository:[rɪ’pɑzə’tɔri],仓库。
二、feature分支是从develop打出来的。
三、功能分支——feature分支:
1、使用develop分支作为父分支,
2、每个新功能位于一个自己的分支
3、新功能完成后,合并回develop分支。
4、新功能提交应该从不直接与master分支交互。
5、分支名称feature/[feature name]。
第03章
3-1 发布分支操作
一、发布分支:release分支
1、使用develop分支作为父分支。
2、这个分支只应该做bug修复、文档生成和其它面向发布的任务。
3、发布完成之后,发布分支应该合并到master分支并分配一个版本号打好tag。
4、从新建发布分支以来的做的修改要合并回develop分支。
5、当前发布分支名称:release/[release version No.]
6、当前发布bug修复分支名称:release-bugfix-[Version No.]/[bug name|bug No.]
3-2 维护分支操作
一、hotfix分支:
1、要从master分支上建立新的分支。
2、develop分支第一次从master分支fork出来,此后独立成长。hotfix分支一直从master分支fork出来。
3、修复完成,应该马上合并回master分支和develop分支。
4、master分支应该用新的版本号打好tag。
5、分支名称:hofix/[bug name|bug No.]。
二、master,develop,feature,release形成一个闭环。
线上bug需要紧急修复时,master分支上fork一个hotfix分支,hotfix分支完成后,会合并到master分支,也会合并到develop分支。
三、feature往前推进过程中,定期将develop分支合并feature分支,这样可以使冲突最小化。