将 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