Git---记录每次更新到仓库--下
来源:互联网 发布:游戏陪玩软件 编辑:程序博客网 时间:2024/05/21 17:01
概述:
主要介绍忽略文件、提交文件、移除文件。
1.忽略文件:
有时候一些文件并不要git大人管理,为Git大人减轻负担,例如日志文件,或编译过程中创建的临时文件等等
如何做?
在项目根目录下建立一个.gitignore文件,文件如何写?,请看规则
- 所有空行或者以#开头的行都会被Git忽略,类似.bat文件
- 可以使用标准的glob模式匹配
- 匹配格式可以以(/)开头防止递归
- 匹配模式可以以(/)结尾制定目录
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
glob简化版正则表达式:
星号(*)匹配0及以上字符
问号(?)匹配1个字符
[abc]:匹配a或b或c
[1-9]:匹配0到9当中某个数字
两个星号(**):任意中间目录
例如:a/**/z 可以匹配a/z,a/b/z 或者 a/b/c/
例子:
1、*.a 忽略后缀为.a文件
2、!lib.a 上面忽略.a文件,除了lib.a文件
3、/TODO 忽略当前目录下目录名为TODO
4、build/ 忽略所有在build目录下文件和目录
5、doc/*.txt 忽略doc直接子目录下的.txt文件,例如doc/note.txt 忽略,而doc/server/arch.txt不会忽略
6、doc/**/*.pdf 忽略doc所有子目录下的pdf文件
如果你是在不知道如何配可以参考:GitHub有一个十分详细的针对数十种项目及语言的.gitignore文件列表,你可以在
点击打开链接
实例演示:
创建一个目录aa作为测试目录
$ mkdir aaAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ lltotal 59drwxr-xr-x 1 Administrator 197121 0 六月 6 21:41 '~'/drwxr-xr-x 1 Administrator 197121 0 六月 7 16:21 aa/-rw-r--r-- 1 Administrator 197121 2467 六月 6 20:08 API.txt-rw-r--r-- 1 Administrator 197121 2964 六月 6 20:08 benchmarks.rb-rw-r--r-- 1 Administrator 197121 973 六月 6 20:08 benchmarks.txtdrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 examples/-rw-r--r-- 1 Administrator 197121 3632 六月 6 20:08 grit.gemspec-rw-r--r-- 1 Administrator 197121 11 六月 7 09:22 Hello-rw-r--r-- 1 Administrator 197121 2600 六月 7 09:34 History.txtdrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 lib/-rw-r--r-- 1 Administrator 197121 1106 六月 6 20:08 LICENSE-rw-r--r-- 1 Administrator 197121 1591 六月 6 20:08 PURE_TODO-rw-r--r-- 1 Administrator 197121 2412 六月 6 20:08 Rakefile-rw-r--r-- 1 Administrator 197121 13 六月 6 21:34 README-rw-r--r-- 1 Administrator 197121 6792 六月 6 20:08 README.mddrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 test/-rw-r--r-- 1 Administrator 197121 39 六月 6 20:08 VERSION.yml找到.gitignore配置忽略规则
这时候在aa建立一个文件提交会怎么样
Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ cd aaAdministrator@USER-20170424ZG MINGW64 ~/grit/aa (master)$ echo 'hello world' > hello.txtAdministrator@USER-20170424ZG MINGW64 ~/grit/aa (master)$ git add hello.txtThe following paths are ignored by one of your .gitignore files:aa/hello.txtUse -f if you really want to add them.第一:切换到aa目录下
第二:创建文件hello.txt
第三:提交,它会提示这个目录文件被忽略,如果你必要提交的话,带参数(-f) 类似高中封闭式管理不允许学生出去,学生只能硬闯了(-f 是force简写)
总结:当然很多规则,我只是抛砖,其他自己去实践。
2.查看已暂存和未暂存的修改
git status 就是模糊 , git diff 精准的, 类似 菜鸟和大神,菜鸟说这个我懂,但是就是说不出来(git status),大神说的头头是道(git diff)
哎,本人是菜鸟,暂时只能git status
Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ vim READMEAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git diffdiff --git a/README b/READMEindex 980a0d5..1a4cca6 100644--- a/README+++ b/README@@ -1 +1,2 @@ Hello World!+Hello World 这行是我新写的warning: LF will be replaced by CRLF in README.The file will have its original line endings in your working directory.第一:修改READE文件增加一行
第二:git diff 查看不同
看到---和+++没
‘+Hello World 这行是我新写的‘ 前面加号表示我新添加的一行
总结:git diff 比较的是当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容
如果要看暂存区域和上一次提交的内容进行比较?
语法:git diff --cached
Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git diff --cachedAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git statusOn branch masterYour branch is ahead of 'origin/master' by 9 commits. (use "git push" to publish your local commits)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: READMEno changes added to commit (use "git add" and/or "git commit -a")Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git add READMEwarning: LF will be replaced by CRLF in README.The file will have its original line endings in your working directory.Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git diff --cacheddiff --git a/README b/READMEindex 980a0d5..1a4cca6 100644--- a/README+++ b/README@@ -1 +1,2 @@ Hello World!+Hello World 这行是我新写的
第一:git diff --cached没有反应,因为还没加入暂存区
第二:将README加入暂存区
第三:git diff --cached进行比较
3.提交更新
现在通过git add 文件 语句将文件放入暂存区,现在想提交了,怎么做
语法:git commit
# Please enter the commit message for your changes. Lines starting# with '#' will be ignored, and an empty message aborts the commit.# On branch master# Your branch is ahead of 'origin/master' by 9 commits.# (use "git push" to publish your local commits)## Changes to be committed:# modified: README#注意在第一个必须写本次提交内容或提交原因,不写不能提交
$ git commitAborting commit due to empty commit message.意思就是:你的注释信息为空,不能提交
如果我们嫌弃弹出文本编辑框,写的注释比较少,这时候我们可以使用-m 参数
$ git commit -m "我提交了README"[master e912810] 我提交了README 1 file changed, 1 insertion(+)看到-m 后面写 注释
发现每改一个东西都要经过暂存区多麻烦啊,现在不刚高考吗?有没有保送机会(直达)
4.跳过使用暂存区域
语法:git commit -a -m "这里写注释"
echo "将计就计" > READMEAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git commit -a -m "将计就计"warning: LF will be replaced by CRLF in README.The file will have its original line endings in your working directory.[master 9ddce59] 将计就计 1 file changed, 1 insertion(+), 2 deletions(-)第一:修改README文件
第二:直接提交
5.移除文件
现在觉得README文件不需要了,需要移除怎么办?
语法:git rm 文件
$ git rm READMErm 'README'Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ git statusOn branch masterYour branch is ahead of 'origin/master' by 11 commits. (use "git push" to publish your local commits)Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: README第一:git rm README 文件
第二:查看状态git status
如果现在我只是不想Git管这个文件,因为它也不是很重要,暂时保存在该项目下
语法:git rm --cached 文件
$ ll-rw-r--r-- 1 Administrator 197121 11 六月 7 09:22 Hello-rw-r--r-- 1 Administrator 197121 2600 六月 7 09:34 History.txtdrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 lib/-rw-r--r-- 1 Administrator 197121 1106 六月 6 20:08 LICENSE-rw-r--r-- 1 Administrator 197121 1591 六月 6 20:08 PURE_TODO-rw-r--r-- 1 Administrator 197121 2412 六月 6 20:08 Rakefile-rw-r--r-- 1 Administrator 197121 6792 六月 6 20:08 README.mddrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 test/-rw-r--r-- 1 Administrator 197121 39 六月 6 20:08 VERSION.ymlAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git rm --cached Hellorm 'Hello'Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ ll-rw-r--r-- 1 Administrator 197121 11 六月 7 09:22 Hello-rw-r--r-- 1 Administrator 197121 2600 六月 7 09:34 History.txtdrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 lib/-rw-r--r-- 1 Administrator 197121 1106 六月 6 20:08 LICENSE-rw-r--r-- 1 Administrator 197121 1591 六月 6 20:08 PURE_TODO-rw-r--r-- 1 Administrator 197121 2412 六月 6 20:08 Rakefile-rw-r--r-- 1 Administrator 197121 6792 六月 6 20:08 README.mddrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 test/-rw-r--r-- 1 Administrator 197121 39 六月 6 20:08 VERSION.yml
上面可以看出注意--cached,是不是在那里好像用过,git diff --cached (比较暂存区和上一次提交的差异)用过,你会发现不就是从暂存区移除,并没从磁盘移除
其实删除也是支持glob模式(理解支持正则表达式)
比如像删除~/目录下所有.txt文件
git rm \~/\*.txt 第一反斜杠是转移符 \~ 代表本身~ ,如果你还记得的话 ~/ 表示当前用户的目录 ,第二个反斜杠就是用Git自己匹配方式
$ ll -atotal 75drwxr-xr-x 1 Administrator 197121 0 六月 7 17:06 ./drwxr-xr-x 1 Administrator 197121 0 六月 7 16:55 ../drwxr-xr-x 1 Administrator 197121 0 六月 7 17:11 .git/-rw-r--r-- 1 Administrator 197121 19 六月 7 16:24 .gitignoredrwxr-xr-x 1 Administrator 197121 0 六月 6 21:41 '~'/drwxr-xr-x 1 Administrator 197121 0 六月 7 16:29 aa/-rw-r--r-- 1 Administrator 197121 2467 六月 6 20:08 API.txt-rw-r--r-- 1 Administrator 197121 2964 六月 6 20:08 benchmarks.rb-rw-r--r-- 1 Administrator 197121 973 六月 6 20:08 benchmarks.txtdrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 examples/-rw-r--r-- 1 Administrator 197121 3632 六月 6 20:08 grit.gemspec-rw-r--r-- 1 Administrator 197121 11 六月 7 09:22 Hello-rw-r--r-- 1 Administrator 197121 2600 六月 7 09:34 History.txtdrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 lib/-rw-r--r-- 1 Administrator 197121 1106 六月 6 20:08 LICENSE-rw-r--r-- 1 Administrator 197121 1591 六月 6 20:08 PURE_TODO-rw-r--r-- 1 Administrator 197121 2412 六月 6 20:08 Rakefile-rw-r--r-- 1 Administrator 197121 6792 六月 6 20:08 README.mddrwxr-xr-x 1 Administrator 197121 0 六月 6 20:08 test/-rw-r--r-- 1 Administrator 197121 39 六月 6 20:08 VERSION.ymlAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git rm \~/\*.txtrm '~/新建文本文档 - 副本 (2).txt'rm '~/新建文本文档 - 副本 - 副本.txt'rm '~/新建文本文档 - 副本.txt'rm '~/新建文本文档.txt'
6.移动文件
Git对于重命名文件反应不对,哈哈,但是我知道你要干啥,都是老司机,你懂得
重命名语法:
git mv 原来名字 新的名字
实例走起:觉得Hello有点陋,取个霸气名称,Virus
$ git mv Hello Virusfatal: not under version control, source=Hello, destination=VirusAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git add Hellowarning: LF will be replaced by CRLF in Hello.The file will have its original line endings in your working directory.第一:直接命名出现问题,原因Hello不属于Git管辖,自然不能进行操作 了
第二:将它加入编制
第三:提交修改
$ git mv Hello VirusAdministrator@USER-20170424ZG MINGW64 ~/grit (master)$ git statusOn branch masterYour branch is ahead of 'origin/master' by 12 commits. (use "git push" to publish your local commits)Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: Hello -> Virus
最后一行renamed Hello -> Virus
说好的移动文件呢?怎么是重命名?
$ git mv Virus aa/Administrator@USER-20170424ZG MINGW64 ~/grit (master)$ cd aaAdministrator@USER-20170424ZG MINGW64 ~/grit/aa (master)$ lltotal 2-rw-r--r-- 1 Administrator 197121 12 六月 7 16:29 hello.txt-rw-r--r-- 1 Administrator 197121 11 六月 7 09:22 Virus第一:移动Virus 到 aa/目录下
第二:切换aa目录
第三:查看文件
总结:这里主要理解移除、提交、移动操作,大家可以尝试自己实践一下
- Git---记录每次更新到仓库--下
- 记录每次更新到本地git仓库
- 【Git】记录每次更新到本地仓库
- 记录每次更新到仓库
- 【Git 学习笔记】2.2 - 记录每次更新到仓库
- 【Git 学习笔记】2.2 - 记录每次更新到仓库
- git学习——记录每次更新到仓库
- 2.2 Git 基础 - 记录每次更新到仓库
- 2.2 Git 基础 - 记录每次更新到仓库
- 2.2 Git 基础 - 记录每次更新到仓库
- 2.2 Git 基础 - 记录每次更新到仓库
- 2.2 Git 基础 - 记录每次更新到仓库
- Git基础-记录每次更新到仓库中-上
- GIT 版本控制软件的常用命令记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标和使用方法
- Git更新远程仓库代码到本地
- Git更新远程仓库代码到本地
- Git基础-提交更新到仓库(二)
- git fetch 更新远程仓库到本地
- SQL Server基础之存储过程
- centos7 配置mariadb10 主从数据库
- 工程依赖bouncycastle,Tomcat抛出异常 StackOverflowError
- ECS实例RAM角色实践
- web测试要点
- Git---记录每次更新到仓库--下
- 怎么解决tomcat占用8080端口问题
- int & const t和 int const& t
- 快排
- 通过队列解决Lucene文件并发创建索引
- 阿里云ECS部署Grafana接入zabbix
- pandas使用get_dummyies()进行独热编码
- maven常用命令
- stlink-opencd-gdb调试程序