开通gitblit(开通需要咨询所在公司的gitblit管理员)账号后,本地Git仓库和gitblit仓库仍然不能传输项目,原因是要通过SSH加密才能传输,所以需要让gitblit认证本地的SSH Key,认证之前,则先使用Git生成SSH Key。
1、Git生成秘钥
1.1 确认本地秘钥
SSH 秘钥默认储存在账户的主目录下的 ~/.ssh 目录,例如:C:\Users\Administrator.ssh
查看是否包含id_rsa和id_rsa.pub(或者是id_dsa和id_dsa.pub之类成对的文件),有.pub 后缀的文件就是公钥,另一个文件则是密钥。
如果有这两个文件,则跳过1.2;如果没有这两个文件,甚至.ssh目录也没有,则需要用ssh-keygen 来创建。
1.2 生成秘钥信息
- 在.ssh 目录下右键打开Git Bash(.ssh目录不存在,手动创建)
- 如果没有id_rsa 和 known_hosts文件,执行一下命令生成:
ssh-keygen -t rsa
- 生成秘钥:ssh-keygen -t rsa -C “your_email@youremail.com” ,直接Enter就行,然后会提示输入密码(可输可不输), 说明:命令中的email,就是gitblit中的账号,需要保持一致,也可以自定义邮箱即可。
- 执行完成之后,在.ssh 目录下就会生成秘钥文件
2、gitblit秘钥添加
2.1 登录gitblit
使用申请的gitblit账号登录,确保登录成功
2.2 添加秘钥
- 找到账号的用户中心,添加秘钥
- 秘钥的获取方式:
- 第一种:拷贝公钥文件(即1.2中生成的id_rsa.pub)中的信息到key输入框中,title可以随便起,见名知意即可。然后点击Add Keys
- 第二种:使用命令获取公钥
cat ~/.ssh/id_rsa.pub
- 第一种:拷贝公钥文件(即1.2中生成的id_rsa.pub)中的信息到key输入框中,title可以随便起,见名知意即可。然后点击Add Keys
- 将获取到的私钥添加到用户中心的SSH Keys文本框中,点击添加就会建立本地和gitblit仓库匹配
3、Git示例
注意:克隆代码之前确保有相关的项目代码权限(master、developer、reporter),如无权限,请求项目具有master权限的同事帮忙分配权限
-
在本地目标下载目录下,右键–>Git Bash Here
-
输入命令:git clone ssh://xxxxxx@192.168.1.114:29418/~xxxxxx/test.git
-
首次拉取代码时,可能需要确认秘钥信息,输入yes即可
-
确认项目已从gitblit上克隆到本地
-
然后进入到clone下来的test目录,cd test 进行基本操作即可,提交到线上的时候就不需要每次输入密码了。
4、当本地之前关联了github、码云等,可能会导致出错
- 可以重新生成或者将直接将之前的配置公钥获取出来即可。
- 查看你的 public key
cat ~/.ssh/id_rsa.pub
- 将获取到的公钥添加到码云:添加地址:https://gitee.com/profile/sshkeys
- 终端输入
ssh -T git@gitee.com
就可以正常操作了
5、更多参考资料
https://blog.csdn.net/xyq54/article/details/82696760
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000
6、本地分支同步远程分支
- 切换分支
git checkout [name]
- 创建分支
git branch [name]
- 删除目标分支
git branch -D master
- 切换回 master
git checkout master
- 合并分支:用 git merge 把 [name]合并到 master
- 切换回master
- 然后
git merge [name]
- 将本地创建的分支同步到gitblit
git push --set-upstream origin home-header
- 将远程分支拉取到本地: git fetch origin dev(远程存在的分支):dev(同步本地分支)
- git checkout -b dev origin/dev 将远程仓库中的指定分支拉取到本地
本地项目与远程项目关联
- 首先,在远程创建相同的项目目录,不需要添加 README.md和.gitignore 文件,之所以不添加,是因为本地搭建项目的时候会自动生成所需要的文件,项目目录名称和本地目录名称保持同步。
- 本地使用命令初始化并创建相应的目录,并将项目提交到本地仓库。
- 将本地仓库与远程项目关联
git remote add origin ssh://yangwei@192.168.1.114:29418/preparation-station-system.git
关联远程仓库git push --set-upstream origin master
更新远程仓库
- 正常使用即可
远程仓库已经存在错误解决办法
git 提示fatal: remote origin already exists 解决办法
1、先删除远程 Git 仓
$ git remote rm origin
2、再添加远程 Git 仓库
$ git remote add origin 仓库地址
合并代码之前保存不需要合并的代码
git stash
git stash pop