清理远程仓库已删除、本地仍存在的远程分支。有时候远程仓库的某个分支已经被删除了,但是使用
git branch -r
查看时,该分支在我们本机上依然存在。这是因为我们执行git fetch
或者git pull
命令时并不会同步清理这些远程仓库已删除、本地仍存在的远程分支。这时我们可以使用git remote prune origin
或者git fetch -p
(即--prune
,表示在 fetch 代码之后删除未跟踪的远程分支)进行清理。我比较喜欢用git fetch -p
,既拉了代码,又清理了没用的远程分支,一举两得!消除
git pull
时产生的 Merge 消息。我们执行git pull
时,总是会产生一条无意义的 Merge 消息。如何消除这条 Merge 消息呢?熟悉 Git 的 猿类都知道执行 rebase 是不会产生 Merge 消息的,所以还是这个思路,我们可以通过如下方式消除git pull
时产生的 Merge 消息。
一、 每次执行git pull
时加上--rebase
参数,即每次 pull 代码时都执行git pull --rebase
二、先执行git config --global pull.rebase true
(在一台机器上只需要执行一次),然后执行git pull
。推荐使用这种方式,省事!查看修改过的文件名。
git diff
会显示当前工作区有哪些内容发生了改动,如果只想查看有哪些文件名发生了修改,就可以使用git diff --name-only
。你可能会问,git status
不也可以么?没错,但是git status
还会显示一些额外信息,比如 “Changes not staged for commit...”等,不方便与外部脚本进行交互。应用其他分支的 Commit 到当前分支。有时为了方便,我们可能在某个功能分支上修复了一个 bug ,后来才意识到应该新开一个 bugfix 分支再去修改和 Commit 。新建 bugfix 分支后,我们不必手把手的将代码再修改一遍,只需要使用
git cherry-pick your-bugfix-commit-hash
就可以将在功能分支上修改bug的代码"应用"过来,super cool!查看某个文件的每一行是谁修改的。使用
git blame $filename
可以查看 $filename 的每一行是谁修改的,加上-L
参数,例如git blame -L start_line,end_line $filename
或者git blame $filename -L start_line,end_line
还可以查看从start_line
到end_line
的这些行是谁修改的。保存修改过但尚未提交的内容。经常会有这样的时刻,正在开发某个功能,然后要去修复一个重要的bug,那已经修改过的内容怎么办?先提交代码,然后切分支去修复bug?这么做也可以!但是我们有更优雅的方式,那就是使用
git stash
。git stash
会把修改过但未提交的内容保存起来,然后我们就可以切分支去修改 bug 了。修改完bug之后,再切换到我们功能分支,输入git stash pop
就可以把之前修改过但尚未提交的内容恢复回来。具体操作步骤如下:
1>git checkout feature-branch
2> 开发功能......
3> 被告知要修改 bug
4>git stash
5>git checkout hotfix
6> 修改 bug 并提交代码
7>git checkout feature-branch
8>git stash pop
清理未跟踪的文件。一个新需求,你刚刚创建了model、view、controller和spec的一些文件,然后产品经理又告诉你这个需求不做了(想踹死他是不是?),这时可以使用
git clean
命令可以删除还未加入版本仓库的文件。git clean
默认情况下是不会删目录的,可以使用git clean -f -d optional-dir-name-or-current-dir
连目录一起删除。git clean
的详细参数参见:git help clean
Git 实用小技巧
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...