首先来了解两个概念:

工作区:比如你的项目目录
暂存区:git和其他版本控制系统的不同之处就是有这个暂存区的概念。
.git不是工作区,而是git 版本库,在版本库中存放着很多东西,比如暂存区(stage),git为我们创建的第一个分支master,以及指向master的一个指针head。
                    
一、提交系列命令:
git add .     // 将文件修改添加到暂存区;
git commit -m ""    // 将暂存区的所有内容提交到当前分支
 
二、查看信息命令:
1、git status    //查看目前状态,这个命令很常用,运行这个命令git能够给我们提供很多信息,比如以下的提示信息很常见
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) modified: readme.txt Untracked files:
(use "git add <file>..." to include in what will be committed) LICENSE no changes added to commit (use "git add" and/or "git commit -a")
Git非常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。

2、

git log       可以查看所有提交过的版本信息
commit qaws1a4b1e251f07e4e8658fd2b1d6d0918ca44f (HEAD -> test_qy, origin/test_all, test_all)
Author: qy <quyang@123.com.cn>
Date: Thu Apr 25 13:49:10 2019 +0800 member page change commit qwsedeed7b208331ead8cc469fd568f0d4c2da05
Author: qy <quyang@123.com.cn>
Date: Thu Apr 25 11:44:50 2019 +0800 member strategy page style change commit 417fce1c1b1171f5ed9f5a5a6cb31e44ec41da77
Author: zhangsan <zhangsan@123.com.cn>
Date: Thu Apr 25 11:26:49 2019 +0800 modify some file commit 76ytd819f40a633d4ec3fc8f9d7662c6f234c0fb
Merge: eb784ae 000efaf
Author: lisi <lisi@123.com>
Date: Thu Apr 25 11:24:13 2019 +0800 update them commit tru24ae4162639ff01346cc12c1d578bddb5a33e
Author: lisi <lisi@123.com>
Date: Thu Apr 25 11:23:00 2019 +0800 update continue
git reflog      查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
fabe1a4 (HEAD -> test_qy, origin/test_all, test_all) HEAD@{0}: checkout: moving from test_local to test_qy
ae3c43b (origin/test_local, test_local) HEAD@{1}: cherry-pick: member page change
01311f0 HEAD@{2}: checkout: moving from test_all to test_local
fabe1a4 (HEAD -> test_qy, origin/test_all, test_all) HEAD@{3}: merge test_qy: Fast-forward
3f625ee HEAD@{4}: checkout: moving from test_qy to test_all
fabe1a4 (HEAD -> test_qy, origin/test_all, test_all) HEAD@{5}: checkout: moving from test_all_0001 to dbg_qy_0001
3f625ee HEAD@{6}: checkout: moving from dbg_qy_0001 to dbg_all_0001
fabe1a4 (HEAD -> test_qy, origin/test_all, test_all) HEAD@{7}: commit: member page change
3f625ee HEAD@{8}: checkout: moving from test_local to test_qy
01311f0 HEAD@{9}: cherry-pick: member strategy page style change
3a60b15 HEAD@{10}: pull: Fast-forward
84eee19 HEAD@{11}: checkout: moving from test_all to test_local

三、回退系列命令:

1、丢弃工作区的修改(此时还没有执行git add .)

git checkout -- "文件路径"  删除指定文件的修改,执行后工作区是干净的

2、丢弃暂存区的修改 (此时已经执行了git add .但是还没有执行git commit -m "")

要用的是git reset命令,步骤如下:

git log    查看commit历史信息,拿到最新一次提交的commit-id

git reset --hard/--soft/--mixed  "xxx"(这里指拿到的commit-id)

git reset命令有三个可选的参数:

git reset --hard af4d64d4d5d51709a4a0af7db01e5f2a392f9a19

此命令执行后,工作区中的所有未提交的修改都会丢失,无论是否是你想要保留的部分

-- hard这个命令是很危险的,它是git里面少数几个会丢失信息的命令,虽然也可以通过git reflog来挽救,但最好还是不要使用此参数

git reset --soft af4d64d4d5d51709a4a0af7db01e5f2a392f9a19

此命令执行后,查看文件的状态并没有做任何改变,只是代码所作用的效果不显示了

git reset af4d64d4d5d51709a4a0af7db01e5f2a392f9a19   //默认参数为mixed

Unstaged changes after reset:

M index.html

此命令执行后,将暂存区的修改撤回到了工作区,即git add .之前的状态

git status //查看文件状态,修改已经被撤回到暂存区

On branch dbg_qy_0001

Changes not staged for commit:

(use "git add <file>..." to update what will be committed)

(use "git checkout -- <file>..." to discard changes in working directory)

modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

3、将提交到分支的修改撤回到工作区(即已经执行了git commit,但还没有git push)

git log //拿到想要撤销的修改前一次的提交id

git reset af4d64d4d5d51709a4a0af7db01e5f2a392f9a19

git status  //查看状态看到提交到分支上的修改以已经撤回到工作区

On branch test_qy

Changes not staged for commit:

(use "git add <file>..." to update what will be committed)

(use "git checkout -- <file>..." to discard changes in working directory)

modified:   src/index.vue

no changes added to commit (use "git add" and/or "git commit -a")

4、将push到远程的个人分支的修改撤回(已经执行了git push但是还未merge到公共的repository)

这种情况同样也可以使用git reset命令来回退,但是当你回退到某一个版本再次push的时候,由于本地的版本落后于远程的版本,此时需要使用git push -f强制推送。

注意这种情况是只有你一个人使用的远程分支

5、要回退的代码已被merge(合入)到公共的repository

git log   //查看提交历史信息,拿到要撤回的那次提交的commit-id

git revert   "xxx"(commit-id)

若产生冲突,手动解决冲突,然后提交;

