git
各种协议的区别
将git仓库备份到本地
哑协议传输进度不可见,智能协议传输进度可见
智能协议比哑协议传输速度更快
本地协议:
* /path//to/repo.git -> 哑协议
* file:///path/to/repo.git -> 智能协议
http/https协议 -> 平时接触到的都是智能协议
ssh协议 ->工作中最常用的智能协议
开源协议
简略,有图:https://www.jianshu.com/p/388e856f82ef
详细:https://www.cnblogs.com/Wayou/p/how_to_choose_a_license.html
远程库地址别名:查看、创建、修改、删除
git remote -v
查看当前所有远程地址别名
git remote show [远程地址别名]
查看指定的远程库信息
git remote add [远程地址别名] [远程地址]
创建远程库地址别名。例如:
git remote add datastructure http://ashdahsdhahsd.asdahd.git
git remote rename [原名] [新名]
修改远程库地址别名
* 分支名也会同步修改:由“原名/master”变成了“新名/master”
git remote remove [远程地址别名]
删除指定的别名
git remote prune [远程地址别名]
本地有很多其实早就被删除的远程分支,可以用 git remote prune origin 全部清除掉,这样再 checkout 别的分支时就清晰多了
git remote rm [远程库地址别名]
删除对应的远程库(慎用)
碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库
SSH登录 --遇到的问题
1_进入当前用户的家目录
cd ~
2_删除.ssh目录
rm -rvf .ssh
3_运行命令生成.ssh密钥目录(注意参数C大写)
ssh-keygen -t rsa -C yusli@yusli.com
4_进入.ssh目录查看文件列表
cd .ssh
ls -lf
5_查看id_rsa.pub文件内容
cat id_rsa.pub
6_复制id_rsa.pub文件内容,登录Github,点击用户头像 -> Settings -> SSH and GPG keys
7_New SSH Key
8_输入复制的密钥信息
9_回到Git bash创建远程地址别名
git remote add [别名] [项目的SSH地址]
例如:
git remote add datastructure_ssh git@github.com:xiangmumingcheng/cangku.git
10_推送文件进行测试
除了上面的方法,还可以这样:(两条命令)
配置ssh公私钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
pbcopy < ~/.ssh/id_rsa.pub
推送(push)
->撤销远程push、远程commit、删除远程分支的方法
-> 解决git push很慢的问题
git push -u [远程地址别名] [分支名]
推送master,并且建立与远程库中master的track
* 在第一次push的时候使用这个。第一次push时,远端没有对应本地的分支,因此需要建立track
* 以后就不用加 -u 了
建立track的好处:
1_ git status的时候可以显示领先/落后的多少个commit。
2_ git push的时候可以省略后两个参数。
3_ git pull的时候可以省略后两个参数。
git push [别名] [分支名]
上传代码及快速合并。当以前执行过上面那条的时候,就直接执行这条即可
例如:
git push datastructure master
git push --tags
上传所有标签
git push [别名] :[分支名/标签名]
删除远程分支或标签
* 注意冒号
克隆(clone)
git origin [远程地址]
效果:
完整的把远程库下载到本地
创建origin远程地址别名
初始化本地库
更新(fetch)
git fetch [远程地址别名] [远程库分支]
从远程库中更新commit
例如:git fetch origin master
git fetch [远程地址别名] —prune
和远程仓库同步
拉取(pull)
pull = fetch + merge
git pull [远程地址别名][远程分支名]
下载代码与快速合并
解决远程库冲突
-> git rejected
1_如果不是基于GitHub远程库的最新版所作的修改,不能推送,必须先拉取
2_如果拉取下来之后进入冲突状态,按照“分支的解决冲突”操作进行
3_或者使用强行推送
git push -f [远程地址别名] [分支名]
跨团队协作(fork)
在GitHub里操作:
本地修改后推送到远程
审核与合并代码,全部在Github里操作。因此省略。
团队成员邀请
在github里操作: