每次使用git时,总有些指令忘记如何使用,甚是让人痛苦。
特此记录git的一些常用指令,方便自己查询。
基本指令
# 创建账户关联:
# 这部分内容同样修改 .git/config中的内容也可以实现
$ git config --global user.name "Your account Name"
$ git config --global user.email "email@example.com"
# 新建repository
$ mkdir new_project_name
$ cd new_project_name
$ git init
# 提交修改
$ git add file
$ git commit -m "some message"
# 查询repository状态
$ git status
# 查询版本库中的代码与工作区代码的区别
$ git diff file
$ git diff HEAD -- file # 工作区与版本库中的区别
# 查询版本历史
$ git log # 显示完整log信息
$ git log --pretty=oneline # 只显示commit_id 和 版本修改说明信息
# 解决冲突
$ git log --graph --pretty=oneline --abbrev-commit # 查看分支合并图-解决冲突
# 解决冲突,进入到冲突文件中修改,再commit
# 版本回退
$ git reset --hard HEAD^ # HEAD为当前版本,回退上一版本
$ git reset --hard commit_id # 回退到任意版本
# git bash 中输入命令历史查询
$ git reflog
# 撤销修改
$ git checkout -- file # 完全丢弃工作区的修改
$ git reset HEAD file # 将提交到暂存区的修改撤销
# 删除文件
$ rm file
$ git rm file
$ git commit -m "remove file"
$ git checkout -- file # 撤销删除
远程管理
# 创建本地ssh key
$ ssh-keygen -t rsa -C "youremail@example.com"
# 只需要将 id_rsa.pub 中的粘贴到github中
# 首次关联远程repository
$ git remote add origin git@github.com:account_name/repository_name.git
# 首次提交master分支,并关联远程repository master分支
$ git push -u origin master # origin 代表远程库, master 代表本地库master分支
# 克隆远程repository
$ git clone git@github.com:account_name/repository_name.git
or
$ git clone https://github.com/account_name/repository_name.git
分支管理
$ git branch dev # 创建dev分支
$ git checkout dev # 切换到dev分支
# 上面两条命令合一
$ git checkout -b dev
# 查看当前分支
$ git branch
# 合并分支到当前分支 -- fast forward 合并
# 使用 git log --graph 看不到合并历史
$ git merge dev
# 删除某分支
$ git branch -d dev # 分支必须已经合并完成了
$ git branch -D <name> # 未合并强制删除
# 普通合并
$ git merge --no-ff -m "merge with no-ff" dev
# bug 分支 处理
$ git stash # 建立中断
$ git stash list # 查看中断
$ git stash apply # 回到中断前
$ git stash drop # 删除中断分支
# 回到中断处并删除中断分支
$ git stash pop
# 恢复指定stash
$ git stash apply stash@{0}
# 合并分支图
$ git rebase
多人协作(push and pull)
# 分支类型:
1. master
2. dev
3. bug
4. feature
# 查看远程分支信息
$ git remote
$ git remote -v # 查看详细信息
$ git push origin master # 推送master分支到远程master分支
$ git push origin dev # 推送dev分支远程dev分支
# 如果push失败
$ git pull # 拉取远程最新更新
# 当由于分支未关联pull失败(no tracking information):
$ git branch --set-upstream-to=origin/dev dev
标签管理
# 创建新标签
$ git tag tag_name
or
$ git tag tag_name commit_id # 指定commit_id建立标签
$ git tag -a tag_name -m "version 0.1 released" 1094adb # 带说明标签
# 显示所有的存在的标签
$ git tag
# 显示某个标签的详细信息
$ git show tag_name
# 删除标签
$ git tag -d tag_name
# 推送标签到远程
# origin表示远程库 -- 这个是可以修改的
$ git push origin tag_name
or
$ git push origin --tags # 推送所有未推送的标签
# 删除远程标签
$ git tag -d tag_name
$ git push origin :refs/tags/tag_name
同时关联github和码云
$ git remote rm origin # 先删除之前的关联
$ git remote add github git@github.com:account_name/repository_name.git
$ git remote add gitee git@gitee.com:account_name/repository_name.git
# 远程推送时
$ git push github master # 只需要将之前的origin变成github或gitee即可
自定义git – .gitignore和喜好设置
# .gitignore 可参照github官方文档设置
# 文件设定符合shell的命令规则
https://github.com/github/gitignore
# 强制添加被忽略的文件
$ git add -f file
# 检查某文件是由于.gitignore那个设定所忽略
$ git check-ignore -v file
# 配置别名
# alias.别名 原始命令
$ git config --global alias.st status
or
# 直接修改 .git/config文件中的alias
# 或者直接修改用户主目录下的 .gitconfig
[alias]
last = log -1 # 查看上一次的提交
ps: 以上内容是参照廖雪峰老师的git教程,快速的过了一遍,感觉还是很爽的
_ _
【1】https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000