1. git rm和 rm的区别
    git rm是删除文件, 同时加入到git的跟踪管理中,做一个登记,那么在git commit的时候, 会把这次删除作为一次修改提交上去, 否则, 在 git log中你就看不到 这次修改提交.
    rm仅仅只是 文件管理器的 删除 文件的命令, 从 硬盘上删除, 但是没有在git中做登记.记录, 所以 在git commit的时候,不会把这次删除记录操作 提交到local server上
    那么如果 已经 用 rm删除文件了,又 要 git commit的话, 可以在 commit的时候, 带上 -a选项: git commit -am 'msg...

  2. git rm --cache file/path
    --cache是指 只是从 缓存区 stage区域 删除, 并不从工作区中删除文件.
  3. git commit -am 'xxx'
    -m是 msg --message是消息的意思,是对该次提交所作的注释
    -a 是 --all 是对 所有做了修改和删除的文件进行 自动 stage, 但是对 新文件(没有add的新文件)没有影响
    git -a: tell command to automatically stage files that have been modified and deleted, but files you have not told git about are not affected.
    也就是, 如果 你只是用 rm命令 而不是用git rm 删除文件, 那么你就可以有两种方式进行处理:
    第一, 再次用 git rm删除, 最后, commit
    第二, 不用git rm了, 在提交的时候, 带上 -a选项. 即 git commit -am '...'

因为对文件的编辑方式有 新建 new, 修改modify, 删除delete几种, 当然你可以把所有的文件都 add到stage中, 然后commit, 也可以 只add新建文件, 而对modify和delte的文件, 不add, 在commit的时候, 带上 -a选项就可以自动 将它们提交到stage了.

git push -u origin master:

"origin master" 是指推送到origin仓库的 master分支
-u是指默认, 绑定, 将当前分支推送到 默认的/绑定的远程仓库上的对应分支.
当第一次使用了 -u选项后, 以后 推送的话, 就不再需要写 origin master了.直接使用 git push

git 从2.0之后, 默认的推送选项是 --simple 不再是2.0之前的--match, 如果是 --match表示的是将当前本地分支 推送到 所有匹配的 远程仓库的对应分支.

git push 是指, 如果当前分支和 多个(远程主机上的仓库分支)之间 存在"追踪" 关系, 那么指定-u会绑定一个默认主机, 以后就可以git push而不用任何参数推送到 默认的 远程仓库上去了 . git 就是用来 建立/保持/管理 这种 追踪关系的! 通过这种 追踪关系 来保持对文件/工程 (所谓工程, 就是 在一个项目中, 所有文件/多种资源的 文件的集合 包括这些文件和它们之间的 相对依赖关系的 总称) 的关联, 所以, 如果你要 保持 版本跟踪, 那么 就告诉 git吧, 让git 来为你 管理 你的文件或工程!!!

  1. git brach -avvl
    -a显示所有的分支,
    -v显示每次提交的详细信息
    -l显示每个分支的对应信息等
  • git branch -avv, 注意这里是两个-v, 两个小写的v, 不是 -v-V, 没有 大V, 大V是错误的.
  1. git log
    显示所有的提交记录

git add -A
不需要一个一个地添加untracked文件, 可以一次性地添加所有的文件.


关于git 的使用的一个详细参考地址: https://blog.csdn.net/gemmem/article/details/7290125

其中 很重要的一个概念是 : git仓库在哪里,和目录的关系是怎样的?

  • git仓库就是那个 隐藏目录 .git
  • 仓库和工作目录的位置关系: 能否 将一个目录下的 git仓库, 和 本地机器上 另一个不同位置处的 目录(即 工作目录)之间建立关联, 并进行add和commit 等 跟踪/追踪呢?
    不能: 因为, git仓库和 你说的那个要与之建立关联/联系的那个目录(实际上就是 工作目录) 之间 是 紧密相连的, 它们之间是不能分开的,不能分割开的,事实上, .git仓库就 存在于 工作目录下! .git仓库 是 工作目录下的 一个 隐藏子目录.
    所以, 比如, 如果你想对 www/html网站目录进行git跟踪管理, 就应该直接在 html目录下运行 git init命令, 这样在 www/html目录下(工作目录) 就生成一个 .git的 版本管理仓库了.

  • git 命令是针对某一个 仓库而言的. repo命令是针对某一个项目而言的. 因为一个项目中 可以包含多个 仓库. 所以 在具体的一个仓库中 , 就使用 git命令
  • git 的帮助命令是: git help 某某命令 这里git 就相当于一个 总的 命令.... 字命令就是help命令....

