Git常用命令

在这里插入图片描述

初始化仓库

  • git --version 查看git版本
  • git --help 查看帮助文档
  • git init 初始化仓库
  • ssh-keygen -t rsa -C "邮箱" 生成ssh密钥(密钥存放在用户主目录下的.ssh目录,其中id_rsa是私钥,id_rsa.pub是公钥,将公钥放在GitHub的ssh中)
  • ssh -T git@github.com 测试连接
  • git clone https://github.com/name/test.git 克隆远程库至本地
  • git remote add origin https://github.com/name/test.git 关联远程库(https协议每次都要输入用户名和密码)
  • git remote add origin git@github.com:name/test.git 关联远程库(ssh协议不用输入用户名和密码)
  • git remote remove origin 取消关联
  • git remote -v 查看远程版本库

config配置

  • git config --list 查看当前仓库的git配置
  • git config --list --global 查看所有仓库的git公共配置
  • git config name value 修改名为name的值为value
  • git config --global alias.name name1 将名为name1的命令名别名为name(加–global代表全局)
  • git config --global user.name 用户名配置用户名
  • git config --global user.email 邮箱地址配置邮箱
  • git config --global commit.template 模版地址提交模版配置
  • git config --global core.editor vim默认编辑器配置

提交

  • git add filename filename2 将指定文件从工作区添加到暂存区
  • git add . 将所有文件从工作区添加到暂存区
  • git commit -m "提交信息" 将文件从暂存区提交至本地仓库
  • git commit 将文件从暂存区提交至本地仓库(使用提交模版)
  • git commit --amend 追加修改,不会新产生提交日志

文件差异

  • git status 查看当前文件修改状态
  • git diff查看工作区与暂存区差异
  • git diff filename 查看某个文件工作区和暂存区差异
  • git diff --cached 查看暂存区和本地仓库的差异
  • git diff HEAD/HEAD^/HEAD^^... 查看工作区区和本地仓库的差异(上个版本是HEAD,上上各版本适HEAD^,再多就是HEAD~100)
  • git show commitId 查看指定commitId的变更记录

日志查看

  • git log 查看所有提交日志
  • git log --stat 查看所有提交日志,及其每次提交修改的文件
  • git log --graph查看所有提交日志,包含拉分支与合并操作
  • git log --pretty=oneline 查看所有提交日志,每次提交信息显示一行,不限时提交时间和提交人
  • git log --author=userName 查看某个人的提交日志
  • git blame <file> 以列表形式查看指定文件的历史修改记录
  • git shortlog 查看精简日志,以提交人分类,不显示提交日期和commitId
  • git reflog 查看历史操作记录,包含reset、分支创建等等
  • git reflog show --date=iso <branch name>:查看分支创建时间

分支管理

  • git branch 查看当前所有本地分支(-r代表所有远程分支,-a代表所有远程和本地分支)
  • git branch branchname 创建指定分支
  • git branch -d branchname 删除指定分支
  • git checkout branchname 切换到指定分支
  • git checkout -b [本地分支名] [origin/远程分支名] 从指定远程分支创建本地分支,并切换到指定该分支,远程分支和本地分支建立关联
  • git checkout -b branchname从当前分支拉取指定分支,并切换到该分支
  • git branch --set-upstream <本地分支名> <远程仓库名/远程分支名> 关联本地分支和远程分支
  • git remote show origin 查看本地分支与远程分支映射

远程同步

  • git push -u origin master 推送至指定远程库的指定分支(-u是关联两个分支)
  • git push -f origin master 强制push,不用解决冲突
  • git push [远程主机名] [远程分支名]:[本地分支名] 推送制定本地分支到制定远程分支
  • git fetch 将远程更新,全部取回本地,不会影响本地代码
  • git pull [远程主机名] [远程分支名]:[本地分支名] 相当于fetch+merge,如果省略本地分支名,则表示pull到当前分支(非关联分支会产生merge记录)
  • git pull --rebase [远程主机名] [远程分支名]:[本地分支名]相当于fetch+rebase,并且不会产生merge记录,rebase操作具体参见【rebase目录】

merge

  • git merge branchname 把branchname分支合并到当前工作分支上
  • git merge [远程主机名] [远程分支名]:[本地分支名]merge指定远程分支到指定本地分支,如果省略本地分支名,则表示merge到当前分支
  • git merge --no-ff branchname 普通合并,会在Log中记录合并历史
  • git merge --abort:抛弃合并过程并且尝试重建合并前的状态

回退

  • git checkout . 放弃所有文件本地修改
  • git checkout --filename 放弃某个文件的本地修改
  • git reset --soft HEAD~1:回退本地仓库到暂存区,可以重新commit
  • git reset --mixed HEAD~1:回退本地仓库到工作区,可以在工作区重新修改(默认参数)
  • git reset --hard HEAD~1:回退本地仓库,直接丢弃,所有区都不会有内容

暂存

  • git stash save "本次暂存的标识名字" 暂存当前修改
  • git stash list 查看暂存记录
  • git stash apply stash@{index} 恢复指定的暂存工作
  • git stash pop stash@{index} 恢复指定的暂存工作,并删除暂存记录

patch

  • git diff > diff.patch:生成工作区与当前分支的patch
  • git diff --cached > diff.patch:生成暂存区与当前分支的patch
  • git apply diff.patch:使用补丁

cherry-pick

  • git cherry-pick commit_id:cherry-pick指定commit到当前分支
  • git cherry-pick --abort:抛弃cherry-pick过程

rebase

合并多个提交记录
//start是指更早的节点,前开后闭。如果不指定endpoint,则默认为HEAD。
git rebase -i  [startpoint]  [endpoint]

//合并前两个
git rebase -i HEAD~2

-i是指交互式界面,具体操作如下:

  • pick(p):保留该commit和注释信息
  • reword(r):保留该commit,但需要修改该commit的注释,修改完成后会拼接多个commit的注释信息为一个
  • edit(e):保留该commit, 但要修改该提交,不仅仅修改注释
  • squash(s):将该commit和前一个commit合并,需要解决提交的注释信息冲突
  • fixup(f):将该commit和前一个commit合并,不保留该提交的注释信息
  • drop(d):丢弃该commit
合并分支为一条线
//相当于 merge branchName 分支到当前分支
git rebase branchName

在这里插入图片描述

其他注意

  • github提交时需要修改gitconfig邮箱为登录邮箱
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值