Zzzxb's Blog

你要静心学习那份等待时机的成熟的情绪,也要你一定保有这份等待之外的努力和坚持。

Git的简单应用

git diff

git commit

git reset HEAD

git config

git rm

git mv

git branch

合并冲突

查看提交历史

标签

共享标签

删除标签

标签使用

别名

回退版本

忽略文件

在idea开发时,会有很多和项目本身无关的文件

还有一些是不能共享的项目文件,比如包含自己数据库信息的 db.properties

还有java的字节码文件 此类文件,不必出现在版本控制中,可以在项目根目录下创建忽略文件:.gitignore,文件中定义

# 所有class后缀文件
*.class
# abc.class除外
!abc.class

十、补充 (了解)

10.1 储存工作

功能还没写完,还不适合提交,但此时需要去解决另一个bug,需要切换分支,则当前功能工作区中的改动会被新分支的内容覆盖,所以此时可以先储存下当前功能的内容,然后就可以放心的切换到其他分支先干别的事,过后再回来。

git stash :储存当前修改( 未提交的内容 ,包括未暂存和已暂存的)

#                                             分支                      文件
Saved working directory and index state WIP on dev: a795274 dev commit Test.java

git stash list:查看存储列表

# 标识            分支                      储存文件
stash@{0}: WIP on dev: a795274 dev commit Test.java

git checkout 其他分支:可以放心的切到其他分支,完成其他工作

git checkout dev:切回dev分支,并:git stash apply:恢复储存的工作,继续编码

注意:没用的存储建议删除:git stash drop stash@{0}:删除某一个储存点

git stash clear:清空所有储存点

10.2 回退详解

三种回退模式:mixed、hard、soft,默认mixed。

回退是指:提交点回退。就是在某个分支上指针后移。回到之前的某个版本。

# 基本使用: 当前分支 指针回退两步,就是回退到上上一个提交点。(无论是 mixed,soft,hard)
git reset HEAD~~
git reset HEAD~2
# 基本使用: 当前分支 指针指向到对应commitID的的提交点
git reset commitID

会退时,除了指针必然移动,还有些细节:

##################### Soft ##########################
# 指针后退一步,但暂存区内容不变,工作区内容不变
git reset --soft HEAD~
加入有3个提交点,依次为 A --> B --> C
A中:添加一个文件abc.txt
B中:修改abc.txt,及其他一些修改
C中:添加一个文件def.txt 并提交。
C中:继续修改,并最终完成功能,做最终提交。可以还有一种选择:
【先从C回退到A,然后再提交,提交点就变为:A --> D.提交后内容总量不变,但起到提交点被压缩】
##################### Mixed ##########################
# 指针后退一步,但暂存被清空:即版本库回到了上次提交的状态。 但工作区不变。
git reset --mixed HEAD~
# 然后执行:
git checkout -- abc.txt #从版本库中拉取abc.txt文件,可以将工作区的某个文件回退到上个版本
##############################################
# 或者执行,达到将暂存内容清空
git reset --mixed HEAD #指向当前提交点,其实没回退指针,但会清空暂存。
# 然后执行:
git checkout --abc.txt ##从版本库中拉取abc.txt文件,恢复当当前版本的原始状态 ( 撤销了所有修改 )
###################### Hard ###########################
#指针后退一步,暂存清空,且将工作区也同步到指针所指的状态
git reset --hard HEAD~  # 用于拉取某个特定提交点的文件

10.3 修补提交

提交后发现有问题,比如有些注释忘记修改,比如提交描述不够详细等等。

当然可以修改后,在提交一次,但是还有更好的办法:

git commit --amend -m"xxxxx":会再次提交并替换上次提交

创建/删除本地分支并提交(2020-5-7)

进入到 git 项目的根目录

创建并推送

删除并推送

某个分支上的某个log点,合并到某个分支

比方说我又分支 A, B, 在此 B 分支已经提交了10次了,但我只想合并某一次的提交.

这样,B 分支下的某个时间点提交数据,就合并到了 A 分支下