一、什么是Git?
git是当前世界上最流行的分布式版本控制器,没有之一
二、什么是分布式?什么是集中式?
集中式:最大的问题就是太依赖中央服务器的存在,如果没有中央服务器,所有人都没办法进行版本控制等工作。
分布式:最大的特点就是每个人的电脑本身就是一个完整的版本库,如果没有网络也可以进行版本的控制。
注意:分布式的版本控制在实际开发过程中,为了方便代码的交换,通常还是会有一个台中央服务器。和svn的区别在于,git如果没有这个中央服务器也是能够工作的,就是交换代码不太方便。但是svn脱离的中央服务器就完全没办法工作。
三、Git的起源
Git发明者就是Linux之父 - Linus
Linus在1991年开创了Linux。
那个时候,世界各地的大神自发开始对Linux进行相关的代码维护。对于这种情况来说,版本控制就是一个很大的问题。
在2002年之前,Linus都是手动整合。这个情况持续到2002年之后,随着Linux的源码越来越大,社区的人数也越来越多,手动整合就变得越来越困难了。
这个时候,有一家商用版本控制器的公司BitMove,处于人道主义精神,免费授权Linux社区免费使用他们的版本控制器。
这种情况就几年的时间,Linux社区的一个大牛就破解了这个版本控制系统,BitMove就收回了Linux社区免费试用权。
Linus就花了2周的时候用c语言写了一个Git,仅仅只有1个月时间,Linux的所有源码全部托管了Git上。
git的名声变得越来越大,并且2008年的时候,GitHub上线,无数的开源项目迁移到GitHub上进行托管。
四、Git的安装
五、Git的基本结构
六、Git的基本命令 - 本地库的操作
新建git管理库:
git init - 新建当前路径为Git版本库
git init [path] - 新建指定的路径为Git版本库
配置签名(因为Git本身没有账号系统,当前的签名就是你的身份认证):
用户签名 - 跟当前的Git管理库绑定,其他的Git管理库无效:
git config user.name "ken"
git config user.email "ken@qq.com"//可以是假的邮箱
系统签名 - 当前电脑上的所有Git管理库都有效:
git config --global user.name "ken"
git config --global user.email "ken@qq.com"
查看状态
git status - 查看当前Git管理库的状态
操作暂存区
git add [文件名称] -将工作区的指定文件提交到暂存区中
git add . -将当前路径下的所有文件提交到暂存区
git rm --cache [文件名称] -将暂存区中的文件移除
git commit [文件1] [文件2] -将暂存区的文件提交到本地库中(这个过程需要手写一个备注)
git commit -m "备注" [文件] -将暂存区的文件提交到本地库中(直接在命令上指定备注)
git commit -将暂存区的所有文件提交到本地库
历史记录的操作
git log -查看历史版本(比较全)
git log --oneline -按照一行的方式,显示当前的历史版本(只会显示当前版本以及之前的版本)
git reflog -按照一行的方式,显示当前的历史版本(会显示所有的历史记录版本)
git reset --hard [版本号] -定位到指定的历史版本
找回删除的文件
删除的文件没有提交到本地库:git checkout -- [被删除的文件]
删除的文件提交到本地库:git reset --hard [文件未被删除的版本号]
文件的差异比较(建议使用图形界面)
git diff [文件名] -将工作区的文件和暂存区的文件进行差异比较
git diff -将工作区的所有文件和暂存区进行差异比较
git diff [版本号] -将工作区的所有文件和指定版本进行差异比较
分支的操作
什么是分支?
在实际开发过程中,版本的更新提交可能不能直接操作主线(主分支),这个时候就可以考虑从主分支上开辟一个新的分支,新的分支和主分支一模一样,但是对新分支的操作不会影响主分支,等新分支完成任务之后,再合并回主分支就好了。
分支的特点:
· 分支不一定要从主分支分出来,子分支也可以随意创建分支
· 分支的合并也不一定是合并到主分支上,也有可能是从主分支合并到子分支上
分支的相关命令:
git branch -v -查看当前管理库的所有分支
git branch [分支名称] -从当前所在的分支开创一个新的分支
git checkout [分支名称] -切换到指定的分支上(注意:切换分支的时候,如果当前分支有未提交的内容,则会随着分支的切换一起带过去)
git merge [分支名称] -合并分支(注意:当前必须定位到被合并的分支上,然后执行该命令;合并分支有很大的可能发生冲突,冲突的解决办法和SVN相同)
git branch -d [分支的名称] -删除分支(注意:如果一个分支没有发生过任何的合并,git不让删除这个分支,如果需要强制删除,则执行-D)
七、Git的基本命令 - 远程库的操作
git remote -v -查看当前本地管理的远程仓库
git remote add [别名] [仓库的地址] -添加远程仓库的管理,设置一个别名
git push [别名] [分支名] -将本地仓库的文件或者修改推送到指定的远程库中
git clone [仓库的url] -将远程库的文件克隆到本地(本地还没有和远程库建立联系,用clone)
git pull [别名] [分支名] -将远程库的修改拉取到本地(本地已经和远程库建立联系,用pull)
八、GitHub
什么是GitHub?
是一个全球最大同性交友网站 - GayHub
网址:
https://github.com
九、Idea如何操作Git
相关配置: