项目托管平台
- 国外的项目托管平台有
GitHub
,最大的开源项目托管平台,但是国内访问可能速度比较慢,同时发布私有项目需要收费 - 国内的项目托管平台,在我们发布私有的项目时往往使不收费的,同时网络的访问速度较快
GitHub
GitHub
的基本使用:
注册一个
GitHub
账号新建项目
- 输入项目名和项目的描述信息,如果后续操作什么都不选点击创建项目,这样
GitHub
中存储的这个项目没有任何的提交,里面会有一些提交提交 - 输入项目名和项目的描述信息,如果后续选择添加了
README
文件(项目的介绍文件,别人打开你项目的主页后出现的介绍文档)和确定忽略文件和相关开源协议,再点击创建项目,这样是没有提交提示的,因为系统默认的进行了一次项目的初始提交,包含了协议文件LICENSE
、README
文件和忽略文件.gitignore
- 输入项目名和项目的描述信息,如果后续操作什么都不选点击创建项目,这样
与
GitHub
进行连接连接
GitHub
的方式有两种:https
和ssh
方式,推荐使用ssh
(远程无密码连接)的方式,使用该方式可以再连接的时候不需要输入我们GitHub
的账号和密码,但是我们要配置我们的ssh
密钥后才能进行连接- 为
GitHub
添加ssh
密钥- 生成
ssh
密钥:ssh-keygen -t rsa
后续一直按回车即可 - 进入以下文件
cd ~/.ssh
,打开id_rsa.pub
文件,将其内容进行复制 - 在
GitHub
网站中点击头像-->Setting
-->SSH and GPS keys
-->将复制的密钥进行添加 - 之后我们就可以直接使用
ssh
进行克隆项目了,git clone
下来的项目与远程服务器自动的进行连接了,在本地新建文件后,通过add
将文件放到本地缓存区,通过commit
将文件提交到本地仓库,最后通过git push
将文件提交到远程仓库中,如果连接不上远程仓库,可以将~/.ssh
目录下的known_hosts
文件中的全部内容进行删除,这些数据是缓存的数据,再进行操作就可以连接上远程的服务器了
- 生成
- 为
推送本地仓库代码到远程仓库
与GitHub
远程克隆下来的项目不同,现在是以本地的项目开始
初始化仓库:
git init
创建文件-->
git add .
将其放入本地缓存区-->commit
提交到本地仓库连接远程仓库:
git remote add origin git@github.com:jin/pyqt5.git
git@github.com:jin/pyqt5.git
这个仓库是在GitHub
远程创建好的一个空项目查看远程服务器的关联信息:
git remote -v
首次推送到远程仓库(向
master
分支进行推送):git pull -u origin master
后续推送使用:
git push
分支的管理
显示所有分支,包括远程分支:
git branch -a
列出所有远程分支:
git branch -r
远程分支一般为红色的显示,并且前缀为
remotes
,如:remotes/origin/master
在本地创建一个分支并跳转到该分支下:
git checkout -b 分支名
本地的分支没有与远程分支进行关联,是不能向远程进行
push
的本地分支与远程分支进行关联并推送:
git push --set-upstream origin 分支名
这样在远程就创建了一个同分支名的分支,进行接收该分支本地推送来的内容
场景例子:目前有一个功能在ui
分支中进行开发,我是一个新加入开发的员工,需要将该分支下的项目代码拿到个人的开发电脑中
克隆代码:
git clone ssh复制的内容
进入到克隆下来的文件中:
cd ui-change
查看分支:
git branch -a
将远程的分支同步到本地对应的分支中:
git pull origin ui:ui
这样就在本地创建了
ui
分支,其代码和该分支的远程的代码一致推送到远程仓库:
git push --set-upstream origin ui
远程分支的合并
当新建的分支功能实现完后,我们需要将该分支的代码放到master
主分支中,在把该分支删除,这个过程就是远程分支的合并:
切换分支到主分支:
git checkout master
将本地
master
分支的内容更改成最新的状态:git pull
切换到功能实现的新分支:
git checkout ui
将新分支的基准点移动到
master
主分支的最新位置:git rebase master
切换分支到主分支:
git checkout master
合并功能分支内容到主分支:
git merge ui
推送到远程服务器:
git push
这样远程分支master
就将远程分支ui
的内容合并过来了查看已经合并的分支:
git branch --merged
删除远程分支:
git push origin --delete ui
这样远程分支就不存在了同时我们也应该删除本地的分支:
git branch -d ask