一、Git是什么
git是目前世界上最先进的分布式版本控制系统。
工作原理/流程
workspace:工作区
index/Stage:暂存区
Repository:本地仓库
Remote:远程仓库
二、SVN与Git的主要区别
svn是集中式版本控制系统,版本库是集中放在中央服务器的,**将所有的文件都交由服务器来进行统一的管理。既然是有服务器的,那么就需要联网进行操作了。**而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
三、idea中git的使用
提交修改的代码:
依次点击CVS->git->commit file,然后选择提交的文件和提交的备注信息。先Commit到本地仓库。接下来就是推送到远程仓库。
推送修改,推送到远程仓库:
依次点击VCS->Git->Push。
可以去远程仓库查看提交情况。
查看历史:
选择Git->Show History。
**版本回退:**分为从本地仓库回退和远程仓库回退
本地仓库回退:找到提交日志,选择哪次的修改内容,复制revicion number,接下来依次点击VCS->Git->Reset HEAD。类型一定要选择hard,最后点击reset按钮。
远程仓库回退:
**切换分支:**checkout
pull:解决冲突:一个是覆盖,一个合并
git stash
用法介绍:
不提交代码,暂时保存修改的代码,拉取远程仓库新的代码,不会起冲突。
- 发现有一个类是多余的,想删掉它又担心以后需要查看它的代码,想保存它但又不想增加一个脏的提交。这时就可以考虑
git stash
。 - 使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码
commit
提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用git stash
就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后,再使用git stash apply
将以前一半的工作应用回来。 - 经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是
git stash
命令。储藏(stash)可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。
1、stash当前修改
git stash
会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
比如下面的中间状态,通过git stash
命令推送一个新的储藏,当前的工作目录就干净了。
2、重新应用缓存的stash
可以通过git stash pop
命令恢复之前缓存的工作目录
3、查看现有的stash
可以使用git stash list
命令
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
在使用git stash apply
命令时可以通过名字指定使用哪个stash,默认使用最近的stash(即stash@{0})