===============

要提交git commit, 必须告诉tell git who are you. 就需要配置git 使用 命令 git config 来配置 user. 其中 --global 和 --local选项指定 该user配置 是全局的(每个/仓库) 还是只用于当前这个仓库的.

全局的git配置是 在 ~/.gitconfig 文件中, 如果是 当前仓库的配置文件, 则是: .git/config 文件 注意两个配置文件的名称不同.
配置 user 对象, 会有一个 [user]节. 如果是 配置 当前仓库的话, 是指 该user 只用于 当前仓库的提交.

在git提交时, 会发现, 即使某些文件本身 并没有改变, commit 时, 仍然提示有所改变,"... files changed, .. . insertions" 是 由于 在 当前仓库的 配置文件.git/config 中设置 了 core.filemode=true. 意思是指 将工作目录中的文件 提交到 stage的时候, 都改变成 100644的模式:

100表示 文件的类型是 "普通文件" regular file, 040是目录, 120 是 symbolic link 等
644是文件的模式.
所以 是由于文件模式发生了改变, 导致文件在 commit的时候, 发生了改变, 要使文件不发生改变, 只要修改 core.filemode 为 false 即可!

git config 命令就是 对 git 配置文件 进行操作的命令, 你可以用 git config -e 打开编辑器来编辑这个config文件. 也可以用 --add, --unset , --replace, --replace-all, --get等选项来操作配置文件, 但是都要通过 config命令来进行, 不能直接用 git get core.filemode等类似命令来 操作config文件, 因为 只有git config命令, 没有 git get命令!

==============

git的版本跟踪/追踪, 是非常尊重用户的, 如果你不想要这个 版本仓库了, 不想再对工作目录进行版本管理了, 你可以删除 这个 git仓库: 只需要一步操作就可以了: 删除 工作目录下的 隐藏文件夹 .git 这个目录就可以了.

如同在汉语中, 有多音字和相同发音的字, 英语中同样有很多的同音字. 比如ge音: 有 歌, 哥, 各, 葛, 戈等的发音. 但是要通过 语境上下文来区分. 同样的, 英语中也有很多同音字, 所以, 听英语 也不是 单独的听一个一个的单词的~ (听单一,单独的,一个一个的单词,你是听不出是什么单词的, 因为有那么多 的同音字)也是要听词组的, 听句子的! 也是要根据 上下文的语境来进行区分和读取/理解的...

clothes: 不能用单数和数词: 比如: the clothes are smart. 不能说 five clothes. 通常只说 those clothes, 或用数词 : a T-shirt, two sweaters
而 clothing 是一个集合名词, 比如people 一样, 比如一件衣服要说: an article of clothing, a piece of clothing.

dress: 穿衣服要用被动语态,比如: She is dressed in her everyday clothes.
clothes: 中的es不发iz, 而是发z音,所以是 【kl2uz】


git add 的好处还有一个: 在切换分支branch的时候, 这些 git add 暂存区 会一起 切换过去!

git branch 分支号 <之前的某次提交的id号>, 这个命令的作用是: 基于之前的 某次 提交commit id , 回滚到 之前的中间的某次提交, 并建立一个 分支,(回滚到之前的某次提交, 并且创建分支的好处是: 回滚后,不必覆盖 master分支. 从而起到 "另存为" 一个 提交点(快照) 的作用)

感觉 git 跟 一些管理 : 操作系统 复原/回滚/还原精灵的 有点类似, 可以任意的 在 某个 时间节点上, 创建快照, 然后可以 恢复到这些时间节点上, 而其他的保存的 时间节点 快照仍然存在!
git branch 新的分支号 : 就是基于 之前的某个分支号 创建新的 分支号.
也可以基于某个分支 , 创建新的分支! git branch new_branch old_branch

