git 使用教程

之前使用Github,感觉国内速度很慢,就想国内的Git服务器,推荐了使用oschina

1. 安装 git 工具  git bash 点击这里下载

  具体安装步骤不说了 ,安装的时候选择 git bash    

   1.1安装好后, 在开始菜单中启动 git bash 

        

   1.2 使用ssh-keygen 工具生成公钥(public key)

       ssh-kengen -t rsa -C "公钥key"  这里的key就是 注册oschina的邮箱.  执行时 3个回车

        

  生成公钥在 当前路径的  .ssh文件夹中

     

公钥的(value) 就是 id_rsa.pub 里面的内容

查看生成的公钥,并将公钥内容拷贝添加到  http://git.oschina.net/keys 公钥管理里面

 1.3 查看配置是否成功

   

看到 welcome to git@OSC 表示成功了

1.4  配置本地用户和邮箱

  用户名邮箱作用 : 我们需要设置一个用户名 和 邮箱, 这是用来上传本地仓库到GitHub中, 在GitHub中显示代码上传者;
  使用命令 :
git config --global user.name "finder" //设置用户名 
git config --global user.email "xx@163.com" //设置邮箱

  至此 git客户端已经安装和配置完成了,可以从oschina上传下载了。

  2. 使用 TortoiseGit GUI工具上传下载代码

    下载地址

      1.  在 oschina 上新建项目  prj01

      2. 把本地的项目导入prj01  

          右键项目文件夹 =》Git create repository here => Git add => git commit => git push (会先提示git pull)

        在进行pull 出现错误: fatal: refusing to merge unrelated histories

      这时 打开 git bash  进入到 此 repo中 

     执行  $  git pull  origin master --allow-unrelated-histories

     注意 要加  --allow-unrelated-histories 参数

   因为 我是把之前的本地仓库导入到 oschina上新建的仓库  ,所以2个仓库不同 需要先 pull ,把亮哥不同项目合并

  3. 下载OSCHINA上项目 本地存在此项目非空目录 关联项目问题

   解决的办法是:


1. 进入非空目录,假设是 /workdir/proj1
2. git clone --no-checkout https://git.oschina.net/NextApp/platform.git tmp
3. mv tmp/.git .   #将 tmp 目录下的 .git 目录移到当前目录
4. rmdir tmp
5. git reset --hard HEAD

 就可以了    

 项目中使用私有库

 1.  git 公钥加入到 git 服务器

 1.1   将 ssh 转化 http 请求

git config --global url.git@gitee.com:.insteadOf https://gitee.com/

 2.  支持代理,和直接拉代码

 go env -w GOPROXY=https://goproxy.io,direct

  3.  通过 GOPRIVATE 控制私有库不走代理

  go env -w GOPRIVATE=*.gitlab.com,gitee.com

 4. 其他

如果在运行go mod vendor时,提示Get https://sum.golang.org/lookup/xxxxxx: dial tcp 216.58.200.49:443: i/o timeout,则是因为Go 1.13设置了默认的GOSUMDB=sum.golang.org,这个网站是被墙了的,用于验证包的有效性,可以通过如下命令关闭:

goenv-w GOSUMDB=off

私有仓库自动忽略验证

可以设置 GOSUMDB="sum.golang.google.cn", 这个是专门为国内提供的sum 验证服务。

goenv-w GOSUMDB="sum.golang.google.cn"goenv-w GOSUMDB="sum.golang.org"

-w 标记 要求一个或多个形式为 NAME=VALUE 的参数, 并且覆盖默认的设置

苹果电脑需要加一步:

$ ssh-keygen -p.      设置密码 第一次输入 ,其他直接回车 就可以正常拉代码了

 私有库解决方案3  TOKEN

第一步,你需要获取到私有的 token,它位于:

https://gitlab.mycompany.com/profile/account

第二步,配置你的 git,加入你的私有 token:

$ git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN

第三步,将 ssh 转化 http 请求,如下:

$ git config --global url."git@gitlab.mycompany.com:".insteadOf "https://gitlab.mycompany.com/"
````

最后,使用你的 go get 吧!

才找到真正的原因,公司网络比较缓慢情况下,就断开了

git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999

增加最低速度时间,总算把代码克隆下来了。

docker中accessTokens拉取私有git仓库

背景
当需要git clone拉取私有库时,传统的做法为将本机的ssh配置到gitlab中。但在docker中执行程序时需要拉取私有库,此时无法为每个docker容器配置ssh。网上的一种方案为,将配置好的ssh同步到docker容器中,覆盖其中的ssh秘钥等,但在尝试过程中,发现了问题,ssh秘钥需要验证是否被盗用(可能有解决办法),因此我尝试换种方案。
解决办法
使用gitlab中的accessTokens。
1、登录到GitLab.
2、点击右上角的头像,然后选择设置 .
3、在" 用户设置"菜单上,选择" 访问令牌" .
4、选择令牌的名称和可选的到期日期.
5、选择所需的范围 .
6、单击创建个人访问令牌按钮.
7、将个人访问令牌保存在安全的地方. 离开或刷新页面后,将无法再次访问它.

从而在docker容器中可以通过如下方式使用:

使用 username + accessToken 的方式克隆项目 但是 这个方式 拉取不下来

git clone https://$accessUserName:$accessToken@gitlab.com/.../xxx.git

https://starxs:1f93bf90070e2f1d5b31eb3f02d16@gitee.com/starxs/cps-data-api.git



accessToken拉取仓库时通常使用的是https协议,但我们的脚本程序中有较多的拉取使用的git协议,为了统一处理,使用git config --global --add url."".insteadOf“”方式处理,如下所示:
export accessUserName="......."
export accessToken="........"
git config --global --add  url."https://$accessUserName:$accessToken@gitlab.com/".insteadOf "git@gitlab.com/"
git config --global --add  url."https://$accessUserName:$accessToken@gitlab.com/".insteadOf "git@gitlab.com:"
git config --global --add  url."https://$accessUserName:$accessToken@gitlab.com/".insteadOf "https://gitlab.com/"
git config --global --add  url."https://$accessUserName:$accessToken@gitlab.com/".insteadOf "https://gitlab.com:"
 

可以使用 oauth2 + accessToken 的方式克隆项目.

gitee oauth2方式拉取成功

https://oauth2:1f93bf90070e2f1d5b31eb3f0@gitee.com/starxs/cps-data-api.git

在开发中,通常会保持两个分支master分支和develop分支,但是如果因为develop上面迭代太多而没有及时维护master,最后想丢弃master而直接将测试确认过的develop强推到master,该怎么操作呢?

1.切换到develop分支下,并保证本地已经同步了远端develop的最新代码

 
  1. git checkout develop

  2. git pull

2.把本地的develop分支强制(-f)推送到远端master。

git push origin develop:master -f

3.切换到旧分支master

git checkout master

4.下载远程仓库最新内容,不做合并。

git fetch --all

5.把HEAD指向master最新版本。

git reset --hard origin/master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值