git
git博客参考
1. SVN、CVS (集中式版本控制系统)
SVN视频参考
版本库是集中放在中央服务器的,当我们实际工作的时候,用的都是自己的电脑,所以首先要连接中央服务器,从那里得到最新的版本,然后编写或者更改代码,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统最大的限制,就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快。可如果是在互联网上,遇到网速慢的话,协同工作纳就效率很低了,借用一张图展示下svn或cvs版本控制流程。
2. Git(分布式版本控制系统)
Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时都十分高效,而且非常的高大上。
分布式版本控制系统没有中央服务器的。每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库。那问题来了,如何进行多个人项目开发协作呢?比如说某人在电脑上修改了文件A,同时其他人也在电脑上改了文件A。这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
其次,和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库(本地仓库),某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
实际上,在使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
3. git下载安装
https://git-scm.com/
默认安装即可,安装完成后右击选择
- Git GUI Here(图形界面操作)
- Git Bash Here(cmd命令行操作)
4. git基本概念(名词)
-
仓库(Repository)
-
收藏(Star)
-
复制克隆项目(Fork)
-
发起请求(Pull Require)
-
关注(Watch):关注项目,项目更新可以收到通知
-
事务卡片(Issue):发现代码bug,但是目前没有成型代码,需要讨论时用
-
github主页
-
仓库主页
-
个人主页
注意:
- github服务器在国外,所以访问较慢有时候甚至无法访问,需要FQ
- 公有仓库所有人可见
- 私有仓库只能自己或者指定的朋友才有权限操作(私有仓库收费)
- 新用户必须验证邮箱才能创建git仓库(验证邮箱可能需要设置GitHub.com为白名单)
5.创建仓库
6. 向仓库添加文件
7.上传代码到git(Mac)
1. 下载安装git
安装完成后, 打开终端 git --version 查看安装版本, 能查看到就是安装成功了.
2. 配置公匙SSH
a. 查找.ssh看是否存在,不存在则安装
cd ~/.ssh
若提示“-bash: cd: ~/.ssh: No such file or directory” 那就说明.ssh文件夹不存在,那么则进行下一个步骤,否则就是将原来的.ssh文件夹备份以下,亦或是切换到其他路径下建立ssh。
b. 创建SSH
输入以下命令来创建ssh,为你注册GitHub时的邮箱账号
ssh-keygen -t rsa -C xxx@xx.com
命令执行成功后,会有以下提示
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yongchangda/.ssh/id_rsa):
直接enter确定, 这是.ssh默认保存的路径,方便后面查找, 一般不需要做另外修改,
Created directory '/Users/yongchangda/.ssh'.
Enter passphrase (empty for no passphrase):
c. 创建密码(这里为09xx)
确认之后. 需要输入不少于 4位数的密码, 自己记住就好. 点击确认, 重复输入上一个步骤密码.
(注意⚠️此步密码输入后并不显示,继续输入后回车即可)
Your identification has been saved in /Users/yongchangda/.ssh/id_rsa.
Your public key has been saved in /Users/yongchangda/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:KzenlHSw59eei2j/WEYD7wyAU5HLd89da3pcowZTZAc m18620345206@163.com
The key's randomart image is:
+---[RSA 2048]----+
| oo E. |
| o. o . |
| +...+ . |
| +o..+. .|
| S o.o.+o+|
| . * o * ==|
| . * o + @ o|
| + +.o X + |
| ....=.*. |
+----[SHA256]-----+
出现以上表示命令执行成功.
d. 配置公匙
接下来登录git 账号. 在git上创建 SSH.登录成功后, 点击用户头像下选择 settings. 按照以下步骤添加新的SSH Key
Title: 填写 git 账号
key: 需要打开生成的 id_rsa_pub 文件, (/User/xxxxxxxx /.ssh/is_rsa.pub),将其中内容拷贝过来。路径如下
默认.ssh 文件是隐藏的. 可以在终端设置显示:
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles YES
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles NO
(⚠️ 注意 .pub 文件, 无法直接读取, 可以在终端输入命令:)
(使用cd命令进入 id_rsa.pub 目录,再使用 more id_rsa.pub命令查看公钥的内容)
将终端打印出的数据复制到 git 的 key:
公匙配置完成后
创建SSH Key,因为你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密。
$ssh-keygen -t rsa - C "yourmail@example.com"
Git 全局设置:
git config --global user.name "ding"
git config --global user.email "202xxx@qq.com"
创建 git 仓库:
mkdir echarts //创建文件夹echarts
cd echarts //进入echarts文件夹
git init //初始化项目,将你要所在的当前目录变成Git可以管理的仓库;在当前目录下你能看到 .git目录
touch README.md //创建文件README.md
git add README.md //git add . 添加该文件夹所有文件到暂存区,点前有空格,代表所有文件
git commit -m "first commit" //将暂存区文件提交到本地仓库,"first commit"为提交解释
git remote add origin git@gitee.com:dingdc/echarts.git
//将本地仓库关联到所填写地址的仓库,origin即为远程库
git push -u origin master //将代码由本地仓库上传到GitHub远程仓库
已有仓库?
cd existing_git_repo 以及存在的仓库名//
git remote add origin git@gitee.com:dingdc/echarts.git
git push -u origin master
git status //命令可以随时查看仓库当前的状态,如有哪些文件更改了,哪些已经提交,哪些文件没有跟踪.
https://blog.csdn.net/Miss_liangrm/article/details/98025128?utm_term=vscode合并代码&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-0-98025128&spm=3001.4430
最后分享一些Github常用的命令:
切换分支:git checkout name
撤销修改:git checkout – file
删除文件:git rm file
查看状态:git status
添加记录:git add file 或 git add .
添加描述:git commit -m “miao shu nei rong”
同步数据:git pull
推送分支:git push origin name
分支操作
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
合并某分支到当前分支:git rebase name //更加线性的提交历史
删除分支:git branch -d name
删除远程分支:git push origin :name
删除已存在git:rm -rf .git 或者 rm -rf 文件名.gt
git最基本的6个操作
1). 创建本地仓库
创建.gitignore配置文件
- git init
- git add *
- git commit -m "xxx"
2). 创建远程仓库
- New Repository 指定名称 创建
3). 将本地仓库推送到远程仓库
- git remote add origin https://github.com/zxfjd3g/xxx.git 关联远程仓库(origin别名)
- git push origin master
4). 如果本地有更新, 推送到远程
- git add *
- git commit -m "xxx"
- git push origin master
5). 如果远程有更新, 拉取到本地
- git pull origin master
- git fetch origin master:tmp
6). 克隆远程仓库到本地
- git clone https://github.com/zxfjd3g/xxx.git
- git checkout -b dev origin/dev
说说git的分支,合并与冲突
1). 分支是在开发主线之外编写你的代码完成特定工作而不影响开发主线
2).分支的操作:
- 查看分支: git branch
- 创建分支: git branch dev
- 切换分支: git checkout dev
- 比较分支: git diff master dev
- 合并分支: git merge dev
3).冲突
- 产生冲突: 当对2个分支进行合并时,如果同一个文件的同一行内容不一样,就会产生冲突
- 解决冲突:
修正合并后产生冲突的代码
git add *
git commit -m "resolve conflict"
说说git公司多人协作与开源项目多人协作
1). 公司多人协作:
先在github上创建组织(修改权限), 多个同事加入此组织, 在组织下创建项目, 成员都可以进行推送更新
2). 开源多人协作:
fork仓库到自己的账户下, 修改fork仓库的代码, 向原仓库发起一个pull request, 对方接收到请求后可以选择合并
区别fork(复刻)与clone(克隆)
- fork: 将别人的远程仓库完全复制为自己的远程仓库
- clone: 将远程仓库(自己/别人)完全复制为本地仓库
区别git的pull与fetch
1). 简单来说,git pull 是 git fetch + git merge
2). 执行pull: 将远程仓库的更新拉取到本地后, 与本地仓库当前分支进行自动合并(可能会遇到冲突)
3). 执行fetch: 将远程仓库的更新拉取到一个暂时的新分支上, 后面需要手动进行merge操作(可以先进行diff操作)
git的几个主要分支
- 1). master分支 主分支,产品的功能全部实现后,最终在master分支对外发布。
- 2) . develop分支 开发分支,基于master分支克隆,产品的编码工作在此分支进行。
- 3) . release分支 测试分支,基于delevop分支克隆,产品编码工作完成后,发布到本分支测试,测试过程中发现的小bug直接在本分支进行修复,修复完成后合并到develop分支。本分支属于临时分支,目的实现后可删除分支。
- 4) . bugfix/hotfix分支 Bug修复分支,基于master分支或发布的里程碑Tag克隆,主要用于修复对外发布的分支,收到客户的Bug反馈后,在此分支进行修复,修复完毕后分别合并到develop分支和master分支。本分支属于临时分支,目的实现后可删除分支。
- 5)
. feature分支
功能特征分支,基于develop分支克隆,主要用于多人协助开发场景或探索性功能验证场景,功能开发完毕后合并到develop分支。feature分支可创建多个,属于临时分支,目的实现后可删除分支。
Git常用远程操作命令
- git clone: 克隆远程仓库到本地
- git remote: 添加/删除远程仓库关联
- git push: 将本地仓库推送到远程仓库
- git pull: 从远程仓库更新拉取到本地仓库并与当前分支合并
- git fetch: 从远程仓库更新拉取到本地仓库的临时新分支