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. pushd和popd

    [原文地址]   其实,很早就知道pushd和popd在linux中可以用来方便地在多个目录之间切换.那时比较浮躁,感觉切换目录没必要这么复杂.在实际中,发现通过使用pushd和popd能够极大地提高 ...

  2. .NET Core 2.1 源码学习:看 SocketsHttpHandler 如何在异步方法中连接 Socket

    在 .NET Core 2.1 中,System.Net.Sockets 的性能有了很大的提升,最好的证明是 Kestrel 与 HttpClient 都改为使用 System.Net.Sockets ...

  3. 《Mysql 分区分表》

    一:分区/分表 为了什么? - 当MySQL单表的数据量过大时,数据库的访问速度会下降,需要处理大量数据,所以需要把数据分散存储. - 常用 "水平" 切分 二:MySQL常见的水 ...

  4. NodeJS笔记(三)-创建第一个NodeJS web项目 Express

    参考:Express的安装 先创建一个文件夹专门存放NodeJS项目,这里以“E:\NodeJSProject”为例 CMD指向该目录 执行以下命名 mkdir expressdemo cd expr ...

  5. 苹果审核被拒,解析奔溃日志.txt转crash文件

    1. 桌面新建一个文件夹,用来存放crash相关的东西.取名crash 2.下载苹果官方邮件里给的后缀名为 .txt 的被拒附件(这三个txt格式文件为苹果返回的崩溃日志文件),把这三个文件放在刚新建 ...

  6. 增加wamp64 PHP支持版本

    1.停止WAMP服务器.2.下载要安装的PHP版本.下载Window版本的ZIP包啦:http://php.net/downloads.php.解压到 Wamp的安装目录C:\wamp64\bin\p ...

  7. vue router相关用法

    router.push(location) 想要导航到不同的 URL,则使用 router.push 方法.这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之 ...

  8. 流控制、FlowControl

    这个选项基本上所有网卡都会有,但是叫法会有些差别,比如Realtek网卡叫做流控制,Intel网卡叫做流程控制,还有一些网卡选项干脆是英文的,叫做FlowControl,很多交换机上也有这个功能,也叫 ...

  9. 我用MATLAB撸了一个2D LiDAR SLAM

    0 引言 刚刚入门学了近一个月的SLAM,但对理论推导一知半解,因此在matlab上捣鼓了个简单的2D LiDAR SLAM的demo来体会体会SLAM的完整流程. (1)数据来源:德意志博物馆Deu ...

  10. IO流的总结(二)

    缓冲字节流: 我们先说一下缓存区的概念: 缓冲区就好比一辆车,一车一车的把数据拉走,这样就效率快多了 按照流的方向分类: 写入数据到流中,字节缓冲输出流 BufferedOutputStream 读取 ...