- git diff
- git commit
- git reset HEAD
- git config
- git rm
- git mv
- git branch
- 合并冲突
- 查看提交历史
- 标签
- 共享标签
- 删除标签
- 标签使用
- 别名
- 回退版本
- 忽略文件
- 十、补充 (了解)
- 创建/删除本地分支并提交(2020-5-7)
- 某个分支上的某个log点,合并到某个分支
- <-s> 参数可以输出简短的结果日志
- 初始化仓库
git init <directory>
- 克隆
git clone <repo> <directory>
- 跟踪文件,将文件添加到缓存
git add <file>
- 查看项目当前状态
git status
- 提交说明
git commit -m "说明"
- 提交到缓存区
git add [file | . | *]
git diff
git diff
尚未缓存的改动git diff --cached
已缓存的改动git diff HEAD
所有改动git diff --stat
显示摘要而非整个diff
git commit
git commit
将缓存区内容添加到仓库中git commit -am
跳过提交缓存
git reset HEAD
git reset HEAD <file>
取消已缓存的内容
git config
git config --global user.name 'zzzxb'
git config --global user.email 'idearfree@outlook.com'
git rm
git rm <file>
从已跟踪文件清单中移除文件git rm -f <file>
删除修改过并且已经放到暂存区域的文件-f
强制选项- `git rm –cached
把文件从暂存区移除
git mv
git mv
移动、重命名一个文件、目录、软连接
git branch
git branch (branchname)
创建分支命令git checkout (branchname)
切换分支命令git checkout -b (branchname)
创建并立即切换到该分支git merge <branchname>
合并分支命令
合并冲突
- 合并分支并手动修改
查看提交历史
git log
日志git log --oneline
简洁版git log --reverse --oneline
逆向显示所有日志git log --author=zzzxb --oneline -5
获取某个作者的日志git log --oneline --before={3.weeks.age} --after={2010-04-18} --no-merges
根据时间查询日志
标签
- 创建轻量标签
git tag v1.1.0
- 创建附注标签 ( 就是带说明的轻量标签 )
git tag -a v1.1.1 -m "说明文字"
- 注意,创建的标签会自动 打在最近的提交点上
- 如果要给过往的提交点 追打标签,需要 git log 去查看提交点的 “commitID”
git tag [-a] v1.1.1 "commitID"
- 查看所有分支上的所有标签
git tag
- 查看标签名以 “v1.1” 开头的标签
- 显示标签及其对应的提交信息
git show v1.1.0
共享标签
- 同步一个标签
git push origin v1.1.1
- 同步所有标签
git push origin --tags
删除标签
- 本地删除标签
git tag -d v1.1.1
- 删除远程仓库中的标签
git push origin :refs/tags/v1.1.1
标签使用
- 分离一个指针到 v1.0 提交点位置
git checkout v1.0
git checkout commit ID
- mvn package
git checkout "任意分支"
别名
- git ck等价git checkout
git config --global alias.ck checkout
- git commitm 等价 git commit -m
git config --global alias.commit "commit -m"
- git br
git config --global alias.br branch
- 删除alias.commitm
git config --global --unset alias.commitm
回退版本
git log --oneline
获取提交历史git reset HEAD <id>
通过一步的id进行回退git push -f -u origin master
提交到主分支
忽略文件
在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。
- git reset –mixed HEAD~
- git reset –hard HEAD~
- git resst –soft HEAD~
回退是指:提交点回退。就是在某个分支上指针后移。回到之前的某个版本。
# 基本使用: 当前分支 指针回退两步,就是回退到上上一个提交点。(无论是 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 项目的根目录
创建并推送
-
创建本地分支
git branch 分支名字
-
切换到新分支
git checkout 分支名字
-
推送到远程仓库
git push origin 分支名字
删除并推送
-
查看本地分支,以及同步情况(发红的是已经同步到远程仓库了)
git branch -a
-
仅删除本地分支
git branch -d 分支名字
-
仅删除远程仓库分支(冒号必须带的)
git push origin :分支名字
某个分支上的某个log点,合并到某个分支
比方说我又分支 A, B, 在此 B 分支已经提交了10次了,但我只想合并某一次的提交.
git checkout B
首先切换到B分支,需要获取题提交log的分支git log
或git reflog
查询B分支提交情况,并复制某一次提交的的 commitidgit checkout A
切换到 A 分支,需要合并数据到的 A 分支git cherry-pick commitid
这样,B 分支下的某个时间点提交数据,就合并到了 A 分支下