Git
一 、Pull Request
1.1 fork
如上图所示找到想要pull request的项目,然后点击fork按钮,此时变会在你的仓库中多出来一个仓库,名字为:自己的账户名/想要pull request的项目的名称
1.2 clone
通过运行命令:git clone https://github.com/fengyanWang/fifirst-pr.git
(后面的网址为你自己账户下刚刚生成的那个新的仓库的地址),将该仓库克隆到当前的开发环境中
1.3 branch
- 确认分支
通过在终端运行命令:git branch -a查看当前所在的分支,通常我们都是在查看分支后再进行代码的修改,这是一 个好的习惯
- 创建特性分支
- 在应用github修改代码时,我们常常采用的策略是在主分支下在创建一个特性分支
- 在该特性分支下进行代码的修改然后通过该分支执行pull request操作
- 通过命令:
git checkout -b work master
( 其中work
为你新建的特性分支,master
为你当前坐在的分支 ) 创建新的特性分支并自动切换
1.4 添加修改
- 修改工程
在刚刚新创建的分支下对
fork
下的工程进行修改
- 提交修改
首先使用命令:git diffff查看修改的内容是否正确,然后使用命令:git add readMe.md(其中readMe.md为要添加 的文件)向仓库中添加文件,在执行命令:git commit -m “add readMe.md文件提交说明
- 创建远程分支
- 要从
github
发送pull request
,github
端的仓库中必须有一个包含了修改后的代码的分支,所以需要创建一个与 刚刚创建的特性分支(修改所在的分支)相对应的远程分- 支执行命令:git push origin work1(其中
origin
为当时fork
的远程主分支的名称,一般默认为origin,work1
为本 地工作的特性分支),然后执行:git branch -a
进行查看是否创建成功
1.5 发送pull request
进入到自己的github账户下,并切换到创建的特性分支下,然后点击create pull request后,确定没问题,填写相关内容,然后点击send pull request
二 、基于GIT做协同开发
2.1 公司如何基于git做的协同开发?
- 初始化项目:
git clone 仓库地址(生成仓库文件)
如果想重命名: git clone url name(项目名)
- git pull origin master(dev..…) 合并别人推送的新内容
- rebase可以帮助将提交的记录整成一条直线(可以不做)
- 创建自己的开发分支, 在自己的分支进行开发
- 将需要和别人协作的内容推送至公开分支,
git push origin serverfix
协作者: git fetch origin
- 抓取远程跟踪分支, 本地不会有这个分支, 相当于指针
- git merge origin /serverfix ,合并内容到自己的分支
- git checkout -b serverfix origin/serverfix
- 创建并切换到分支, 起点位于origin / serverfix
- 跟踪分支
- git checkout -–track origin/serverfix
- 跟踪该分支, git pull自动识别这个分支进行合并
- 重命本地分支: git checkout -b sf origin/serverfix
- git fetch 从服务器拉取本地没有的数据
- 删除远程分支
- git push origin -–deletc serverfix
- 远程仓库托管网站
- github, 码云 gitlab
2.2 Git常见命令
- git init—————————初始化
- git add .————————从工作区,添加到版本库
- git commit -m”xxx”———从暂存区,添加到分支
- git status———————查看状态
- git log ————————查看版本库的日志
- git reflog———————查看所有日志
- git reset —head 版本号—切换
- git stash———————-保存
- git stash———-将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
- git stash list———查看“某个地方”存储的所有记录
- git stash clear———-清空“某个地方”
- git stash pop——将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
- git stash apply ——-编号,将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
- git stash drop —-—编号 ,删除指定编号的记录
- git branch dev————创建分支
- git branch -d dev———-删除分支
- git checkout dev————切换分支
- git merge dev—————-合并分支
- git branch———————查看所有分支
- git clone https:xxx——-克隆
- git add origin https:xxx-起个别名
- git push origin dev ——添加到dev分支
- git pull origin master—拉代码
- git fetch origin master-去仓库获取
git merge origin/master-和网上下的master分支合并
# -–-–-–-–-–-–-–-–-–-–协同开发-–-–-–-–-–-–-–-–-–--—
默认是master分支———————master
开发的分支——————————dev
做代码review—————————reciew
程序员自己的分支———————…….
- 每个员工创建自己的分支
- 将自己的代码提交的到自己的分支—xxx,sss,wwww…….
- 由组长或老大做代码的review,———-代码提交的review分支
- 再提交到dev.
- 再合并到master分支
三 、stash的作用以及相关命令
'git stash':将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
'git stash list':查看“某个地方”存储的所有记录
'git stash clear':清空“某个地方”
'git stash pop':将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
'git stash apply':编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
'git stash drop':编号,删除指定编号的记录
四 、 merge和rebase的区别
Ⅰ. merge
会将不同分支的提交合并成一个新的节点,之前的提交分开显示,
注重历史信息、可以看出每个分支信息,基于时间点,遇到冲突,手动解决,再次提交
Ⅱ. rebase
将两个分支的提交结果融合成线性,不会产生新的节点;
注重开发过程,遇到冲突,手动解决,继续操作
五 、如何基于git实现代码review
review的人: 老板/小组长/领导
review的内容: 审查代码的规范
流程: master
dev
个人分支: san
si
review 分支
个人提交代码到review分支, 审查完毕之后由领导合并到dev分支
六 、Git如果实现v1.0 v2.0等的版本管理
git tag // 查看标签:
git tag -l "v1.8*" // 查询 1.8开头的所有版本
git tag -a v1.0 -m "one" // 创建标签
git show v1.0 // 查看v1.0
git tag v1.1-lw // 轻量级的标签
git tag -a v1.2 "commitID" // 给历史提交记录打标签
git push origin v1.5 // 推送到远程
git push origin --tags // 推送所有标签到远程
git tag -d v1.2 // 删除标签
git push origin : refs/tags/v1.2 // 删除远程仓库标签 步骤, 给commit打好标签, 再提交到远程仓库
七 、什么是Gitlab
基于gitd的项目管理软件代码托管的私有仓库, 自动进行代码备份gitlab是公司自己搭建的项目代码托管平台
八 、github和gitlab的区别 ?
1. gitHub是一个面向开源及私有软件项目的托管平台(创建私有的话,需要购买,最低级的付费为每月7刀,支持5个私有项目)(github已于10月开始免费私有仓库了!!!!!)
2. gitlab是公司自己搭建的项目托管平台
3. GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内 部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub
九 、如果为github上牛逼的开源项目贡献代码
-
fork需要协作项目
-
克隆/关联fork的项目到本地
-
新建分支(branch)并检出(checkout)新分支
-
在新分支上完成代码开发
-
开发完成后将你的代码合并到master分支
-
添加原作者的仓库地址作为一个新的仓库地址
-
合并原作者的master分支到你自己的master分支,用于和作者仓库代码同步
-
push你的本地仓库到GitHub
-
在Github上提交 pull requests
-
等待管理员(你需要贡献的开源项目管理员)处理
十 、git中.gitignore文件的作用
一般来说每个Git
项目中都需要一个.gitignore
文件,这个文件的作用就是告诉 Git 哪些文件不需要添加到版本管理中。实际项目中,很多文件都是不需要版本管理的,比如Python的.pyc
文件和一些包含密码的配置文件等等。