stash暂存
有时候在修改需求时,突然线上发现一个紧急的BUG,此时的需求还没有达到提交的程度,这就需要把修改暂存起来,以备下次使用。
git stash // 将还没add的代码暂存起来
git stash list // 显示暂存的列表
git stash save name // 将stash以name为名称暂存
git stash -u // 可以将未跟踪的文件暂存
# git stash是git stash push的缩写
# git stash push是可以暂存单个文件的
# 格式为git stash push <file1> <file2>
git stash push src/pages/login.vue
待修复完线上代码后,需要将暂存的恢复到工作区来,此时就要用到:
git stash apply stash{0} // 0为stash list中的暂存项的下标,后存储的会在前面
恢复之后这个暂存记录是还存在的,可以选择丢弃掉:
git stash drop stash{0} // 丢弃指定下标的stash
技巧
如果stash
中只有一个可以使用git stash pop
此时会将暂存恢复的工作区,并删除stash list
中的第一个。
执行git stash
命令的时候新建文件并不会暂存,需执行命令:
git stash save -a (name) // 此命令同 git add . + git stash save (name)
log日志
git log
输出所有commit
日志。但有大多数情况提交记录很多,终端面板不够长,造成混乱。所以需要输出指定长度的日志。此时使用:
git log -(n) // n为最近的n条日志
就可以输出固定条数的日志了。
git分支排序输出
git branch -v --sort=committerdate
git rebase合并commit
git rebase -i HEAD~3 // 从HEAD版本开始往后数3个版本
在git服务器上新建一个裸仓库
sudo git init --bare repositoryName.git
sudo chown -R git:git repositoryName.git // 把owner改为git用户组(因为之前是使用git用户组搭建的服务)
修改最近一次commit信息
git commit --amend
git 修改历史提交的commit信息
git log -n // 获取需要修改的commit的上一条commit_id
git rebase -i <commit_id> // 找到需要修改的commit记录,将pick改为edit或者e,:wq退出
git commit --amend // 修改commit记录
git rebase --continue // 继续修改直至结束
// 中间可以跳过或者退出rebase模式
git rebase --skip
git rebase --abort
从某次commit切出分支
git checkout -b <branch_name> fd4f985e // fd4f985e为某次提交的commit_id
修改分支名称
git branch -m oldname newname
删除git库中untracked file
git clean -f
将已经commit的恢复到commit之前的状态
git reset HEAD^ // 适用于临时需要切换到其它分支,替代git stash
当commit
已经push
到远程时,也可以使用reset HEAD^
,不过此时修改后需要:
git push origin -f //强制覆盖远程(适用于其他人没有拉取被覆盖之前的代码时)
如果其他同事已经拉取了覆盖之前的代码,在git pull origin
之后,本地会出现覆盖之前代码的commit
和远程仓库的一个拉取记录,此时只需要:
git reset HEAD^ // 将commit改为修改状态
git checkout . // 取消所有修改即可
将已经rebase成功的记录恢复到之前的状态
首先执行git reflog
查看本地记录:
发现本次rebase
之前的ID
是24ba9af1
,于是,执行:
git reset --hard 24ba9af1
就可以了。
查看分支是由哪个分支拉出来的
// 第一个方法
git reflog show <branch name>
// 第二个方法:这个方法可以查看分支切换的记录,最后一条显示的就是基于的分支,适用于分支切换记录不多的情况
git reflog --date=local | grep <branch name>
查看分支创建时间
git reflog --date=iso <branch name>
git切换远程分支
git remote set-url origin [remote url]
输出:
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!