git的一些补充点的更多相关文章

  1. Git命令汇总(补充篇)

    上一篇<Git命令汇总基础篇>总结了使用Git的基本命令,这一篇作为补充主要给大家讲一些平时使用中的技巧和总结 . 学会了这些命令,已经基本解决了使用Git中大部分问题. 1.gitign ...

  2. [Git] 010 对 [Git 008] 的补充:实现 commit 不计次数

    回顾:[Git] 008 status 与 commit 命令的补充 的 "2.4" [Git 008] 的 "2.4" 使用 git commit --ame ...

  3. Git理论知识补充

    转自: http://www.cnblogs.com/hnrainll/archive/2012/11/13/2768003.html 对于任何一个文件,在 Git 内都只有三种状态:已提交(comm ...

  4. git 命令(补充篇)的本质理解

    1 标签, git tag tag_name SHA 本质: 在某次commit 上打上标签tag_name ,标签在代码库中起着"锚点"的作用. 注意: commit 由 SHA ...

  5. Git 简易使用指南及补充

    Git最简易的使用指南 助你开始使用 git 的简易指南,木有高深内容,;) 安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹, ...

  6. [Git] 008 status 与 commit 命令的补充

    本文的"剧情"承接 [Git] 007 三棵树以及向本地仓库加入第一个文件 1. 对 "status" 的补充 1.1 "status" 有 ...

  7. git使用和理解之一(不含分支)

    0.前言 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 工作区和暂存区: 我们写代码的地方就是工作区,代码写完后, ...

  8. git - 版本控制器(本地仓库)

    本地创建仓库,然后进行管理.提交到本地仓库(不需要网络),提交到远程仓库(需要网络) 相对于svn为克隆方式,赋值的是整个仓库,svn只是复制的代码.   1.电脑新创建一个”本地仓库”空文件夹 2. ...

  9. webstorm 如何配置git

    2016-09-22 15:00:25 补充js 操作后 发现工具自动生成了两个文件,如果提交到git上 会造成不必要的麻烦,看看怎么去掉产生这个的原因吧! 去掉对应的监听:http://fronte ...

随机推荐

  1. re:从零开始的数位dp

    起源:唔,,前几天打cf,edu50那场被C题虐了,决定学学数位dp.(此文持续更新至9.19) ps:我也什么都不会遇到一些胡话大家不要喷我啊... 数位dp问题:就是求在区间l到r上满足规定条件的 ...

  2. 算法提高 金属采集_树形dp

    算法提高 金属采集   时间限制:1.0s   内存限制:256.0MB        问题描述 人类在火星上发现了一种新的金属!这些金属分布在一些奇怪的地方,不妨叫它节点好了.一些节点之间有道路相连 ...

  3. QT上位机

    程序是用QT写的,通过COM口进行数据的读取. 源码地址:https://github.com/kunkunlin/QT-SWJ

  4. Nest.js WebSocket

    Docs: https://docs.nestjs.com/websockets/gateways λ yarn add @nestjs/websockets λ nest g ga events e ...

  5. windows Apache服务器简单配置虚拟域名(转载)

    1.找到apache目录下的conf下的extra下的httpd-vhosts.conf虚拟主机配置文件 将下面的代码复制粘贴到最下面:   #<VirtualHost *:80>#   ...

  6. canvas里设置width和css里设置width和js里设置width的区别

    canvas.width 和 它的style.width是不一样的: canvas是个画布,有他自己的宽和高(默认是没有单位的纯数字),就是canvas.width和canvas.height的宽和高 ...

  7. java学习(三)--- 修饰符

    访问修饰符: default.public.private.protected 非访问修饰符 static: 静态方法,静态变量 final: final变量: final变量能够显示的初始化并且只能 ...

  8. Oracle课程档案,第十二天

    死锁是由于两个对象在拥有一份资源的情况下申请另一份资源, 而另一份资源恰好又是这两对象正持有的,导致两对象无法完成操作,且所持资源无法释放. 阻塞是由于资源不足引起的排队等待现象. unso:撤销 c ...

  9. SpringBoot:四种读取properties文件的方式

    前言 在项目开发中经常会用到配置文件,配置文件的存在解决了很大一份重复的工作.今天就分享四种在Springboot中获取配置文件的方式. 注:前三种测试配置文件为springboot默认的applic ...

  10. 倒计时48小时|2018GIAC上海站参会攻略来了!

    再过一天,令大家期待已久的GIAC全球互联网架构大会将登陆魔都与众位架构师.技术负责人及高端技术从业人员见面! 这场策划许久的技术盛宴,我们邀请到了腾讯.阿里.京东.美团.keep.UC.360.网商 ...