Git Basic Concepts Interpretation

8 篇文章 0 订阅
git 的中文提示信息改为英文

因为使用的中文版的linux系统,所以git的提示信息都是中文的,这里变更下。

echo "alias git='LANG=en_GB git'" >> ~/.bashrc
source ~/.bashrc
git revert

git revert 用于引入一个新提交来抵消给定提交的影响。revert 命令不修改版本库的现存历史记录。相反它往历史记录中添加新的提交。

git revert 的常见用途是撤销 可能深埋在历史记录中的某个提交的影响。

## 撤销 master 分支之前的第三个 commit , 并形成一个新的提交
git revert master~3
git cherry-pick

git cherry-pick 提交命令在当前分支上应用给定提交引入的变更。这将引入一个新的独特的提交,严格来说,使用git cherrp-pick 并不改变版本库中的现有历史记录,而是添加历史记录。

通常用于把版本库中的一个分支的特定提交引入一个不同的分支中。常见的用发是把维护分支的提交移植到开发分支。

git checkout rel_2.3
## 将 dev 分支的倒数第二个分支引入 rel_2.3 分支
git cherry-pick dev~2
## 将 dev 分支的倒数第一个分支引入 rel_2.3 分支
git cherry-pick dev^

根据 cherry-pick 不同提交的顺序,还可以重建一系列的提交顺序。通过从一个分支选一批提交,然后把它们引入一个新分支。

cherry-pick 允许在一条命令里选择并应用一个范围的提交。

## 这里用了 .. 范围选择符
git cherry-pick X..Z

如果加上--no-commit参数,则合并过来的提交,不会直接合并,而是会先放在暂存区。

$ git cherry-pick 6a498ec --no-commit

$ git status
On branch cat
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	new file:   dolphin.html
git diff

git diff 根据命令行的参数个数来决定使用那种基本形式和比较什么。可以供比较的主要有三种形式:工作区、暂存区和提交树。

命令作用
git diff没有参数,直接显示工作区和暂存区之间的差异
git diff commit参数为一个commit,显示工作区和指定提交之间的差异
git diff --cached commit参数为一个commit,同时提供--cached 选项,用于显示暂存区和指定提交之间的差异
git diff commit commit参数为两个任意指定的提交,用于对比两个提交之间的差异,忽略工作区和暂存区
git mv

git mv 可以用来重命名或者移动文件。

git st
#位于分支 master
#您的分支与上游分支 'origin/master' 一致。
#无文件要提交,干净的工作区
git mv index.html about.html
git st
#位于分支 master
#您的分支与上游分支 'origin/master' 一致。
#要提交的变更:
#(使用 "git reset HEAD <文件>..." 以取消暂存)
#
#重命名:   index.html -> about.html
git mv README.md ./cc
git st
#位于分支 master
#您的分支与上游分支 'origin/master' 一致。
#要提交的变更:
#(使用 "git reset HEAD <文件>..." 以取消暂存)
#
#重命名:   README.md -> cc/README.md
推送tag到远端
git push origin tag_name
git add -u

git add命令添加-u参数,是指将被跟踪的文件的更新,同步到暂存区。
但是对于未跟踪的文件没有影响。

git log

follow 选项会让 git 在日志中找到与指定文件相关联的整个历史记录

git log --follow hello.txt
#commit 7f77dfebffb72d7bd9a5401ae85a0f0f50df4f30
#Author: daihaoxin <daihaoxin@126.com>
#Date:   Sun Oct 27 13:19:43 2019 +0800
#
#edit hello.txt file
#
#commit 39f78406fced0b20220eef3cda263d459def2524
#Author: daihaoxin <daihaoxin@126.com>
#Date:   Sun Oct 27 13:17:03 2019 +0800
#
#add content to hello.txt
#commit d0d6ded77f490d3823a9ffb125daeb01ee20d488
#Author: daihaoxin <daihaoxin@126.com>
#Date:   Sun Oct 27 13:15:51 2019 +0800
#init repo
git log --oneline
# eebfd07 change file .gitlab-ci.yml
# d45145f change file .gitlab-ci.yml
# 28aac6f change file .gitlab-ci.yml
# 9a554df change file .gitlab-ci.yml
# d4051eb change file .gitlab-ci.yml
# ab110f1 add file .gitlab-ci.yml
# a32196d add file index.html
# c60e153 Initial commit

git log --oneline -n4
# eebfd07 change file .gitlab-ci.yml
# d45145f change file .gitlab-ci.yml
# 28aac6f change file .gitlab-ci.yml
# 9a554df change file .gitlab-ci.yml

## all 表示所有分支,这里 n 表示取所有分支的最近 6  条 commit 记录,而不是每个分支的最近 6 条 commit 记录记录
git log --oneline --all --graph -n6
# * 2a08673 add file
# | * d3fe21e cc
# | * 0b4bb2a test2
# | * 43c3d68 test
# |/  
# * eebfd07 change file .gitlab-ci.yml
# * d45145f change file .gitlab-ci.yml

## master 分支的最近 6 条 commit 记录
git log --oneline master --graph -n6
# * d3fe21e cc
# * 0b4bb2a test2
# * 43c3d68 test
# * eebfd07 change file .gitlab-ci.yml
# * d45145f change file .gitlab-ci.yml
# * 28aac6f change file .gitlab-ci.yml
git show HEAD
#commit d4c79aac208d7d00e0edfbcd50f8b48457bdb9bb
#Author: daihaoxin <daihaoxin@126.com>
#Date:   Sat Aug 3 22:17:54 2019 +0800
#
#    2.txt
#
#diff --git a/2.txt b/2.txt
#new file mode 100644
#index 0000000..e69de29

##git log --stat commit 显示一个提交的详情
git log --stat a39ecfe08fb78bbd62be13d80210cdfa3497ff6d
#commit a39ecfe08fb78bbd62be13d80210cdfa3497ff6d
#Author: daihaoxin <daihaoxin@126.com>
#Date:   Fri Aug 2 17:50:44 2019 +0800
#
#    test
#
# hello.txt     | 1 +
# test/test.txt | 1 +
# 2 files changed, 2 insertions(+)
linux 安装 gitk
sudo apt-get install git-gui gitk
## 查看所有分支及tag的状况
gitk --all 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值