在公司,我们都是在公司自己的服务器上搭建git仓库,比如在服务器上安装gitlab软件.....
我们需要先在服务器上创建一个项目
从远程仓库拉取
从远程仓库拉取代码,私有仓库需要验证身份
方式一:https
http是无状态的链接,每一次链接都需要用户名与密码
幸运的是git拥有一个凭证系统来处理
用的少,这里就不说了
方式二:ssh
ssh:一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境
常用方法:人工生成一对公钥和私钥,通过生成的密钥进行认证,可以在不输入密码进行访问,公钥需要放在待访问的电脑中,私钥用户自己自行保管
// 以前常用,生成密钥对
ssh-keygen -t rsa -b 2048 -C "你的邮箱"
// 现在常用,ed25519一种加密方式
ssh-keygen -t ed25519 -C "你的邮箱"
之后会让你选择保存位置,输入密码等,一路回车就行
然后找到保存位置的文件,复制公钥
在远程服务器里,设置里面添加公钥,就ok了
查看远程仓库
// 查看远程仓库
git remote
// 详细信息
git remote -v
添加远程仓库
1.当我们本地有了仓库,相于远程仓库简历链接
// origin表示远程仓库名字,默认是origin
git remote add origin 地址
建立链接后先拉取代码 git pull (相当于git feach 与 git merge 两个命令)
此时会报错的,因为它不知道本地哪个分支与远程哪个分支建立链接
// 建立上游/跟踪分支
git branch --set-upstream-to=origin/<branch>
到这一步 git feach是没问题的,git merge报错,git2.9以前允许两个毫无相关的分支合并,但可能存在被一个维护者合并很多毫无相关的分支,所以这个命令被纠正了,但可以绕过这个限制
git merge --allow-unrelated-histories
之后就可以git push了
2.从远程仓库clone代码
git clone 远程地址
将本地代码推到远程
// 有上游分支
git push
// 无上游分支,需指定
git push origin 远程分支名
从远程仓库拉取代码
// 从远程仓库获取
git fetch
git fetch origin 远程分支名
// 与本地分支合并
git merge
// 一个命令代替上面两次操作
git pull
常见开源协议
我们创建开源项目,需要选开源协议许可证(常用MIT)
github上问题
当我们先在本地创建仓库,链接远程仓库,当本地分支名与远程分支名不一样时 git push 会有问题
我们需要修改push的默认行为