「30s代码解析挑战」Git小技巧

467 阅读3分钟

解析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描述信息

  1. 需要新添加变更到暂存区,但是希望使用最近一次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包括上面两次添加的
​
  1. 不添加变更但是需要修改最后一次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
# 输出分支列表