解析30 seconds of code网站代码片段之「Git小技巧」
这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战 | 创作学习持续成长,夺宝闯关赢大奖
有一些很骚但是大多数人并不熟悉的git命令,使用之后会大大提高工作效率和减少麻烦。
git别名配置
如果有记不住git命令单词或者打错的情况的同学,有觉得git命令太长输入很麻烦的同学,一定要设置git别名来提高效率。我自己现在用得最多的命令就是g ci -a -m "messge"
和g co - b xxx
。
设置git别名的命令如下:<alias>
是你想要设置的别名,<command>
是这个命令的原名。
git config --global alias.<alias> <command>
#举例
git config --global alias.ci commit
如果需要快速设置别名的话,我们只需要通过以下命令打开git的配置文件:
git config --global -e
图省事把下面的东西粘贴进去就OK了,也可以修改你自己想要的名字。
[alias]
co = checkout
cob = checkout -b
coo = !git fetch && git checkout
br = branch
brd = branch -d
st = status
aa = add -A .
unstage = reset --soft HEAD^
cm = commit -m
amend = commit --amend -m
fix = commit --fixup
undo = reset HEAD~1
rv = revert
cp = cherry-pick
pu = !git push origin `git branch --show-current`
fush = push -f
mg = merge --no-ff
rb = rebase
rbc = rebase --continue
rba = rebase --abort
rbs = rebase --skip
rom = !git fetch && git rebase -i origin/master --autosquash
save = stash push
pop = stash pop
apply = stash apply
rl = reflog
一般来说mac用户会配置zsh,zsh是自动会帮你做git的别名配置的,非常便捷。
创建一个空的commit
git commit --allow-empty -m <message>
查看当前简洁的状态
git status
# 加上-sb会看到简短版本输出
git status -sb
返回到上一个分支
git checkout -
# 举例
git checkout patch-1
git checkout master
git checkout - #切换到`patch-1`
新建分支并远程跟踪分支
git checkout -b <branch> [-t <remote>/<branch>]
# 举例
git checkout -b patch-1
# 新建没有跟踪远程分支的本地分支
git checkout -b patch-2 -t origin/patch-2
# 新建跟踪了同名远程分支的本地分支
查看最近一条commit
git log -1
编辑最近一次commit描述信息
- 需要新添加变更到暂存区,但是希望使用最近一次commit里并且不修改commit的message的时候,需要用到下面的git命令:
# 添加暂存区的变更到最后一次commit里并且不修改commit的message
git commit --amend --no-edit
# 举例
git add .
git commit -m "Fix the network bug"
# 再次添加
git add .
git commit --amend --no-edit
# 最新的commit包括上面两次添加的
- 不添加变更但是需要修改最后一次commit的messge的时候,用到下面的命令:
git commit --amend -m
# 举例
# 最近一次添加
git add .
git commit -m "Fix bug"
# 需要修改commit的message为Fix the newtork bug
git commit --amend -m "Fix the newtork bug"
从另一个分支拷贝一个文件
git checkout <branch> <file>
# 举例
git checkout patch-2
git checkout patch-1 "30seconds.txt"
# 此时patch-2分支已经包含了从patch-1拷贝的文件30seconds.txt
根据最后一次提交的时间排序查看本地分支列表
git里显示文字信息之后,退出只需按Q
就可以了。
git branch --sort=-committerdate
显示所有合并的本地分支的列表
git branch-a -- merged
# 举例
git checkout master
git branch -a --merged
# 输出分支列表