git常用命令

| 文章字数:1.3k | 阅读时长:5min
这是一篇更新于 99 天前的文章,其中的信息可能已经有所发展或是发生改变。

主要是是一些常用的Git命令

Git Commands

开始使用git

  • 设置用户名
    git config --global user.name "Your Name"
  • 设置邮箱
    git config --global user.email "email@example.com"
  • 创建仓库(当前目录)
    git init
  • 添加文件
    git add <file> 添加指定文件
    git add . 添加所有改变的文件
    注:如果add后又修改了文件,还要再add一次之后再commit
  • 提交
    git commit -m "提交说明"
  • 查看状态
    git status
  • 查看修改
    git diff <file> 查看单个文件的更改
    git diff 查看所有文件的更改
  • 查看历史提交
    git log
    git log --pretty=oneline 一次提交显示为一行
    git blame <file> 查看一个文件的修改记录(谁在什么事件修改了什么)
  • 查看历史命令
    git reflog

版本控制

  • 版本回退
    git reset --hard HEAD 撤销所有未提交的操作,包括add
    git reset --hard HEAD^ 回退到上一个版本
    git reset --hard HEAD^^ 回退到上两个版本
    git reset --hard HEAD~100 回退到上100个版本
    git reset --hard <commit> 回退到指定版本
    git checkout -- <file> 丢弃工作区的修改,如果文件add到了暂存区又做了修改,则恢复到暂存区,否则恢复到版本库的状态,如果文件删除了,则回复到版本库的文件
    git reset HEAD <file> 把暂存区的修改撤销掉,重新放回工作区
    注:
    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout -- <file>
    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD <file>,就回到了场景1,第二步按场景1操作
    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库
  • 删除/重命名
    git rm <file> 删除文件,尽管文件已经添加到暂存区(add)
    git rm --cached <file> 把文件从版本库、暂存区删掉,但是保留硬盘文件
    git mv <file> <other file> 重命名文件

远程仓库

  • 创建ssh密钥
    ssh-keygen -t rsa -C "youremail@example.com"
    注:一路回车,在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人,复制内容,在github上添加
  • 远程仓库
    git remote add origin git@github.com:michaelliao/learngit.git 关联远程仓库,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库
    git push -u origin master 我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
    git push origin master 把本地master分支的最新修改推送至GitHub
    git clone git@github.com:michaelliao/gitskills.git 从远程仓库克隆,Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
    git remote 查看远程库的信息
    git remote -v 查看远程库的详细信息
    git push origin master 推送远程分支,就是把该分支上的所有本地提交推送到远程库
    git pull 从远程库拉取
    git checkout -b <branch> origin/<branch> 创建远程origin的branch分支到本地
    git branch --set-upstream <branch> origin/<branch> 指定本地dev分支与远程origin/dev分支的链接
    git push origin --delete <branch> 删除远程分支

分支管理

  • 创建分支
    git checkout -b <branch> 创建分支并切换过去,相当于执行了 git branch <branch>git checkout <branch>
    git branch 查看当前分支
    git checkout <branch> 切换分支
    git merge <branch> 合并分支到当前分支,有冲突修改后再add、commit
    git merge --no-ff -m "合并信息" <branch> 禁止快速合并
    git branch -d <branch> 删除分支
    git branch -D <branch> 强行删除分支(未合并的分支)
  • BUG分支
    git stash 把当前工作现场“储藏”起来,等以后恢复现场后继续工作
    git stash list 查看stash
    git stash apply 恢复现场
    git stash drop 删除保存的stash
    git stash pop 恢复并删除stash
    git stash apply stash@{0} 多次stash,恢复指定的stash

标签管理

  • 创建标签
    git tag <name> 创建标签
    git tag 查看所有标签
    git tag <name> <commit> 在指定的版本版本id打标签
    git show <name> 查看标签信息
    git tag -a <name> -m "说明" <commit> 创建带有说明的标签
  • 操作标签
    git tag -d <name> 删除标签
    git push origin <name> 推送某个标签到远程仓库
    git push origin --tags 一次性推送全部尚未推送到远程的本地标签
    git push origin :refs/tags/<name> 删除远程标签(删除远程标签之前要先删除本地标签)
扫码加我微信