git常用操作备忘录

一、四个工作区域

在这里插入图片描述

Workspace: 工作区,就是你平时存放项目代码的地方

Index/Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

Repository: 本地仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。
            其中HEAD指向最新放入仓库的版本

Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

备注:工作区时写好的代码经过“git add .” 后,即会进入暂存区。

二、工作流程

1、工作区:修改文件、新增文件处于这个区。
2、暂存区:执行git add后,将工作区的内容保存到暂存区
3、本地仓库区:执行git commit后,将暂存区的内容保存到仓库区
4、远程仓库:执行git push后,将本地仓库区的内容保存到服务器

三、文件的四种状态

在这里插入图片描述

Untracked:   未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

Unmodify:   文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 
            如果它被修改, 而变为Modified.
            如果使用git rm移出版本库, 则成为Untracked文件

Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,
           使用git checkout 则丢弃修改过, 
           返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 
        执行git reset HEAD filename取消暂存, 文件状态为Modified

下面的图解释了这四种状态的转变:
在这里插入图片描述
新建文件—>Untracked

使用add命令将新建的文件加入到暂存区—>Staged

使用commit命令将暂存区的文件提交到本地仓库—>Unmodified

如果对Unmodified状态的文件进行修改—> modified

如果对Unmodified状态的文件进行remove操作—>Untracked

四、常用git命令

一、基本环境

1.1、查看git版本
     git --version

1.2、查看仓库的远端地址
      git remote -v
     
1.3、查看所有文件状态
     git status

二、checkout

2.1、检出本地已经存在的分支
     git checkout [本地已存在的分支名]
     例如:git checkout release
     
2.2、基于指定分支(可以是远端分支)创建本地新分支,并立即切换过去,-b 表示创建新分支
     git checkout -b [新分支名] [已存在的分支名]
 例如:git checkout -b master2 remotes/mega/master
 
2.3、git checkout [文件路径/文件名]
     用途:将目标文件【检出】到【工作区】,通常用于覆盖工作区的修改。
     两种情况
          情况1:此文件已经add过,则会将【索引区】的【此文件】【检出】到【工作区】,原【工作区】的【此文件】会被覆盖
          情况2:此文件没有add过,刚会将【本地仓库】的【此文件】【检出】到【工作区】,原【工作区】的【此文件】会被覆盖
 
2.4、git checkout .
     用途:对【工作区】内的【所有文件】遍历执行 git checkout [文件路径/文件名],效果类比单文件checkout

2.5、git checkout
    用途:显示【工作区】相比较于【本地仓库】修改过的文件。add过的文件也显示出来,因为参照系是【本地仓库】,而不是【索引区】。
    备注:checkout后面不带任何参数。

三、branch

3.1、显示本地所有分支名称
     git branch
     
3.2、显示本地和远端所有分支名称
     git branch -a
     
3.3、显示本地和远端所有分支名称,及各分支的最后提交
     git branch -av
     
3.4、基于本地当前节点,创建本地新分支
     git branch [本地新分支名]
     
3.5、删除本地分支
     git branch -d [本地分支名]
     
3.6、强制删除本地分支
     git branch -D [本地分支名]
     
3.7、修改本地分支的名称
      git branch -m [本地旧分支名] [本地新分支名]

四、pull

4.1、变基式拉取
     git pull --rebase

五、push

5.1、将本地分支推送到远程
    git push origin [本地分支名称]
    
5.2、删除远程的分支
    git push --delete origin [远程分支名称]

六、reset

6.1、可以指定退回某一次提交的版本,【工作区的修改、暂存区的内容、及由 reset 所导致的新的文件差异,都会被放进工作区】
     git reset [提交id]
     git reset --mixed [提交id]

6.2、可以指定退回某一次提交的版本,【保留工作区和暂存区,由 reset 所导致的新的文件差异会被放进暂存区】
     git reset --soft [提交id]

6.3、可以指定退回某一次提交的版本,【同时清空工作区和暂存区】
     git reset --hard [提交id]

七、stash

7.1、将本地未提交、但已add的修改 临时保存起来
     git stash save [暂存本地的名称]

7.2、查看本地的临时保存记录
     git stash list 
 
7.3、将本地的临时保存都提出来
     git stash pop

八、rm
某此时候,整个项目中可能有一些没有任何作用的、支撑框架运行的文件,而这些文件又非常大,假如把它们上传到git服务上,其它同事clone代码就会花费很长时间。这时可以将这些文件排除在git跟踪范围之外

8.1、从暂存区或本地仓库中移除,但不删除工作区里的文件(即add后的内容可以用下面的命令删除,但若重新add仍然会进暂存区或本地仓库)
     git rm --cached [文件路径]
     
8.2、类比 8.1 的操作,不同的是对文件夹内的所有文件生效
     git rm -r --cached [文件夹路径]

九、clean

9.1、git clean
     用途:清除没有加入git版本库的文件
     参数: -n  演习。并不执行删除操作,只显示将被清理的文件列表
           -f  删除文件,但不会动.gitignore里标记的
           -df 删除文件和目录,但不会动.gitignore里标记的
     备注:与git checkout . 的区别,两者通常都用于删除工作区的修改。 \
         区别在于checkout会用【索引区】或【本地仓库】的版本来覆盖【工作区】,以达到删除工作区的目的。
         而 clean 的目标文件是未加入git跟踪的,所以不存在索引区和本地仓库的版本,对未加入git跟踪的文件执行checkout也会报错

十、.gitignore
直接在本地git仓的根目录下建立名称为“.gitignore”的文件,文件内每一行表示一条排除规则
/Logs
java.iml
/Lib*

举例说明:第一行表示排除Logs文件及其内部所有文件,第二行排除java.iml文件,第三行排除以“Lib”开头的所有文件夹

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值