git fetch参数解释
git pull origin
= git fetch
+ git merge origin/<branch>
git fetch
将远程仓库的版本记录,同步到本地的远程仓库
终止合并
应用于git pull origin 操作完后,提示有冲突请求合并,但是想回滚到拉取前。
git -c core.quotepath=false -c log.showSignature=false merge --abort
git alias设置
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
标签管理
git 标签存在的意义就是,为了能更人性化、更容易的找到版本代码( commit 号查找版本代码太折磨人)。
举例:
“请把上周一的那个版本打包发布,commit号是6a5819e...”
“一串乱七八糟的数字不好找!”
如果换一个办法:
“请把上周一的那个版本打包发布,版本号是v1.2”
“好的,按照tag v1.2查找commit就行!”
所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
使用方式
查看和创建标签
- 命令git tag <tag_name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- 命令git tag -a <tag_name> -m "描述信息..." <commit_id>;
- 命令git tag可以查看所有标签。
- 命令 git show <标签>,可以查看标签更详细的信息(比如描述信息)。
推送和删除远程标签
- 命令git push origin
可以推送一个本地标签; - 命令git push origin --tags可以推送全部未推送过的本地标签;
- 命令git tag -d
可以删除一个本地标签; - 命令git push origin :refs/tags/
可以删除一个远程标签。
git rebase
变基,就是将当前分支上原本多个线的 commit版本,合并成一条直线,使得历史版本查看起来更直观。
一般用于合并冲突,提交版本后,执行git rebase
git branch --set-upstream <branch_name> <origin/branch_name>
建立本地分支和远程分支的关联
git branch -D <branch_name>
强制删除某个未被合并的分支。
git switch master
切换到 master 分支
- git switch -c dev # 创建并切换到 dev 分支,它跟 git checkout -b dev指令的效果一样。
git merge --no-ff -m "desc" dev
git merge --no-ff -m "desc" dev
使用非快进模式合并代码,其中--no-ff
参数表示禁用Fast forward
。git 默认是使用快进模式合并,这样的坏处是,删除分支后,会丢失分支信息,而禁用后,在合并时会生成一个新的 commit,这样就可以从分支历史上看出分支信息。
git stash
git stash
将当前暂存区内容放进默认是先进后出的堆栈中。一般用于当前内容还未写完,但是要切换到其他分支做一些操作,可以先将文件 add 进缓存区,然后使用 git stash 将内容保存到堆栈中,即可。
git stash list # 列出堆栈中的内容。
git stash apply # 恢复最近一次的 stash 操作内容,但不删除堆栈中的记录
git stash pop # 恢复最近一次的 stash 操作内容,且从堆栈中删除记录
git stash apply stash@{1} # 恢复到指定的 stash 操作内容,但不删除堆栈中的记录。
git stash drop stash@{1} # 删除堆栈中的指定记录。