git
git
作用:代码管理工具,类似咱们的idea,idea是一个写代码的工具,git是管理代码的工具
使用过程:① 早上9点去公司,下载代码git服务器下载
② 白天自己开发自己的代码
③ 6点下班,一定要把当天的代码提交到服务器
git和svn的区别
svn:是集中式版本控制工具,只有单一的服务器
git:是分布式版本控制工具,有两台服务器
git基本命令
版本库:创建git,系统自动携带.git的隐藏文件
工作区:存放代码的地方
暂存区:临时存放代码的地方
标注的maven目录模板
----.settings
|
|--src
|
|---- main
|
| ------- java
| ------- resources
|---- test
| ------- java
| ------- resources
|--target
|--.classpath
|--.project
|-- pom.xml
1、HEAD:可以描述为当前分支最后一个提交。即本地的信息中的当前版本。
2、Index:在工作副本修改之后执行过git add操作的版本文件,可以commit了的。
3、Working Copy:工作副本是你正在修改,但是没有执行任何git操作的文件。
代码修改,还没做任何操作的时候就是 Working Copy,
git add * 操作之后就是Index,
git commit 之后就是HEAD。如果代码修改了之后进行git add 操作,然后git commit,那么所有三者(HEAD,INDEX(STAGING),WORKING COPY)都是相同的状态,内容相同。
reset
这个 Git 命令将重置 HEAD。但是我们的索引和工作目录不会受到任何影响。
重置本地分支的头部:
git reset --soft
Git只是单纯的把本地HEAD更改到你指定的版本那么,整个过程中,就HEAD的定义发生了变化,其他像Working Copy 和Index都没有变化。该参数用于git commit后,又要恢复还没commit的场景,重新审查代码,然后再推上去。
回滚到了和git add
之前的状态:
多回退了暂存区中的内容:
git reset --mixed 默认回滚
因为--mixed
参数是命令的默认选项,也就是不写任何参数就默认使用参数。即git reset HEAD^
等同于命令
它将重置HEAD到另外一个commit,并且重置index以便和HEAD相匹配。
git reset --hard 所以这个将导致本地的代码修改成上个版本
强制一致。**该参数用于在把工作副本改成一塌糊涂的时候,包括工作副本,一股脑恢复。**有些就单纯修改文件,其中有些git add了,有些git commit了,通通不管,可以一个命令恢复。
- 与
HEAD@{n}
与HEAD~n
功能类似,但是HEAD~n
回退的是git log
命令显示的历史提交记录,而HEAD@{n}
回退的是git reflog
命令显示的历史提交记录。
reflog
可以叫做显示可引用的历史版本记录
使用git log
命令只可以查看到HEAD指针及其之前的版本信息
如果版本发生过回退操作,则可能会出现,HEAD指针之后仍存在历史提交版本的情况,而这些提交版本信息通过git log
命令是看不到的。
冲突少用rebase 太多用merge
本地两个分支 一个我的分支 test 一个主分支 master
现在我修改的部分要合并到 master 上,可以有两种选择 merge 或者 rebase
一般情况下rebase都是会有冲突的,详细查看冲突可以用命令git status
然后就会显示哪个文件有冲突
rebase 和 merge的另一个区别是rebase 的冲突是一个一个解决,如果有十个冲突,先解决第一个,然后用命令
git add -u
git rebase --continue
继续后才会出现第二个冲突,直到所有冲突解决完,而merge 是所有的冲突都会显示出来
无论是个人单机开发,还是公司协作开发,只要没有特殊需求,用merge准没错!!!