原文参见:高效使用GIT
近几年来,git越来越流行,成为最常用的版本控制系统。GIT用于各种语言的开发、各种规模的团队的编码工作之中,不管是小型开源项目还是大型代码库(如linux kernel)。
本文分享一些GIT技巧,希望有有助于更高效使用GIT、并改善使用git过程中的体验。
git log --no-merges
此git命令显示整个提交历史记录,但不包括那些将两个分支合并在一起、或解决合并冲突的提交。此命令可用于快速查看项目中的的所有更改,但忽略合并等会让git历史记录显得混乱的记录。
$git log --no-merges
commit e75fe8bf2c5c46dbd9e1bc20d2f8b2ede81f2d93
Author: John
Date: Mon Jul 10 18:04:50 2017 +0300
Add new branch.
commit 080dfd342ab0dbdf69858e3b01e18584d4eade34
Author: John
Date: Mon Jul 11 15:40:56 2017 +0300
Added index.php.
commit 2965803c0deeac1f2427ec2f5394493ed4211655
Author: John
Date: Mon Jul 13 12:14:50 2017 +0300
Added css files.
git revert --no-commit [commit]
Git revert产生一个新提交,该提交撤消已提交更改,并生成包含结果内容的新提交。如需撤消命名提交(named commits)并避免自动提交,可使用标志--no-commit,或简写-n。
git diff -w
Git diff用于显示两个提交、两个工作树或磁盘上两个文件之间的更改。当多人在同一个项目上协同工作时,通常会由于文本编辑器的tab和space/空格设置不同而引起不必要的一些更改。代码比较时为忽略空格引起的差异,可与-w标志一起使用。
git diff --stat
显示每个文件随着时间的变化情况。可以添加3个参数:width覆盖默认的输出宽度,name-width设置文件名的宽度,count限制输出到第几行。
$ git diff --stat
index.php | 83 +++++++++++++++++++++++++++++---------------------------
1 file changed, 43 insertions(+), 40 deletions(-)
$ git diff --stat-width=10
index.php | 83 +++---
1 file changed, 43 insertions(+), 40 deletions(-)
git reset --soft HEAD ^
将HEAD重置为某个提交,无需改动索引文件和工作树。提交后所做的所有更改都将移至“暂存以提交”阶段。之后,只需运行git commit即可将其重新添加。
git stash branch [branch-name] [stash]
此命令创建一个名为branch-name的新分支并将其检出,然后将给定stash中的代码修改应用于该分支并删除stash。如果没有指定stash,将使用最新stash。此命令将任何stash的代码更改应用到更安全的环境,然后合并到主环境中。
git branch -a
此命令用于显示所有远程跟踪的分支和本地分支的列表。可以使用--merged标志查看已完全合并到master的分支,以便跟踪分支、找出不再使用的分支以便进行删除清理。
$ git branch -a
dev
* master
remotes/origin/HEAD -> origin/master
remotes/origin/dev
git commit --amend
git commit --amend可用于更改已提交的修改而不必创建新的提交。如尚未将更改推送到远程分支,可使用此命令来修改最近的提交、添加最新的更改、甚或更改提交消息。
git pull --rebase
Git pull --rebase强制git首先拉/pull更改,然后在远程分支的最新版本之上重新建立未推送/push的提交。--rebase选项防止不必要的合并提交来确保线性历史记录。
git add -p
使用此命令时,立即将所有更改添加到索引中,而是会遍历每个更改并询问需要如何处理。此方式用于交互式地选择将要提交的内容。
diff --git a/package.json b/package.json
index db78332..a814f7e 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,6 @@
},
"devDependencies": {
"bootstrap-sass": "^3.3.7",
- "gulp": "^3.9.1",
"jquery": "^3.1.0",
"laravel-elixir": "^6.0.0-11",
"laravel-elixir-vue-2": "^0.2.0",
Stage this hunk [y,n,q,a,d,/,e,?]?