git revert 与 git reset的区别:

git reset执行后,要回退的那次提交之后的所有提交都被撤回到工作区,如果其他提交是团队其他开发人员做的,那么就会影响到其他人的代码,这样做是不合理的。

git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
    * git revert HEAD                  撤销前一次 commit
    * git revert HEAD^               撤销前前一次 commit
    * git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,

四、删除命令:

rm "文件"

rm test.txt

当误删了的时候
Git checkout -- test.txt
 
 
五、修改提交信息命令:

使用 git commit --amend 命令(修改最近一次提交的注释信息)
进入一个git编辑模式:
按d键两遍,删除第一行
换行
键盘按“i”键,进入编辑模式
输入commit名称:list edit
按esc键
键盘输入“:wq”(写入编辑信息并且退出)
 
六、关于分支命令:
1、git checkout -b dev //创建并切换到dev分支
2、git merge dev //将dev分支合并到当前分支
3、git branch -D dev //删除dev分支
 
4、git rebase master   //将master分支在当前分支做一次衍合操作
 
git rebase 合并分支的方法:
(1)git checkout dev   
(2)git rebase master
(3)git checkout master
(4)git merge dev
 
关于git merge 和git rebase 想要详细了解的请看以下两篇文章:
git rebase 和 git merge的具体工作原理:https://www.cnblogs.com/youyang-2018/p/10790422.html
 
 
 
 
 

git总结一、工作中常用基础命令的更多相关文章

  1. 工作中常用Linux命令--服务器运维

    工作中常用Linux命令--服务器运维 lsof查看端口使用情况 lsof -i:8080更多lsof命令使用说明:http://www.cnblogs.com/peida/archive/2013/ ...

  2. 工作中常用Lixu命令学习笔记

    对于Linux,我是菜鸟,也是在工作中了才开始慢慢接触,用Linux的人都我都会觉得屌屌的,现在把工作中常用的一些Linux命令记录一下,供以后学习和参考. cd 这可能是我觉得Linux最简单的一个 ...

  3. 工作中常用Linux命令

    建立软链接  ln -s      例:ln -s b a 解释:把文件夹a和文件夹b关联起来,访问文件夹a,实际访问的是问价夹b 删除软连接  rm -rf a  直接删掉a文件夹跟a和b的软连接. ...

  4. git 工作中常用命令(结合vscode学习git 命令)

    作为一名前端开发,大家在工作中常常使用什么开发工具呢,我觉得我首选的是vscode,他配合git使用起来非常方便. 工作中常用三个命令: git终端常使用: git add . git commit ...

  5. 【基础】工作中常用的linux命令,经常会被面试官问到

    前言 面试经常会问到一些Linux操作命令,下面就工作中常用的和面试问的频率较高的命令做详细描述. 常用命令 修改密码:passwd 用户名 切换用户名:su 用户名 查看当前路径:pwd 调整路径: ...

  6. git工作中常用操作总结

    这篇文章主要记录下工作中常用的git操作.主要是对之前文章记录的问题做个总结,这个其实在idea中操作更加简单 别名配置 在敲git 命令时,其实可以使用别名,比如 commit可以配置为ci 下面是 ...

  7. 工作中常用的Linux命令:mkdir命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...

  8. 工作中常用的Linux命令:crontab命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...

  9. 工作中常用的Linux命令:ipcs/ipcrm命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...

随机推荐

  1. JavaScript一看就懂(3)数组

    定义数组 var a = [1, 2, 3]; typeof a; //"object", 数组是对象 a.length; //数组长度 相关操作 a[0]; //下标访问 a.p ...

  2. 1.5准备CentOS和Nginx环境「深入浅出ASP.NET Core系列」

    准备CentOS 1.1虚拟机 CentOS的安装这里使用vmware workstation 14来做虚拟机,当然你也可以用Oracle的虚拟机或者不用虚拟机,使用云服务或者使用双系统,不是什么大问 ...

  3. .Net—反射

    在学习反射之前,先来理解以下几个概念. 1.什么是程序集? 程序集是.net中的概念. .Net中的dll文件与exe文件都是程序集.(exe与dll的区别?) exe文件是可执行文件,有执行入口.可 ...

  4. 【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页

    在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...

  5. 【转】解决未能加载文件或程序集'WebGrease‘的问题

    在多个视图中,如果有使用共用的样式代码,可以把它们移至CSS文件中去.今天Insus.NET就举例一个例子来说明. 比如前2篇中<ASP.NET MVC图片管理(上传,预览与显示)>htt ...

  6. 简简单单的Vue3(插件开发,路由系统,状态管理)

    既然选择了远方,便只顾风雨兼程 __ HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 插件 路由(vue-router) 状态管理模式(Vuex) 那在上篇文章,我们讲了, ...

  7. 结合JDK源码看设计模式——策略模式

    前言: 现在电商已经成为我们生活中不可或缺的购物渠道,同时各大商家会针对不同的时间做出不同的折扣,这在我们看来就是一种营销手段,也是一种策略,今天我们就来讲讲JDK中的策略模式是怎么样的. 一.定义 ...

  8. 小游戏大智慧,10 个让人眼前一亮的 JavaScript 游戏

    摘要: JS还可以这么玩~ Fundebug经授权转载,版权归原作者所有. 这是一篇有趣的文章,我们精选了 JS13K 游戏编程挑战的优秀作品,与大家分享.JS13K 是专为 JavaScript 开 ...

  9. 005. [转] SSH端口转发

    玩转SSH端口转发 SSH有三种端口转发模式,本地端口转发(Local Port Forwarding),远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic ...

  10. vue+原生JavaScript实现slideDown与slideUp[简单思路]

    整个代码如下: <template> <div style="width:400px;margin:100px auto;"> <div class= ...