git的一些补充点
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...
- git rm --cache file/path
--cache是指 只是从 缓存区 stage区域 删除, 并不从工作区中删除文件. 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 来为你 管理 你的文件或工程!!!
- git brach -avvl
-a显示所有的分支,
-v显示每次提交的详细信息
-l显示每个分支的对应信息等
- git branch -avv, 注意这里是两个-v, 两个小写的v, 不是 -v-V, 没有 大V, 大V是错误的.
- 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的一些补充点的更多相关文章
- Git命令汇总(补充篇)
上一篇<Git命令汇总基础篇>总结了使用Git的基本命令,这一篇作为补充主要给大家讲一些平时使用中的技巧和总结 . 学会了这些命令,已经基本解决了使用Git中大部分问题. 1.gitign ...
- [Git] 010 对 [Git 008] 的补充:实现 commit 不计次数
回顾:[Git] 008 status 与 commit 命令的补充 的 "2.4" [Git 008] 的 "2.4" 使用 git commit --ame ...
- Git理论知识补充
转自: http://www.cnblogs.com/hnrainll/archive/2012/11/13/2768003.html 对于任何一个文件,在 Git 内都只有三种状态:已提交(comm ...
- git 命令(补充篇)的本质理解
1 标签, git tag tag_name SHA 本质: 在某次commit 上打上标签tag_name ,标签在代码库中起着"锚点"的作用. 注意: commit 由 SHA ...
- Git 简易使用指南及补充
Git最简易的使用指南 助你开始使用 git 的简易指南,木有高深内容,;) 安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹, ...
- [Git] 008 status 与 commit 命令的补充
本文的"剧情"承接 [Git] 007 三棵树以及向本地仓库加入第一个文件 1. 对 "status" 的补充 1.1 "status" 有 ...
- git使用和理解之一(不含分支)
0.前言 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 工作区和暂存区: 我们写代码的地方就是工作区,代码写完后, ...
- git - 版本控制器(本地仓库)
本地创建仓库,然后进行管理.提交到本地仓库(不需要网络),提交到远程仓库(需要网络) 相对于svn为克隆方式,赋值的是整个仓库,svn只是复制的代码. 1.电脑新创建一个”本地仓库”空文件夹 2. ...
- webstorm 如何配置git
2016-09-22 15:00:25 补充js 操作后 发现工具自动生成了两个文件,如果提交到git上 会造成不必要的麻烦,看看怎么去掉产生这个的原因吧! 去掉对应的监听:http://fronte ...
随机推荐
- 利用pl/sql执行计划评估SQL语句的性能简析
一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在. 那么,作为 ...
- 1、js基础内容
js基础内容 1. 编辑器 编译环境 浏览器 编辑软件 sublime DW H5Build Atom ==[注]尽可能多的去使用编辑器去编辑代码.== Html+css ==JS 逻辑== 比作建设 ...
- 12:Css3的概念和优势
12:Css3的概念和优势 CSS3是css技术的升级版本,CSS3语言开发是朝着模块化发展的.以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为一些小的模块,更多新的模块也被加入进来. ...
- python 3 往Excel 中的写入内容但不覆盖原内容
EXCEL 写入数据保持原样式 import xlwt import xlrd import xlutils import xlutils.copy class ExcelHandle(): def ...
- python re(正则表达式模块)学习
一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...
- word2vec生成词向量和字向量
生成字符向量的过程中需要注意: 1)在收集数据生成corpus时候,通过Word2Vec生成字向量的时候,产生了“ ”空格字符向量,但是加载模型是不会成功的.那么你不是生成的binary文件,就可以修 ...
- CentOS下rpm命令详解
CentOS下rpm命令详解 rpm,Redhat Package Manager,即为红帽公司为RHEL开发的专用包管理器,后来更改为RPM Package Manager,类似于GNU项目,使用递 ...
- (转)spring中的拦截器(HandlerInterceptor+MethodInterceptor)
1. 过滤器跟拦截器的区别 在说拦截器之前,不得不说一下过滤器,有时候往往被这两个词搞的头大. 其实我们最先接触的就是过滤器,还记得web.xml中配置的<filter>吗~ 你应该知道 ...
- vsftp快速搭建ftp服务器
什么是vsftp: vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面.它支持很多其他的 FT ...
- 【JVM】-NO.116.JVM.1 -【JDK11 HashMap详解-5-红黑树】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...