持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
1. git log
--oneline
压缩模式,显示经过精简的提交哈希码和信息,一行显示--graph
图形模式,查看单个分支的历史记录的话,该选项无效--all
显示所有分支的历史记录
$ git log --oneline --graph
|\
| * a1180ef Merge branch 'master' of ###########
| |\
| * | d4cb363 createDirectory -> createDirectories
* | | bee2ee4 优化条件约束
* | | 6f5a5a7 支持多条件
| |/
|/|
* | 6d0b761 修改readme
|/
* fe657c8 delete zip
2. git blame [filename]
可以将文件中的每一行的作者、最新的变更提交和提交时间展示出来。 甩锅神器
$ git blame README.md
9446b88d (niu 2022-06-03 08:51:22 +0800 1) # Launchy Translator  [](https://github.com/pipiliang/launchy-translator)
3ca1f9c6 (niu2 2022-05-28 22:48:31 +0800 2) ## 简介
caa53df4 (niu2 2022-05-28 22:47:13 +0800 3) Launchy工具的翻译小插件,数据接口由[有道翻译](http://fanyi.youdao.com/openapi)提供
15699347 (niu 2022-04-28 10:00:16 +0800 4)
3ca1f9c6 (niu 2022-05-28 22:48:31 +0800 5) ## 功能
caa53df4 (niu 2022-05-28 22:47:13 +0800 6) - 单词的英汉互译
b4628bed (niu 2022-06-02 23:11:59 +0800 7) - 使用[有道翻译API](http://fanyi.youdao.com/openapi),需要注册获取key
3. git rebase -i HEAD~[number_of_commits]
当你提交代码进行代码审查时或者创建一次pull request (这在开源项目中经常发生),你的代码在被接受之前会被要求做一些变更。于是你进行了变更,并且直到下一次审查之前你没有再次被要求进行变更过。在你知道又要进行变更之前,你已经有了一些额外的commit。理想情况下,你可以用rebase命令把多个commit压缩成一个
4. git cherry-pick
cherry-pick就是从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。 切换到想要应用的分支上,执行
$ git cherry-pick [commit_hash]
5. git stash
可能会遇到这样的情况,你正在一个分支上进行一个特性的开发,或者一个Bug的修正,但是这时突然有其他的事情急需处理,这时该怎么办?不可能就在这个工作进行到一半的分支上一起处理,先把修改的Copy出去?太麻烦了。这种情况下就要用到Stashing了。假如我们现在的工作目录是这样子的
$ git status
# On branch master
# Changes to be committed:
#
(use "git reset HEAD <file>..." to unstage)
#
#
modified:
index.html
#
# Changed but not updated:
#
(use "git add <file>..." to update what will be committed)
#
#
modified:
lib/simplegit.rb
此时如果想切换分支就可以执行以下命令
$ git stash
Saved working directory and index state \
"WIP on master: 049d078 added the index file"
HEAD is now at 049d078 added the index file
(To restore them type "git stash apply")
这时你会发现你的工作目录变得很干净了,就可以随意切分支进行其他事情的处理了。 我们可能不只一次进行"git stash",通过以下命令可以查看所有stash列表
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051... Revert "added file_size"
当紧急事情处理完了,需要重新回来这里进行原来的工作时,只需把Stash区域的内容取出来应用到当前工作目录就行,命令就是
git stash apply
如果不基参数就应用最新的stash,或者可以指定stash的名字,如:stash@{1},可能通过
git stash show
显示stash的内容具体是什么,同git stash apply一样,可以选择指定stash的名字。
git stash apply之后再git stash list会发现,apply后的stash还在stash列表中,如果要将其从stash列表中删除可以用
git stash drop
丢弃这个stash,stash的命令参数都可选择指定stash名字,否则就是最新的stash。
一般情况下apply stash后应该就可以把它从stash列表删除了,先apply再drop还是比较繁琐的,使用以下一条命令就可以同时完成这两个操作
下面这条命令相当于git stash apply
后
git stash pop
如果我们执行git stash时工作目录的状态是部分文件已经加入了暂存区,部分文件没有,当我们执行git stash apply之后会发现所有文件都变成了未暂存的,如果想维持原来的样子操持原来暂存的文件仍然是暂存状态,可以加上--index参数
git stash apply --index
还有这么一种情况,我们把原来的修改stash了,然后修复了其他一些东西并进行了提交,但是,这些提交的文件有些在之前已经被stash了,那么git stash apply时就很可能会遇到冲突,这种情况下就可以在stash时所以提交的基础上新建一个分支,然后再apply stash,当然,这两个步骤有一人简单的完成方法
git stash branch <branch name>
6. git config
6.1 proxy
$ git config http.proxy ip:port
$ git config https.proxy ip:port
6.2 credential
执行完毕会在在当前系统用户文件夹下生成一个名为.git-credentials的文件,如:C:\Users\Administrator\.git-credentials,再次提交代码时,输入密码后会将用户名密码以明文的方式保存在其中。
$ git config --global credential.helper store
6.3 core.editor
使用vim编辑器
$ git config --global core.editor vim