git学习笔记3
git学习笔记3
-
GitHub的使用
- 我们一直用GitHub作为免费的远程仓库,其实GitHub还是一个开源协作社区。
- 如何开源一个项目呢?这里一bootstrap项目为例,可以先访问它的项目主页https://github.com/twbs/bootstrap,点
Fork
就在自己账号下克隆了一个bootstrap仓库,然后从自己的账号下clonegit clone [email protected]:michaelliao/bootstrap.git
- 一定要从自己的账号下clone仓库,这样才能推送修改,如果从bootstrap的作者的仓库地址[email protected]:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。
- 如果你修复了bootstrap的一个BUG,或者新增了一个功能,并且希望bootstrap的官方库能接收你的修改,你就可以在GitHub上发起一个
pull request
. - 小结
- 在GitHub上,可以任意Fork开原仓库
- 自己拥有Fork后的仓库的读写权限
- 可以推送 pull request给官方仓库来贡献代码
-
码云的使用
- 由于GitHub是国外的网站,我们会遇到访问速度慢甚至无法访问的情况,所以我们可以使用国内的Git托管服务–码云
- 码云也提供了免费的Git仓库,此外,还集成了代码质量检测,项目演示等功能,对于团队协作开发,码云还提供了项目管理,代码托管,文档管理的服务,5人以下小团队免费。
- 码云的使用和GitHub类似,在码云上注册并登陆后。需要先上传自己的SSH公钥。选择右上角用户头像 -> 菜单“修改资料”,然后选择“SSH公钥”,填写一个标题,然后把用户主目录下的
.ssh/id_rsa.pub
文件的内容粘贴进去。添加完成后点击确定即可完成并看到刚才添加的KEY: - 如果我们已经有了一个本地的git仓库(例如一我们之前的learngit的本地库),如何把它关联到码云的远程库上呢
- 首先,在码云上创建一个新项目,选择右上角用户头像 -> 菜单“控制面板”,然后点击“创建项目”(项目名称最好与本地库保持一致)
- 然后,我们在本地库上使用命令
git remote add
把它和码云的远程库关联:git remote add origin [email protected]:hzq137cjh/learngit.git
- 之后,就可以正常地用
git push
和git pull
推送了! - 如果在使用命令git remote add时报错:
git remote add origin [email protected]:hzq137cjh/learngit.git
fatal: remote origin already exists.
这说明本地库已经关联了一个名叫origin
的远程库,此时,可以先用git remote -v
查看远程库信息:git remote -v
origin [email protected]:hzq137cjh/learngit.git (push)
可以看到,本地库已经关联了origin的远程库,并且,该远程库指向GitHub。 - 我们可以删除已有的GitHub远程库:
git remote rm origin
再关联码云的远程库(注意路径中需要填写正确的用户名):git remote add origin [email protected]:hzq137cjh/learngit.git
此时,我们再查看远程库信息:git remote -v
origin [email protected]:liaoxuefeng/learngit.git (push)
现在可以看到,origin
已经被关联到码云的远程库了。通过git push
命令就可以把本地库推送到Gitee(码云)上。
- 那么一个本地库能不能既关联GitHub,又关联码云呢?答案是可以的,因为Git本身是一个分布式版本控制系统,可以同步到另外一个远程库,当然也可以同步到另外两个远程库。
使用多个远程库时,git给远程库起默认名称室origin
,如果有多个库,我们需要用不同的名称来标识不同的远程库。 - 仍然以
learngit
本地库为例,先删除已关联的名称origin
远程库:git remote rm origin
然后,先关联GitHub的远程库:git remote add github [email protected]:hou137cjh/learngit.git
注意,远程库的名称叫github
,不再叫origin
了
接着,再关联码云的远程库:git remote add gitee [email protected]:hzq137cjh/learngit.git
同样的,远程库的名称叫gitee
,而不是origin
了
现在,我们用git remote -v
查看远程库的信息可以看到两个远程库: - 如果要推送到GitHub,使用命令:
git push giuhub master
- 如果要推送到码云,使用命令:
git push gitee master
- 这样一来,我们的本地库就可以同时与多个远程库互相同步
- 码云同样也提供了PULL request功能,可以让其他小伙伴参与到开源项目中来。
-
自定义Git
- 让Git 显示颜色,会让命令输出看起来更新慕:
git config --global color.ui true
这样Git会适当地显示不同的颜色
- 让Git 显示颜色,会让命令输出看起来更新慕:
-
忽略特殊文件
- 有些时候,必须要把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件。针对这个问题,Git提供的解决办法是在Git工作区的根目录下创建一个特殊的
.gitignore
文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件,不需要从头写.gitignore
文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有的配置文件可直接在线浏览:https://github.com/github/gitignore -
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件,可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如java文件编译后产生的
.class
文件; - 忽略自己的带有敏感信息的文件,比如存放口令的配置文件。
配置好忽略的文件类型后,把
.gitignore
也提交到Git,就完成了,当然检验.gitignore
的标准是git status
命令是不是说working directiry clean
- 有时候,想添加一个文件到Git,但发现添加不了,原因是这个文件被
.gitignore
忽略了:$ git add App.class
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them
如果你确实想添加该文件,可以用-f
强制添加到Git :$ git add -f App.class
或者你发现,可能是.gitignore
写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore
命令检查:$ git check-ignore -v App.class
.gitignore:3:*.class App.class
上述情况就是.gitignore
的第三行规则忽略了该文件,于是我们就可以知道应该修订哪个规则 - 小结
- 忽略某些文件时,需要编写
.gitignore
; -
.gitignore
文件本身要放到版本库里,并且可以对.gitignore
做版本管理
- 忽略某些文件时,需要编写
- 有些时候,必须要把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件。针对这个问题,Git提供的解决办法是在Git工作区的根目录下创建一个特殊的
-
配置别名
- 经常敲错命令怎么办,比如
git status
,这个status
这个单词不好记,如果敲git st
就表示git status
就简单多了。为了达到这种目的,我们只需要敲一行命令,告诉Git,以后st
就表示status
:git config --global alias.st ststus
,看看效果: - 当然还有很多别的命令可以简写,很多人都用
co
表示checkout
,ci
表示commit
,br
表示branch
:git config --global alias.co checkout
git config --global alisa.ci commit
git config --global alisa.br branch
-
--global
参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用 - 在撤销修改那一部分中,我们学习到了命令
git reset HEAD file
可以吧暂存区的修改撤销掉(unstage),重新放回工作区。既然是一个unstage操作,就可以配置一个unstage
别名:git config --global alisa.unstage 'reset HEAD'
当敲入命令git unstage test.py
实际上执行的是:git reset HEAD test.py
- 配置文件,配置Git的时候,加上
--global
是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。 - 配置文件放哪了?每个仓库的Git配置文件都放在
.git/config
文件中
- 经常敲错命令怎么办,比如