刚上手。
个人理解。整理思路,不一定对。
一,git
1,git的概念体系中,文件有三/四种“存在状态/区域”:本地区(工作区,workspace),暂存/驿站区(stage),仓库区(repository)——仓库区又可分本地(local)仓库与远程(remote)仓库。
将文件比喻为工厂生产的产品(工作区视为厂房,车间),这组概念就有点形象了。
2,使用git add *可以将文件从本地(厂房,车间)搬到驿站。git reset <file>从驿站搬回本地(本地的当前状态的原文件会被直接覆盖。如果没有存到仓库,就有点麻烦了。所以reset前记得先commit)。
3,git commit从驿站(或工作区)搬到本地仓库。上传时需加上(对批次的?)自定义的描述文字。同样(同名)的“产品”也会以不同“批次”作为区分。所以取回产品时也应标注其“批次”:git reset <commit>——根据规范,这里应使用系统生成的hash<?>码(的至少前7位,经测试,多取几位也无妨)……使用“5,git log与reflog”可查看相关描述文字与hash码等信息……
4,git diff可以比对工作区与驿站区产品的差别。(“保存”在本地的内容才算是“工作区的产品”。)
diff追加批次号(至少前7位),则比对指定批次产品。
5,git log:当前及之前批次的产品(的文字描述与hash码等信息 )。
git reflog:当前产品的批次记录。
比如如果从仓库区取回了很早批次的产品,则之后再log,该批次之后的产品(批次号)都不会显示。但在reflog中,则会显示所有当前产品用过的“批次号”。
6,git push,从本地仓库搬到远程仓库。
git fetch,从远程仓库搬到本地仓库。
git pull/clone,从远程仓库搬到厂房。
二,github等远程仓库
使用ssh钥匙“开门”“送货”。
准备工作:
1,本地安装,开启ssh服务
sshd(ssh server)是给别人提供ssh服务的,不用开。
ssh agent(代理人,施事者)是(代替我们)向(比如github那边的)ssh server发起ssh服务的。才是这次需要开户的服务。
在本地生成一对“钥匙”与“锁”。比如id_rsa(钥匙)与id_rsa.pub(门锁)。
在远程仓库区开个仓库,在那边把门锁装上。登录github,Account Settings——>SSH Keys——>Add SSH Key,title随便填,复制id_rsa.pub中的字符,粘贴key区。
3,在本地做好本地配置。包括:
3.1,ssh配置(config文件,可以放在生成钥匙的地方),其内容大致包括:
a,(向代理人说明)去的哪家仓库:HostName github.com
b,带上哪把钥匙:IdentityFile ~/.ssh/id_rsa
3.2,git配置(config文件,可以放在“厂区”生成的.git文件夹中),
a,表明身份:github(或别的目标远程仓库服务站点中所使用的)邮箱,用户名。
[user]
email=**@.com
name=账户名。
b,标明所用仓库(貌似可以在发起push时再选择或创建。真正需要手动写进配置文件中的,只有上面的表明身份部分。)
[remote "origin"]
url = https://github.com/……
4,一些其它问题。
比如被防火墙挡住了。
被防杀毒软件挡住了。
我就被火绒卡了几个小时,四舍五入就是一天。
生生逼得把上述所有流程都摸索了一遍。
一直报:connect to host github.com port 22: Operation not permitted
最后查看火绒安全日志,才发现问题所在。
联网控制允许联网,程序放白名单,都无法解除它对ssh联网的阻挡。
最后临时把它关了,才算通过了测试:在git bash下输入
$ ssh -T git@github.com