0


linux系统git常规操作

Git命令常规操作

常用命令说明

命令命令说明add添加文件内容至索引,暂存区bisect通过二分法查找定位引入 bug 的变更。二分法:每次截取总数的一半寻找bugbranch列出、创建或删除分支checkout检出一个分支或路径到工作区,-b 切换分支,分支不存在就创建clone克隆一个版本库到一个新目录commit暂存区上传到本地仓库diff显示提交之间、提交和工作区之间等的差异,对比本地仓库和远程仓库差异fetch从另外一个版本库下载对象和引用grep输出和模式匹配的行,查找内容init创建一个空的仓库log显示提交日志,reflogmerge合并两个或更多开发历史mv移动或重命名一个文件、目录或符号链接pull获取并合并另外的版本库或一个本地分支,本地仓库拉去远程仓库代码push更新远程引用和相关的对象rebase本地提交转移至更新后的上游分支中reset重置当前HEAD到指定状态 ,git reset --hard commit的值rm从工作区和索引中删除文件,–cached 只从索引区删除,-f 删除暂存区和本地文件show显示各种类型的对象status显示工作区状态tag创建、列出、删除或校验一个GPG签名的 tag 对象

常用操作示意图

1190037-20171130170959948-2117269594.png

文件的状态变化周期

1190037-20171130171009651-1964332055.png

添加文件跟踪

git add .

git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#    新文件:    README
#
---
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   README
#
文件会添加到.git的隐藏目录
[root@gitlab git_data]# tree  .git/
.git/
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── objects
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
└── refs
    ├── heads
    └── tags
由工作区提交到本地仓库
[root@gitlab git_data]# git commit  -m 'first commit'  
[master(根提交) bb963eb] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README
查看git的状态
[root@gitlab git_data]# git status
# 位于分支 master
无文件要提交,干净的工作区

# On branch master
nothing to commit, working directory clean
提交后的git目录状态
[root@gitlab git_data]# tree  .git/
.git/
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       └── heads
│           └── master
├── objects
│   ├── 54
│   │   └── 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
│   ├── bb
│   │   └── 963eb32ad93a72d9ce93e4bb55105087f1227d
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
└── refs
    ├── heads
    │   └── master
    └── tags

删除文件

git rm --cached 文件名   //只从索引区删除

git rm -f 文件名     //删除暂存区和本地文件

重命名暂存区数据

没有添加到暂存区的数据直接mv/rename改名即可。

已经添加到暂存区数据

git mv 原名 新名字

查看历史记录

git log   #→查看提交历史记录

git log -2   #→查看最近几条记录

git log -p -1  #→-p显示每次提交的内容差异,例如仅查看最近一次差异

git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息

git log --pretty=oneline #→--pretty根据不同的格式展示提交的历史信息

git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录

git log --pretty=fomat:"%h %cn"  #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名。

使用format参数来指定具体的输出格式
格式**说明%s提交说明。%cd提交日期。%an作者的名字。%cn提交者的姓名。%ce提交者的电子邮件。%H提交对象的完整SHA-1哈希字串。%h提交对象的简短SHA-1哈希字串。%T树对象的完整SHA-1哈希字串。%t树对象的简短SHA-1哈希字串。%P父对象的完整SHA-1哈希字串。%p父对象的简短SHA-1哈希字串。%ad**作者的修订时间。

还原历史数据

Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD,上一个版本则会叫做HEAD,当然一般会用HEAD~5来表示往上数第五个提交版本。
git log        //查看历史提交数据的commit数值

git reset --hard commit数值

还原未来数据

git reflog    //查看未来历史更新点
git reset --hard commit数值

标签使用

在git push 之前打标签即可
git tag v1.0      //当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。

git tag           //查看当前所有的标签

git show v1.0     //查看当前1.0版本的详细信息

git tag v1.2 -m "version 1.2 release is test"  //创建带有说明的标签,-a指定标签名字,-m指定说明文字

git tag -d v1.0    //我们为同一个提交版本设置了两次标签,删除之前的v1.0
git reset --hard HEAD^ //回滚到上一个版本

git reset --hard HEAD^^  //回滚到上两个版本

git reset --hard HEAD~5   //回滚到五个版本之前

git reset --hard e9ed8b38a    //使用commit值回滚

git reset --hard V1.0    //使用标签回滚

对比数据

git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改后,再把它提交到仓库就放⼼多了。
git diff README
git diff --name-only HEAD HEAD^
git diff --name-only head_id head_id2
标签: linux git elasticsearch

本文转载自: https://blog.csdn.net/qq_59207739/article/details/136285112
版权归原作者 丨析木丨 所有, 如有侵权,请联系我们删除。

“linux系统git常规操作”的评论:

还没有评论