异想天开

What's the true meaning of light, Could you tell me why

git操作记录

日期:2019-06-22 12:25:44
  
最后更新日期:2019-06-22 12:25:44
记录一下,最近git使用的两个场景。
第一个:git合并版本开发。假设有两个编程大师段誉和慕容复共同开发一个项目,段誉和慕容复第一次同时拉取项目, 慕容复更新提交到了主干分支,这时段誉也巴拉巴拉改好了代码,怎么merge呢?
段誉可以来做,拉取远程最新的分支
mkdir workerspace; cd workerspace
git clone 项目远程地址
创建自己的develop分支
git checkout -b develop
然后将自己的代码覆盖到本地,提交
git add *
git commit -m "小功能"
这时不用提交到远程,切换本地分支merge
git checkout master
git merge develop
若没有冲突,会自动合并,冲突则手动解决下冲突文件,提交。

第二个:使用码云git无密码探究
一个项目明明设置了私有,git clone 的时候也不需要输入密码,吓一跳,让朋友clone一下,反馈说需要输入密码。
google搜索了一下,原来是git有一个git credential 【1】存储凭证的概念,如果是http/https这类请求,git credential 会代理填写用户名和密码, 至于存储位置就是根据不同系统有不同的存储。
[code lang="cpp"]
git config -l
credential.helper=manager
[/code]
上面显示为manager,是因为我下载的Git gui,集成了微软的Git-Credential-Manager-for-Windows,会将密码保存安全存储区Windows Credential Store, 总之明文文件和内存存储都是可以配置的。
[code lang="cpp"]
git config --global credential.helper store //密码明文本地文件存储
git config --global credential.helper cache //内存存储
[/code]
git credential fill 来演示根据不同的host, 获取不同的用户名和密码以及没有密码时交互式填写。
[code lang="cpp"]
$ git credential fill (1)
protocol=https (2)
host=mygithost
(3)
protocol=https (4)
host=mygithost
username=bob
password=s3cre7
$ git credential fill (5)
protocol=https
host=unknownhost

Username for 'https://unknownhost': bob
Password for 'https://bob@unknownhost':
protocol=https
host=unknownhost
username=bob
password=s3cre7
[/code]
至此完
参考:
1. git 凭证存储 https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%87%AD%E8%AF%81%E5%AD%98%E5%82%A8
2. https://github.com/Microsoft/Git-Credential-Manager-for-Windows