赞
踩
目录
4.Git和他的好朋友(GitHub、Gitee、GitLab)
git命令行图解概括:
工作中使用思路:
在新的文件夹初始化之后,先git clone 远程地址将项目复制下来
1、master分支上:
git status 【红色:修改过的代码,初始在工作区】
git add .【git status====>绿色:代码在暂存区】
git commit -m "第一次" 【配置邮箱和密码后,git status====>白色:代码在版本库】
git push origin master 【100%====》远程推送成功】
git 拉取指定分支:git clone -b 指定分支 ssh地址/Http地址
2、创建分支:
git branch【查看】
git checkout -b dev 【创建并切换至新建分支上】
dev分支上:
git add .====>git commit -m "dev分支代码"====》git push origin dev====》
git checkout master【切换回主分支】
注意:每次切换分支时一定要先提交!!!
3、组长合并分支:
master分支上:
git merge dev
git add .====》git commit -m "合并了dev分支"====》git push origin master
4.自己分支提交完合并到dev分支
当前在自己的分支上:git add .====》git commit -m "注释"==》git push 地址 自己分支名
提交完合并代码到dev:
git checkout dev===》git pull origin dev===》git merge + 自己分支名===》git push origin dev。此时已经合并到dev
5、冲突解决:
两边的分支都提交且合并之后,主分支上会出现显示条,上面有4个选项
(1)留上边 (2)留下边 (3)都留下 (4)代码对比
之后再git add . ====》git commit -m "冲突解决"====》git push origin master
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是目前世界上最先进的分布式版本控制系统(没有之一)
版本控制是一种软体工程技巧,在开发的过程中,确保由不同人所编辑的同一档案都得到更新。
版本控制透过文档控制记录程序各个模组的改动,并为每次改动编上序号
- 集中式版本控制工具:
CVS、SVN、VSS、...
- 分布式版本控制工具:
Git、Mercurial、Bazaar、Darcs、...
集中式版本控制系统
最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟
分布式版本控制系统
安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了.而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
1.工作区 (working directory)
2.暂存区 (staging index)
3.版本库 (git directory)
git 版本控制工具
github、gitee、gitlab 远程的代码托管平台
[官网下载地址](https://git-scm.com/downloads)
[国内淘宝镜像下载地址](https://npm.taobao.org/mirrors/git-for-windows/)
创建一个版本库非常简单:
首先,对需要管理的项目文件夹右键选择"git Bash Here"自动跳转到当前目录下
git init 初始化
会生成一个 .git 隐藏文件夹,不要对这个文件夹进行操作,不然本地库就坏了。
如果我们想要把一个项目的版本库给去掉从新初始化的时候,直接删除这个.git文件夹.重新git init 操作
**红色区域**表示当前文件夹的目录
**绿色区域**标识git创建的子目录(是存放git对于当前文件夹的版本控制信息)
**因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。**
配置作用:区分不同开发人员的身份
配置方式:
git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置当然也可以对某个仓库指定不同的用户名和Email地址。
*git config --global user.name "你的名字"*
*git config --global user.email "你的邮箱"*
# 配置信息存放在 系统的用户目录下 C:\Users\<当前系统的用户名>\.gitconfig 文件
优先级:项目级别 > 系统级别
git config --list 查看我们配置的用户名和邮箱
命令查看工作区文件是否被追踪(文件状态)
将单个文件添加到暂存区[git add 文件名]
将当前目录下所有修改或新增的文件全部添加到暂存区[git add .]
git commit -m "这次提交的日志"
回车之后直接提交了,不会进入 vim 中
git commit -am
将工作区的文件提交到版本库中(前提是文件之前被提交过)git add和git commit -m的组合技
git log
列出从当前版本为止全部的提交日志,
如果一屏展示不下,可以使用键盘操作翻页。这时使用 Ctrl + C 退出不了。可以使用 q 来退出
版本回退的本质:
就是一个 HEAD 指针的操作
git checkout -- 文件名
拉取暂存区的**指定**文件将其替换工作区的文件 注意文件名和--之间要有空格
git checkout -- .
拉取暂存区的**全部**文件将其替换工作区的全部修改:
git reset commitid . (id就是提交记录上的那串字符串码)
拉取最近指定版本库中全部到暂存区,该操作不影响工作区
git reset --hard commitid
拉取指定**版本库的文件将其替换工作区**的文件
版本回退的注意事项:
第一次提交的文件是最初状态(没问题的),后面修改后的文件可以使用*git reset commitid .*;然后*git checkout -- 文件名*,这样可以将修改后的文件复原,千万不要提交修改后的文件去master,这样主库里的文件就会随之修改.
git rm --cached 文件名 将文件从缓存区删除
mv 旧文件名 新文件名 新文件名会将工作区文件进行更名
**在版本控制过程中,使用多条线同时推进多个任务。**
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
同时并行推进多个功能迭代,提高开发效率
并行的多个分支之间不会互相冲突
查看本地仓库的分支情况
git branch
查看远程仓库的分支情况
git branch -r
查看本地与远程的所有分支情况
git branch -a
git branch <分支名字> 只是创建分支
git checkout -b <分支名字> 创建分支,并切换到新创建的这个分支上
git checkout <分支名字>
注意:本地如果不存在这个分支,则会把远程的给弄下来,如果远程也没有,就报错
先切换到被合并的分支上。
使用 git merge <需要合并的分支>
原因:两个分支在同一个代码上的某一个位置做了修改,这些 git 合并时不知道该听那个分支的。
1 找到有冲突的文件
2 删除这个文件中的特殊标记 (<<<<<<<,=======,>>>>>>>标记出不同分支的内容)
3 找到相应的开发人员去商量到底如何处理这个情况,用你的?用我的?或者两个都保留?
4 git add
5 git commit
git branch -d <分支名字> 以及合并过的分支可以这样去删除
git branch -D <分支名字> 没有合并过的分支,但是里面有代码修改,使用 -d 删除,是删除不了的。确定要删除,就是用-D
gitHub是一个面向开源及私有软件项目的托管平台(基于git实现代码管理平台),因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。
gitee是开源中国(https://www.oschina.net/)开发的一款基于git的代码托管平台,能够用码云实现代码托管、项目管理、协作开发,目前是国内最大的代码系统。
gitee和github的作用和性质是类似的,但相比github而言,gitee有两个显著的优势:一是速度快,二是支持免费的私密项目。
**模拟使用:**
张三 (项目经理)
qf-zhangsan@yopmail.com
李四 (普通开发人员)
qf-lisi@yopmail.com
王五 (普通开发人员)
qf-wangwu@yopmail.com
张三是个项目经理 在开发之初先进行初始化项目创建 于在远程仓库中创建对应仓库 写好的空框架可以在github或者码云上进行关联
需要新建一个库
(简化了每次链接不用每次在输入地址了 此步骤可以不进行 但是建议这样做)
git remote add 远程库链接别名一般是origin 远程库的https地址或者ssh地址
git remote add <远程连接别名,一般默认使用origin> <远程仓库的https地址或ssh地址>
码云方式:
github方式:
**删除远程库与本地库关联**
git remote remove 远程库链接别名
git remote -v
项目经理张三关联远程库之后就把空框架推送到远程库方便其他员工使用
出现的原因是 在这个电脑上登录过其他账号的gitee 或者github 需要删除之前的登陆信息
Windows:在控制面版 =》 用户账户 =》 凭据管理器 选中windows凭据,找到gitee点击删除 重新尝试即可
Mac:进入 钥匙串访问 ---》密码---〉找到gitee删除重新进行即可
git push 远程库链接别名 master
李四加入到张三的公司,李四需要将Apple项目克隆到本地 张三给李四一个远程仓库的地址
李四使用 git clone <远程仓库的地址> 克隆项目到本地 **注意:克隆不需要git init初始化**
git clone 远程仓库地址
李四已经克隆了代码,张三让李四做一个登陆的功能。(其他组员和李四操作一样)
不要直接在master上写代码,询问张三(老大)我基于那个分支做开发。
1.使用**git branch 你的分支名** 创建分支
2.使用**git branch** 查看分支
3.使用**git checkout 你的分支名** 切换到你的开发分支
4.切换到你的分支进行开发 一个功能一天做不完,也需要每天下班之前提交推送一下。所以可以推送到远程库的对应你的分支上(有些公司老大要看看工作饱和度)
**git push 地址 你的分支名**
此时远程库就会有多条分支
1.先把项目从远程库 pull下来 **git pull 地址**
2.然后切换到master主分支(但是不要忘了在原有分支上add 与 commit )git checkout master
3.开始合并**git merge 你要合并的分支名** 进行合并但是此时可能会有冲突页面中出现
1 需要先查看本地电脑是否有 ssh 相关的东西 (用户目录下是否有 .ssh 的文件夹)。有就先删除吧。
2 创建 ssh key
ssh-keygen -t rsa -C "邮箱地址"
3 接着在 用户目录下找到 .ssh 文件夹中的 id_rsa.pub 这个文件
4 复制 id_rsa.pub 中的内容
5 去远程托管平台上添加 ssh
1 这时克隆项目时就可以直接选择使用 ssh 的方式
2 先将本地的https的连接方式给删除,换成 ssh 的连接方式
1 集中式 大家全部都在一个分支上写代码master
2 git flow 不同分支用来干不同的操作
3 forking fork pull request 这套操作
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。