关于git的命令使用
git config
全局配置
git config --global user.name "xxx" 全局配置用户名
git config --global user.email "xxx@xx.com" 全局配置邮箱
git log
用于查看提交日志
git log 查看历史提交日志
git log --oneline 输出概要日志
git log --oneline -5 指定最近几个提交可以带上 - + 数字
git status
用于查看文件状态
git status 查看当前工作区暂存区变动
git status --show-stash 查询工作区中是否有stash存在(暂存的东西),有则提醒该工作区有几个 stash
git checkout
用于切换分支
git checkout dev(本地分支名) 切换到本地对应的dev分支
git checkout -b dev(本地分支名) 创建本地dev分支并切换
git checkout -b dev(本地分支名) origin/远程分支名 将远程git仓库里的指定分支拉取到本地(本地不存在的分支)
git checkout -- file 撤销某个文件的改动
git checkout . 撤销工作区所有文件的改动
git checkout - 切换到上一个分支
git branch
用于查看本地分支
git branch 查看本地分支
git branch -r 查看远程分支
git branch -a 查看所有分支
git branch --merged 查看哪些分支已经合并入当前分支
git branch -v 查看各个分支最后一个提交信息
git branch xxx(分支名) 基于当前分支创建新分支
git branch -c xxx(分支名) 复制分支
git branch -d xxx(分支名) 删除本地分支
git branch -D xxx(分支名) 需要删除的分支还没有合入当前分支,所以要用-D参数才能删掉。
git commit
用于提交文件
git commit -m "xxx" 带提交概要信息
git commit --no-verify -m "xxx" 跳过校验 直接提交
git commit -t file 指定目录提交
git reset
代码回滚
git reset --hard XXX日志编号 硬性回滚,简单粗暴,直接抛弃回滚之后改动(log 还是有保留,内容不要而已)
git reset --soft XXX日志编号 软性回滚, 跟 rebase 常规用法差不多的效果,可以把提交的东西丢回暂存区和工作区,
git rebase
合并多次提交记录
带 -i 可以进入交互模式,效果如下
git rebase -i git-sha1|branch(HEAD)
若是中间毫无冲突,变基则一步到位,否则需要逐步调整。
git rebase --continue # 提交变更后继续变基下一步
git rebase --skip # 引起冲突的commits会被丢弃,continue提示没有需要改动的也可以用这个跳过
git rebase --abort # 若是变基改残废了,但是走到一半,可以彻底回滚变基之前的状态
git merge
合并代码
--ff 是指fast-forward命令,当使用ff模式进行合并时,将不会创造一个新的commit节点。
--no-ff,保留合并分支的提交记录,一般主干用的比较多.
--ff-only 除非当前HEAD节点为最新节点或者能够用ff模式进行合并,否则拒绝合并并返回一个失败状态。
--squash 则类似 rebase squash,可以把合并多个 commit 变成一个
git merge --no-ff branchName
git pull & git fetch
拉取代码
git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。 而git pull则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
git pull origin xxx 分支名 拉取远程分支代码
git fetch <远程主机名> 这个命令将某个远程主机的更新全部取回本地
$ git fetch <远程主机名> <分支名> 如果只想取回特定分支的更新,可以指定分支名
git push
推送代码
git push origin xxx 分支名 向远程分支推送代码
git push -f origin xxx 分支名 强制向远程分支推送代码
git remote
操作远程仓库
git remote -v 查看关联的远程仓库
git remote add xxx(仓库地址) 添加一个远程仓库
git remote remove xxx(仓库地址) 删除关联的远程仓库
git stash
用于暂存文件,能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。当代码写到一般需要修复紧急bug时可使用暂存,最好写好描述信息
# -a|--all: 除了未跟踪的文件,其他变动的文件都会保存
# -u|--include-untracked:包括没有添加到暂存区的文件
git stash 暂存
git stash save 作用等同于git stash,区别是可以加一些注释
git stash list 查看当前stash中的内容
# 现在基本推荐用 push,因为有 pop,语义上和维护上更清晰
# 上面有的参数,它也有,还有-m 来备注这个 stash 的大概情况
git stash push -m "更改了 xx"
# 有保存那肯定也有取用的
# pop: 取会删除对应的保存记录
# apply: 取但保留记录
# 0就是--index,这个东西哪里来的呢?
git stash apply stash@{0}
git stash pop stash@{0}
# 查看stash 保存记录
# eg: stash@{0}: On dev: 测试
git stash list
只想删除暂存记录怎么办:
# clear : 清空所有 stash
# drop: 清除指定的 stash
git stash clear # 慎用!
git stash drop stash@{0}
想看 stash 做了什么改动,类似简化版的git diff
git stash show stash@{0}