一:Git GitHub gitlab 三者的介绍
Git:是一个类似CVS,SVN的代码版本管理软件,用于敏捷高效地处理任何或小或大的项目,是一个完全分布式的版本控制工具。
Git的优点:①防止代码丢失;②远程同步代码;③利于团队协作;④记录代码版本;⑤代码还原
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步
GitHub:是一个用Git做版本控制的项目托管平台,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等,是程序猿发布和寻找好代码的天堂~
gitlab:是一款基于Git的项目管理软件
GitHub和gitlab都是基于Git建立的,可以说是git的衍生品
此处插一句广告,哈哈,GitHub是全球范围的代码托管平台,而码云是国内的代码托管平台,访问就比GitHub快多了。
或者可以利用域名重定向解决GitHub国内访问慢,方法在这: 武功秘籍
创建配置一个SSH密匙,在git bash命令框中执行命令 ssh-keygen -t -rsa -C "码云或者GitHub的邮箱地址",接着一路回车即可,最后就生成一个公钥(id_rsa.pub),可以放心给人看,一个秘钥(id_rsa),不能透露出去。
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub和码云只要知道了你的公钥,就可以确认只有你自己才能推送。GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
二:git常用命令的使用
注明:以下是根据廖雪峰大神的教程学习
1、git clone url地址(这个是代码托管地址) ——克隆远程仓库项目
git clone -b 分支名 url地址 ——克隆指定分支的内容到本地
2、cd git-demo(本地新建的git仓库)——切换到本地git仓库
3、git status ——查看本地git仓库的状态
4、git add Readme.txt(这个是要添加的文件)——添加要提交的文件到你本地仓库的代码
5、git commit -m "提交信息" ——提交到本地仓库
重要概念:Git跟踪并管理的是修改,而不是文件 (eg:每次修改,如果不add到缓冲区,就不会被加入到commit中)
6、git push ——推送到远程仓库
7、从远程仓库上拉取项目下来到本地仓库2方式:
①git fetch + git merge = git pull (推荐用这种) ②git pull (太强制了,冲突时会直接覆盖本地)
8、git branch ——查看本地分支
9、git branch --all ——查看所有分支(包括本地和远程)
10、git checkout dev ——切换到dev(自己新建的)分支
git checkout master ——切换到master主分支
git merge dev ——合并dev分支到当前分支
11、git init ——把当前文件夹初始化为git文件夹
12、git remote add origin url地址(远程代码仓库地址)——把本地的git仓库和远程的git仓库挂上钩
13、git diff 文件名 ——查看本地某个文件修改了什么内容
14、git branch 分支名 —— 新建一个分支
15、git log ——显示从最近到最远的提交日志,显示提交记录的详细信息
如果嫌输出信息太多,可以加上参数 -pretty=oneline 显示提交记录的简短信息
16、cat 文件名 ——查看某个文件的内容
17、git reset --hard HEAD^ ——把版本库回退到之前的版本,例如时光穿梭机,HEAD代表当前版本,HEAD^代表上一个版本,HEAD^^代表上 2个版本,HEAD~100代表上100个版本
18、git reflog ——用来记录你的每一次命令,所以找到了commit id就有后悔药吃了,但是记住如果push到远程仓库就没救了
19、git checkout -- 文件名 ——撤回未add到缓冲区的文件,记得--与文件名中间有个空格
20、git reset HEAD 添加到暂存区的文件名 ——git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。
21、rm 文件名 ——从本地工作区中删除文件,若是误删,可以使用git checkout -- 文件名 来从版本库中恢复文件到本地工作区。但要是使用命令git rm 文件名 再git commit 提交删除操作就从版本库中删除了文件,就恢复不了到本地工作区了
22、git push -u origin master ——由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
三:分支管理
你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
多人协作开发的规则,如下,基本都是先pull最新的下来改完再push
四:Idea结合git开发
1、创建项目(我自已有一个小练习),把它初始化为git项目,成功后文件夹会产生一个.git文件,这个文件是记录仓库的配置和版本的,最好不要动。
这些文件都会变红表示没有被追踪
2、右键项目 Git->Add 就把项目添加到缓冲区,文件就会变绿
3、右键项目 Git->Commit 就把项目提交到本地仓库中
确保没什么错的话就直接点commit了,如下
4、最后推送到远程仓库去
创建一个新分支并把代码上传到此分支
PS:使用命令行时遇到这个情况时:git add命令,git commit命令,最后git push命令推送到远程仓库,但是在git push 时出现了报错,百度了解决方案,如下,任选一种即可
这样本地的项目就推送到远程仓库了
推荐文章:
更新:
这有一篇非常简洁的文章将本地项目push到码云上的文章,我贴出来分享:通过git把本地项目push到码云上
还有可能是由于我之前改过git的密码,而本机计算机之前存的密码凭证没有更改过,所以出现了再clone和push项目时总是报错:fatal: Authentication failed for 'https://gitee.com/ 还有Incorrect username or password (access token)的错误、这里通过百度
输入命令git config --system --unset credential.helper 重置用户配置,之后再重新push就会让你重新验证用户名和密码了,于是问题得以解决。如下图操作: