10 Useful Git Tips
在过去的几年里,Git 已经迅速成长为最受欢迎的版本控制系统之一。它被各种语言的开发者和不同规模的团队所使用,从小的开源项目到像 Linux 内核这样的大型代码库。
在这篇文章中,我们将与您分享一些可以改善您的 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 生成一个新提交,撤销现有提交所做的更改,并生成一个包含结果内容的新提交。如果您想撤销命名的提交并避免自动提交,可以使用 –no-commit 或简写 -n 标志。
git diff -w
Git diff
显示两个提交、两个工作树或两个磁盘上的文件之间的更改。当多个人在同一项目上工作时,通常会出现由于文本编辑器的制表符和空格设置引起的更改。为了在比较行时忽略由空格引起的差异,您可以使用 -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,它将使用最新的一个。这使您可以将任何 stashed 更改应用到一个更安全的环境中,稍后可以将其合并到 master 分支。
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 首先拉取更改,然后在远程分支的最新版本上重新基于这些未推送的提交。–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,?]?