git的常用命令


原来git中的checkout命令承载了分支操作和文件恢复的部分功能,有点复杂,并且难以使用和学习,所以社区解决将这两部分功能拆分开,在git 2.23.0中引入了两个新的命令switch和restore用来取代checkout

常用命令

配置

设置

  • git config --global/local user.name "Name"
  • git config --global/local user.email "Email"

查看

  • git config --global/local --list
    查看所有配置
  • git config --global/local user.name
    单独查看user.name的配置,user.email同理

查看版本历史

  • git log
    当前分支的历史记录

  • git log BranchName
    查看指定分支的历史记录

  • git log --oneline
    记录只以展示一行的简略形式展示

  • git log --oneline -n4
    查看最近4次记录, n后面接查看最近记录的条数,这里n可以省略

  • git log --all
    查看所有分支的历史记录

  • git log --all --graph
    图形化历史记录,方便查看分支演变

  • git log --help --web
    打开help网页

  • git cat-file -t sha1_id
    查看sha1_id对应对象的类型

  • git cat-file -p sha1_id
    查看sha1_id对应对象的内容

commit

  • git commit --amend
    修改最后一次commit信息。用于未push之前的修改操作。

分支

创建分支

  • git checkout -b name
    根据当前分支创建分支
  • git chekcout -b name BranchName
    根据某个分支创建分支
  • git checkout -b name sha1_id
    根据sha1_id创建分支

切换分支

  • git chekcout BranchName

查看分支

  • git branch -v
  • git branch -av
    列出当前分支与远程分支。
    以下示例中有两个远程仓库:github和origin
    在这里插入图片描述
  • git branch -vv
    git查看本地分支对应哪个远程分支。
    以下示例中当前分支对应着远程仓库github的master分支。如果用git push的话,是推送到github/master中。如果需要推送到远程origin/master(如上例),则需用git push origin master在push时指明推送到远程origin仓库。
    在这里插入图片描述

删除分支

  • git branch -d BranchName

远程分支

  • git remote -v
    查看是否有远程分支
  • git branch -av
    查看所有分支,包括远程分支
  • git branch -vv
    查看分支对应的远程分支remote
    在这里插入图片描述
  • git remote add <远程仓库名> <URL>
    一般这个<远程仓库名>设置成origin
  • git push -u <远程仓库名> <本地分支名>:<远程分支名>
    如果远程分支名被省略,则表示将本地分支推送到与之存在追踪关系(即-u的含义)的远程分支(通常两者同名)。如果该远程分支不存在,则会被新建。
  • git push --set-upstream <远程仓库名> <本地分支名>
  • git branch --set-upstream-to <远程仓库名>/<远程分支名> <本地分支名>
    关联本地分支和远程分支
git推送本地分支到远程分支举例

场景:有时候我们开发需要开一个分支,这样可以有效的并行开发。
两种开分支方式: 一种是在远程开好分支,本地直接拉下来;一种是本地开好分支,推送到远程。

  • 远程开好分支然后拉到本地
    • git checkout -b feature-branch origin/feature-branch //检出远程的feature-branch分支到本地
  • 本地先开好分支然后推送到远程
    • git checkout -b feature-branch //创建并切换到分支feature-branch
    • git push origin feature-branch:feature-branch //推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)

比较差异

  • git diff
    暂存区和工作区的区别

  • git diff -- FileName
    比较FileName在暂存区和工作区中的区别

  • git diff -- FileName1 FileName2
    比较FileName1, FileName2在暂存区和工作区中的区别

  • git diff --cached
    比较暂存区和HEAD之间的差异

  • git diff --cached FileName
    比较FileName在暂存区和HEAD之间的差异

  • git diff sha1_id1 sha1_id2
    比较sha1_id2和sha1_id1对应的对象之间的差异

  • git diff HEAD^ HEAD
    比较HEAD和父commit之间的差异。

  • git diff HEAD^^ HEAD
    比较HEAD和祖父commit之间的差异

  • git diff HEAD~n HEAD
    比较HEAD和父n个commit之间的差异

  • git diff BranchName1 BranchName2
    比较分支之间的差异,这里的BranchName可以换成对应的sha1_id。

  • git diff BranchName1 BranchName2 -- FileName
    比较FileName在不同分支之间的差异

git reset撤销暂存区的修改

(git restore --staged 代替了git reset HEAD)

  • git restore --staged FileName
  • git reset HEAD
    撤销暂存区的修改,全部文件变成HEAD一样
  • git reset HEAD -- FileName
    撤销暂存区的修改,FileName变成HEAD一样
  • git reset --hard sha1_id
    工作区和暂存区都恢复到sha1_id对应的状态,撤销最近几次commit的内容
  • git reset --hard HEAD
    工作区和暂存区都恢复到HEAD

git checkout撤销工作区的修改

(git restore 代替了git checkout)

  • git checkout -- FileName
    撤销工作区的修改,FileName恢复成暂存区一样

变基

git rebase工作的过程中,就是用了分离头指针。rebase意味着基于新base的commit来变更部分commits。它处理的时候,把HEAD指向base的commit,此时如果该commit没有对应branch,就处于分离头指针的状态,然后重新一个一个生成新的commit,当rebase创建完最后一个commit后,结束分离头状态,Git让变完基的分支名指向HEAD。

  • git rebase -i sha1_id
    对sha1_id对应的子对象变更
  • git rebase -i --root
  • git rebase --abort
    放弃正在进行中的rebase

git stash

  • git stash
    将当前的修改存到堆栈中
  • git stash list
  • git stash apply
  • git stash pop

备份

  • git clone --bare
    克隆裸仓库(.git文件夹),不包含工作区
    裸仓库对代码平台的作用:http://www.worldhello.net/gotgit/02-git-solo/100-git-clone.html#id4

其它

列出所有跟踪的文件

  • git ls-files

不再跟踪文件

  • git rm --cached fileName
    保留文件,只是git不再跟踪
  • git rm -f fileName
    删除文件,同时git不再跟踪

撤回git init

  • rm -rf .git
    删除.git路径中所有的内容就等于撤销了git跟踪

git fetch
git merge /
git push -all # 所有分支

打标签

  • git tag
    列出已有标签
  • git tag -a TagName -m "note"
    创建标签
  • git tage -a TagName 某个commit地址
    对历史打标签
  • git show TagName
    查看对应标签信息
  • git tag -d TagName
    删除标签
远程推送&删除标签
  • git push origin TagName
    默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样——你可以运行 git push origin TagName
  • git push --tags
    推送所有标签
  • git push origin --delete TagName
    远程删除某个标签
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值