来自百度翻译
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除此之外还能解决冲突,实现多人开发中的等需求
配置密钥是因为提交的时候每次都要输入用户名和密码,为了避免每次都出现这种繁琐情况,就出现了密钥,且安全
比较
两种上传方式
第一种https 每次都需要输入密码和用户名
https://github.com/xiangshuo1992/preload.git
第二种提交方式,利用SSH密钥
[email protected]:xiangshuo1992/preload.git
git config --global user.name "Luke.Deng"
git config --global user.email "[email protected]"
查看user name 和 Email
git config user.name
git config user.email
cd ~/.ssh
ls
//存在id_rsa和id_rsa.pub则已经有了SSH Key
若没有ssh key,则生成一下
ssh-keygen -t rsa -C "填写自己的邮箱"
然后检查
检查是否存在
cd ~/.ssh
ls
//拷贝秘钥 ssh-rsa开头
cat id_rsa.pub
在git里边是Linux的操作语法,和wondows不一样
复制是:ctrl+ins
粘贴是:shift+ins
ssh -T [email protected]
成功的样子如下
克隆的时候直接复制如下对应的地方
参考链接:https://blog.csdn.net/u013778905/article/details/83501204
看廖雪峰的懂了
如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:(雪峰老师的话)
git clone [email protected]:michaelliao/bootstrap.git
一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址
[email protected]:twbs/bootstrap.git
克隆,因为没有权限,你将不能推送修改。
开发的话就一般在develop(dev分支)里克隆就行
如果只是想要这个项目,可以在master主分支克隆,这是稳定版本(默认)
代码:
git clone 克隆的地址粘贴一下
成功的样子:
查看远程仓库有哪些
命令
git remote -v
运行结果如下,代表只有自己的远程仓库
origin [email protected]:jing-zhi/git-study.git (fetch)
origin [email protected]:jing-zhi/git-study.git (push)
这种情况需要添加组长的主仓库
git remote add upstream ssh主仓库地址
再检查如下
origin ssh://[email protected]:8022/aaa/xxx.git (fetch) #自己的
origin ssh://[email protected]:8022/aaa/xxx.git (push) #自己的
upstream ssh://[email protected]:8022/aaa/xxx.git (fetch) #项目组长的
upstream ssh://[email protected]:8022/aaa/xxx.git (push) #项目组长的
就是对现在的情况了解一下
看看自己有啥分支
git branch (查看自己本地分支)
git branch -a (查看所有的分支,包括远程和本地)
下边这个可以查看,哪个分支有啥变化
git status
以上三个都试试
这一步不是必须的,只是为了确保开发安全
新建并且切换
git checkout -b check
也可以切换回来
git checkout develop
放暂存区是因为组长的仓库更新速度快,你得先拉取(pull),但是直接拉取可能会直接带来冲突,所以可以先把自己的代码放在暂存区
放暂存区
git stash save "save message"
拉组长最新的仓库
git pull upstream develop
这个时候再把咱放在暂存区的代码拿出来,合并
git stash pop
到这里大家肯定都知道那三步了
git add .
git commit -m""
git push origin HEAD:分支名称 (origin代表自己的远程仓库)如果远程仓库没有这个分支会自动创建
提交pr ,就是pull request ,提交给组长看,他同意了,主仓库那边就更新了
剩下的就是,自己的了
切换到开发分支
git checkout develop
将check合并到自己当前的分支
git merge check
删除check 分支
git branch -d check
这里推荐git的学习地址:Git教程 - 廖雪峰的官方网站
让你的小伙伴在github上创建一个仓库,例如git-study
咱们点一个fork,就拷贝到自己的远程仓库了
咱们找到对应的分支(一般是dev),复制ssh密钥,在本地电脑上找个文件目录clone(前提是自己配置过ssh密钥了)
在本地添加小伙伴的仓库(既主仓库)git remote add upstream ssh的密钥
前四步和上边一样。平时工作要细心肯定不能向上边一样草率,但是思路都相同
检查有没有主仓库
git remote -v
出现以下,代表只有自己的远程仓库,没有组长的主仓库
origin ssh://[email protected]:8022/aaa/xxx.git (fetch)
origin ssh://[email protected]:8022/aaa/xxx.git (push)
没有的话,就添加,你们都知道
git remote add upstream ssh://主仓库地址
出现下边,有upstream代表有了组长的主仓库
origin ssh://[email protected]:8022/aaa/xxx.git (fetch) #自己的
origin ssh://[email protected]:8022/aaa/xxx.git (push) #自己的
upstream ssh://[email protected]:8022/aaa/xxx.git (fetch) #项目组长的
upstream ssh://[email protected]: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:分支