git

Author Avatar
kevin
发表:2020-05-27 16:59:00
修改:2024-10-09 16:59:24

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了,通通不管,可以一个命令恢复。

  1. 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准没错!!!

评论