Git实用命令

描述

这一篇文章全是精简的git命令和对应解释,不面向初学者。初学者十分建议去学习廖雪峰的git教程
镇图:
在这里插入图片描述

常用命令(应熟悉)

  • 具体看下面一节,这里只是罗列,能进这个表很了不起
    git log --graph
    git log --pretty=oneline
    git remote -v
    git checkout <branch名>
    git checkout <tag名>
    git merge dev
    git stash
    git stash pop
    git status
    git diff <文件名>
    

Git命令总结

1. 创建分支

  • 创建分支(-b表示创建并切换)

    git checkout -b dev
    或者
    git branch dev
    git checkout dev
    

    两者是等价的,个人推荐后一种

  • 查看当前分支

    git branch
    

2. 合并分支

  • 前提你在dev分支上的修改已经提交

    git add <修改文件>
    git commit -m "change on dev"
    

    来到master分支,并将dev上的修改merge到master上,这是一种Fast-forward的合并,直接将master指向了dev的当前提交

    git checkout master  
    git merge dev
    
  • 合并分支的另一种用处不大–no-ff参数,表示禁用Fast forward。master创建了一个新的commit,而不是master简单的指向了dev

    git merge --no-ff -m "merge with no-ff" dev
    
  • 删除分支

    git branch -d dev
    

    强行删除分支(dev分支add和commit过,但并没有和谁进行过merge)

    git branch -D dev
    

3. Bug分支

  • “暂停开发”(我自己起的名字)——把代码藏起来
    git stash
    
  • 查看有没有藏起来的代码——是不是有没恢复的现场
    git stash list
    
  • 把刚才还在开发的代码找回来
    git checkout <你刚才开发的分支>
    git status // 你会发现代码竟然没有任何更改
    git stash pop // 代码不在躲藏,回来了
    

4. 打标签Tag

  • 给最新的commit打标签
    git tag v1.0
    
  • 给固定的commit打标签
    git log --pretty=oneline // 查看以前的commit,找到你想要打标签的tag
    git tag v0.9 <commit号>
    
  • 查看所有标签
    git tag
    
  • 查看tag那次的提交信息
    git show v1.0
    
  • 创建标签并备注
     git tag -a v0.1 -m "version 0.1 的说明" <v0.1的commit id>
    
  • 推送tag
    git push origin v1.0
    
  • 删除tag
    git tag -d v1.0 //本地删除
    git push origin :refs/tags/v1.0 //如果已经push了,除了本地删除再执行这句话
    
  • 移动到固定tag下(git clone之后是有的,这一点和分支不一样)
    git checkout v1.0
    

5. 合并冲突

  • 假设在分支dev上修改了test.txt,在分支master上也修改了test.txt。两个分支上均进行了add和commit操作。
  • 这时:
    git checkout master
    git merge dev
    
    系统会提示冲突,用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,请你手动删除不需要的部分,保留需要的部分。修改完毕后
    git add test.txt
    git commit -m "fixed conflict"
    
    dev分支上的修改已经merge到了master上,可以删除dev分支了

6. 提交修改

  • 查看工作区和stage的差别
    git status
    
  • 查看文件哪里被修改了
    git diff <文件名>
    
  • 查看工作区和版本库里面最新版本的区别
    git diff HEAD -- <文件名>
    

7. 撤销修改

  • 还没有执行add命令,放弃上一次add后对某个文件的修改
    或者,执行了add命令后再次更改,放弃add命令之后的修改
    git checkout -- <文件名>
    
  • 已经执行了add命令,放弃某个文件从上一次add到这一次add之间的修改
    git reset HEAD <文件名>   // 撤销这次缓存区的更改(从缓存区给我吐回工作区)
    git checkout -- <文件名> 
    

8. 删除文件

无论你是使用右键删除还是rm删除文件,你都需要重新使用git完成删除,不然git怎么知道你删的对不对
所以我建议如果想删除某个文件,请使用git rm

  • 从版本库中删除该文件
    git rm test.txt 
    git commit -m "rm test.txt"
    

如果你误删了某个文件(git rm),但是这次删除还没有commit,版本库中是有这个文件的,这时还有的救

  • 从版本库中重新恢复误删的文件
    git reset HEAD <文件名>   // 撤销这次缓存区的更改(从缓存区给我吐回工作区)
    git checkout -- <文件名> 
    

如果你误删了某个文件,但是这个误删的文件,版本库中是从来没有commit过的

  • 你只能去回收站碰碰运气了

9. 版本回退

  • 显示从最近到最远的提交日志,看到3次提交
    git log
    
  • 清晰显示提交日志
    git log --pretty=oneline
    
  • 回退上一个版本,上上个版本使用HEAD^^
    git reset --hard HEAD^
    
  • 回退到之前的某个版本
    git reset --hard <你想要回退的版本号>
    
  • 查看之前的全部git命令,每一行命令前面的一串十六进制数字是版本号
    git reflog
    

10. 多人或多电脑协作

  • 克隆远程仓库下来后,是看不到master以外的分支的。创建远程的dev分支到本地(本地dev在执行这个命令之前是不在的)

    git checkout -b dev origin/dev
    
  • 将远程仓库的dev分支与本地库的dev分支建立联系

    git branch --set-upstream-to=origin/dev dev
    

    这样你执行命令

    git checkout dev
    git add <修改文件>
    git commit -m "备注"
    git pull origin dev
    git push origin dev
    

    你在dev分支上,pull的是远程仓库的dev分支,push的是本地dev分支到远程仓库的dev分支上

  • 无论你在本地的哪个分支上,你都能pull和push。假设你已经按照上一步完成了分支联系的建立,下面代码的效果是这样的

    git pull origin dev    // 远程dev 拉到 本地dev
    git pull origin master // 远程master 拉到 本地master
    git push origin dev  // 本地dev push到 远程dev 
    git push origin master  // 本地master push到 远程master
    

11. 下拉远程分支

  • 下拉远程分支
    git fetch origin [远端分支名]
    
  • 切换分支
    fetch后是不会显示新拉下来的分支名的,但是已经可以切换了
    git checkout [新拉下来的远端分支名]
    

最常用的写在最后面

1. 版本推送

git add <修改的文件1> <修改的文件2>
git commit -m "备注"
git pull origin master
git push origin master

2. 版本克隆

git clone <远程仓库网址>

3. 设置远端网址

git remote add origin <远端仓库网址>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值