SSH方式连接并管理Git仓库

SSH Git IDEA

Posted by gomyck on June 22, 2019

安全高效的管理git仓库

git 分支版本管理策略

所有非主干分支, 在合并主干分支时, 均使用 rebase 来重新变基, 保证主干分支的提交记录是线性的, 便于查看提交记录

主干分支在合并非主干分支时, 要切换到非主干分支, 然后先用 rebase 变基, 提交后, 在切换回主干分支 merge

**分支通常不要 rebase merge 非 main 分支, 除非你知道你在做什么, 否则会造成分支混乱**

记住一句话: 冲突永远在分主干解决, 不要在主干 merge 时解决冲突

主干分支在合并非主干分支时, 使用 merge 来合并, 保证非主干分支的提交记录是线性的, 便于查看提交记录

也就是说, main 分支要用 –no-ff, 其他分支使用 –rebase, 这样可以保证主干是基, 其他分支变基时, 参考是主干

1.首先在本地创建rsa秘钥

1
$ ssh-keygen -t rsa -C "[email protected]"

2.把生成的秘钥复制到 ~/.ssh (如果是windows系统, 这个文件夹在c:/User/当前用户文件夹)文件夹下

3.把生成的秘钥全部设置700权限

4.然后输入命令:

1
$ ssh-add /path/to/key #(地址是私钥所在位置)  把生成的私钥添加到ssh代理秘钥库中

5.进入github 点击账户设置> ssh > new ssh key 把生成的公钥内容复制进去

6.本地尝试连接

1
$ ssh -T [email protected]   #不要改写这个地址, 测试连接的地址就是[email protected]

如果控制台打印

Hi username! You've successfully authenticated, but GitHub does not # provide shell access

说明配置好用了

下载远程git项目的话 使用 sudo git clone 你的git仓库ssh下载地址

下载的项目无需输入用户名密码即可同步操作远程仓库

另附Git使用中常用命令及使用方法

如果使用git 首先要初始化两个全局变量

1
2
3
$ git config --global user.email "your email"
$ git config --global user.name "your name"

常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ git init # 在当前文件夹新建仓库
$ git add xxx.txt # 添加文件到版本管理
$ git commit -m "提交信息"  # 提交当前所有文件到本地仓库
$ git log --pretty=oneline # 查询提交日志
$ git reflog  # 查看命令执行记录 (对于找回版本号很用用)
$ git stauts # 查看当前版本状态
$ git diff 文件名  # 比较当前文件与版本库之间的差异
$ git reset --hard HEAD^  # 回滚到上一个版本 ^表示上一个版本  ^^表示上两个版本 ~11表示后退11个版本 或者 指定版本号 表示回退到指定版本
$ git remote add origin [email protected]:xxx/xxx.github.io.git # 添加一个远程仓库地址, origin是个远程仓库别名, 最好用大众认可的默认名称, 当然, 随心随性咯
$ git push -u origin master # 提交本地仓库更改, master代表提交master分支的代码
$ git pull --rebase origin master # 更新代码
$ git remote -v  # 查看远程仓库地址
$ git remote set-url origin [email protected]:mzxc/mzxc.github.io.git  # 修改远程仓库地址
$ git tag xxx -m 注释    #生成 tag
$ git push --tag        #提交 tag
$ git config --list #查看config配置
$ git config user.name #查看git用户
$ git credential-manager uninstall  #清除缓存的用户名和密码
$ git config --global user.name "username"   #更改全局用户名
$ git config --global user.email "[email protected]" #更改全局邮箱
$ git checkout tag_name #检出 tag 分支, 但不允许提交
$ git checkout -b branch_name tag_name #把 tag 新建分支
GIT一些其他知识

用户信息: 控制面板—-用户账户—Windows管理凭据—编辑

在开发过程中, 通常会新建一个主干(master), 然后在当前分支上, 新建一份新的分支, 用来开发自己的业务代码, 当功能测试通过后, 在合并到主分支上

使用GIT可以同时向多个远程仓库推送代码(gitee和github), 只需要使用命令

git remote add origin_xxx uri

就可以添加多个远程仓库位置, 前提是origin_xxx是唯一的, 代表远程仓库的别名, 在提交的时候, 可以使用IDEA的git客户端功能, 或者使用命令:

git push origin_xxx master(这个master是本地分支的名称)

IDEA使用git

如果是git项目的话, 右下角小锁头左边会有git操作选项, 点击会看到以下选项:

local branch: 当前本地选择的分支 remote branch: 远程分支

点击(+new branch) 以当前代码为基础, 新增加一个本地分支, 这时local branch, 就可以看到两个分支了

点击你想切换的分支, 选择checkout就可以切换分支了

点击五角星, 可以收藏对应分支

使用pull功能里的刷新按钮(ctrl + r), 可以更新分支信息

有时候提交代码的时候可能会出现错误: SSH_EXCHANGE_…. remote reject 可能是你电脑网络问题, 配置下面的 hosts 可以正常提交代码 github hosts配置: 192.30.253.113 github.com

reset revert 的使用方式

reset 是回滚到某个版本, 以目标版本号为当前版本号, 但是不可以正常 push 到分支上, 因为其后续已经存在高版本的提交记录了, 要使用 git push -f 来强制提交, 一般来说我使用 reset 都是摘樱桃用(cherry pick)

revert 是撤销某个版本的提交, 比如版本 1, 2, 3, 4, 5 最大版本号位 5, 当前版本也是 5, 此时我想取消 3 版本更改的代码, 那么可以使用 git revert 3 来撤销 3 的代码更改, 而不影响 1, 2 版本, 撤销之后的版本为 1, 2, 4, 5