了解
来自百度翻译
Git(读音为/g?t/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] 也是[Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds/9336769)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper [1] 。
介绍一下,gitee或者github这种远程仓库的比喻吧,
对了这只是一部分的,本文只牵涉,自己上传和下载别人的代码,没有pr,pull等许多概念,所以比喻有所不当,但是绝对是一种可理解的方式
现在你站的地方是你的大本营,这个地方叫作工作区,你在这里工作(你的电脑上某个文件夹),接着有一座桥,这个桥有两条路,桥的尽头是gitee或者github这种远程仓库,这个远程仓库所在的地方,你可以创建仓库,别人也可以创建,但是分为私有和公开的,私有的别人瞧不见,同样你也瞧不见别人私有的,但是公开的呢,可以互相下载到自己大本营,就是自己的电脑,但是要遵守相应的条约,这个和是否可以商业化等联系我就不做赘述了,
那么现在说说这个桥,桥有两个路分别对应两个功能,一,有了git,就是一个路,可以上传自己的代码也好,下载也行,一条上传到gitee仓库的路,另一条路也不用说了,就是github这条路,这是基建,可以下载别人的开源的东西到自己电脑
当然了git除此之外还能解决冲突,实现多人开发中的等需求
git工作流程(workflow掌握)
1-0 github密钥
配置密钥是因为提交的时候每次都要输入用户名和密码,为了避免每次都出现这种繁琐情况,就出现了密钥,且安全
比较
两种上传方式
第一种https 每次都需要输入密码和用户名
https://github.com/xiangshuo1992/preload.git
第二种提交方式,利用SSH密钥
git@github.com:xiangshuo1992/preload.git
一 设置user name 和email
git config --global user.name "Luke.Deng"
git config --global user.email "xiangshuo1992@gmail.com"
查看user name 和 Email
git config user.name
git config user.email
二 检查是否存在SSH Key
cd ~/.ssh
ls
//存在id_rsa和id_rsa.pub则已经有了SSH Key
若没有ssh key,则生成一下
ssh-keygen -t rsa -C "填写自己的邮箱"
然后检查
检查是否存在
cd ~/.ssh
ls
三 获取SSH Key密钥
//拷贝秘钥 ssh-rsa开头
cat id_rsa.pub
在git里边是Linux的操作语法,和wondows不一样
复制是:ctrl+ins
粘贴是:shift+ins
四 GitHub添加SSH Key
五 验证
ssh -T git@github.com
成功的样子如下
克隆的时候直接复制如下对应的地方
参考链接:https://blog.csdn.net/u013778905/article/details/83501204
1-1 Fork
看明亮学长的博客不懂,看廖雪峰的懂了
如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:(雪峰老师的话)
git clone git@github.com:michaelliao/bootstrap.git
一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git 克隆,因为没有权限,你将不能推送修改。
1-2 Clone
开发的话就一般在develop(dev分支)里克隆就行
如果只是想要这个项目,可以在master主分支克隆,这是稳定版本(默认)
代码:
git clone 克隆的地址粘贴一下
这里,感觉明亮学长写的ssh://是多余的,我验证是不需要的
成功的样子:
1-3 添加远程仓库
查看远程仓库有哪些
命令
git remote -v
运行结果如下,代表只有自己的远程仓库
origin git@github.com:jing-zhi/git-study.git (fetch)
origin git@github.com:jing-zhi/git-study.git (push)
这种情况需要添加组长的主仓库
git remote add upstream ssh主仓库地址
再检查如下
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch) #自己的
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push) #自己的
upstream ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch) #项目组长的
upstream ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push) #项目组长的
1-4 看分支状态
就是对现在的情况了解一下
看看自己有啥分支
git branch (查看自己本地分支)
git branch -a (查看所有的分支,包括远程和本地)
下边这个可以查看,哪个分支有啥变化
git status
以上三个都试试
1-5 新建分支
这一步不是必须的,只是为了确保开发安全
新建并且切换
git checkout -b check
也可以切换回来
git checkout develop
1-6 stash 放暂存区,拉新,合并
放暂存区是因为组长的仓库更新速度快,你得先拉取(pull),但是直接拉取可能会直接带来冲突,所以可以先把自己的代码放在暂存区
放暂存区
git stash save "save message"
拉组长最新的仓库
git pull upstream develop
这个时候再把咱放在暂存区的代码拿出来,合并
git stash pop
1-7 经典三部曲
到这里大家肯定都知道那三步了
git add .
git commit -m""
git push origin HEAD:分支名称 (origin代表自己的远程仓库)如果远程仓库没有这个分支会自动创建
1-8 真的最后了
提交pr ,就是pull request ,提交给组长看,他同意了,主仓库那边就更新了
1-9 END
剩下的就是,自己的了
切换到开发分支
git checkout develop
将check合并到自己当前的分支
git merge check
删除check 分支
git branch -d check
1-10 明灿学长写的注意事项
- 在每次新建分支之前和push之前,都要pull一下主仓库,保证代码最新,避免产生冲突。
- 任何关于项目的私密信息,例如一些账号密码等,不要放到开源平台上!也不要随意把项目源码在未经负责人的同意下私自开源。
- 在每次提交了合并请求之后不要立马删除该分支,并且写新的代码之前也要再新建一个分支,因为分支合并请求提交之后需要时间,如果合并请求不通过还要在该分支上进行修改。
- 如果有项目伙伴因需求更改了项目文件名称或是一些文件夹的名称,需要告知所有在工作中的伙伴停下手中的工作,等待文件名称修改后,push到仓库后,其他伙伴再拉新的代码,再进行工作。
? 这里推荐git的学习地址:Git教程 - 廖雪峰的官方网站
直接上手篇
最简单篇
- 让你的小伙伴在github上创建一个仓库,例如git-study
- 咱们点一个fork,就拷贝到自己的远程仓库了
- 咱们找到对应的分支(一般是dev),复制ssh密钥,在本地电脑上找个文件目录clone(前提是自己配置过ssh密钥了)
- 在本地添加小伙伴的仓库(既主仓库)git remote add upstream ssh的密钥
- 现在可以进行一下,简略的最后三步
- 当你在本地加了或者改了(例如加了个文档:王景玉大帅哥),先提交到自己的本地仓库,
git push origin HEAD:分支 (注意:后不要有空格) - 拉取主仓库最新的代码
git pull upstream develop(这个分支是你同学(项目组长)让你去做的一个功能,给的分支,所以从一开始只需要这个分支的ssh密钥,现在也是拉这个分支的最新代码,其他的分支的东西不是咱管的事) - 现在就算是完成了,在github上直接提交pr就行了,注意一下,下图
正常流程篇
-
让你的小伙伴在github上创建一个仓库,例如git-study -
咱们点一个fork,就拷贝到自己的远程仓库了 -
咱们找到对应的分支(一般是dev),复制ssh密钥,在本地电脑上找个文件目录clone(前提是自己配置过ssh密钥了) -
在本地添加小伙伴的仓库(既主仓库)git remote add upstream ssh的密钥 -
前四步和上边一样。平时工作要细心肯定不能向上边一样草率,但是思路都相同 -
检查有没有主仓库 git remote -v
出现以下,代表只有自己的远程仓库,没有组长的主仓库
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch)
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push)
没有的话,就添加,你们都知道
git remote add upstream ssh://主仓库地址
出现下边,有upstream代表有了组长的主仓库
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch) #自己的
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push) #自己的
upstream ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch) #项目组长的
upstream ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push) #项目组长的
-
检查下分支状态 git branch (这个检查的是本地的分支状态)
git branch -a (检查的是远程和本地的)
git status (检查分支状态)
上边三个可以都试试
-
检查工作做好了,准备工作,先pull最新代码,再新建个分支 一大早先拉取最新代码,准备工作
git pull upstream develop
再新建个分支,安全
git checkout -b check (新建分支并且切换到这个分支)
不想的话,再切换回来
git checkout develop
-
代码写好了,工作准备结束,为了安全,先把代码放在暂存区 放暂存区
git stash save "save message"
再拉组长的最新代码,因为这一天之内,这个分支也有别人再做
git pull upstream develop
将代码从暂存区拿出来
git stash pop
-
经典三部曲,先提交到自己的远程仓库(github仓库) git add .
git commit -m""
git push origin HEAD:分支
-
最后了pr (pull requsts),这一步就是提交,给组长发过去
|