目录
Git自学与掉坑实录(一)
· 创建版本库
· 添加提交文件至版本库
Git自学与掉坑实录(二)
· 本地文件的修改与提交
· 多版本之间的切换
· 查看版本历史
· 忽略特殊文件
Git自学与掉坑实录(三)
· 工作区、暂存区、版本库的概念
· 进行到各个阶段管理(添加、删除、恢复、修改)文件的方法
Git自学与掉坑实录(四)
· 远程仓库
· Github的入门说明
· 参与开源项目
Git自学与掉坑实录(五)
· 管理(创建、合并、删除)分支
· 解决冲突
· Fast forward模式与禁用(是否显示合并信息)
· bug分支
· 功能分支
· 多人协作(查看信息、推送远程库、抓取)
Git自学与掉坑实录(六)
· 创建标签
· 删除标签(本地与远程)
Git自学与掉坑实录(七)
· 显示代码颜色
· 忽略文件与强制添加某些忽略文件
· 搭建Git服务器
<br />
今天学习的内容比较简单,没遇到什么坑。所以多写了一些拓展的东西。
</br>
五、文件的增删改查
1.改写wil.txt文件内容为:
"Gold jewelry shining so bright so shine.
Strawberry champagne on ice.
Lucky for you that's what I like that's what I like."
</br>
2.输入命令$(查看仓库状态)git status
3.输入命令$(查看具体修改内容)git diff
</br>
4.输入命令$(添加修改过的文件到仓库)git add wil.txt
</br>
5.输入命令$(查看此时的仓库状态)git status
</br>
6.输入命令$(提交修改过的文件到仓库)
git commit -m "add test"
</br>
7.输入命令$(再次查看此时仓库的状态)
git status
</br></br>
*意外情况
在git status
后出现".DS_Store"系统文件未被添加提交的信息
· DS_Store 是用来存储这个文件夹的显示属性的。总言之是没什么很大作用,还会泄漏本地信息的这么个东西。建议删除。
三种处理方法:
a. 删除Git中的".DS_Store"
进入到对应目录,
· 输入命令$(删除文件)git rm file_path
$
git rm --cached file_path
#用于我们不希望这个文件被版本控制,但本地需要使用的删除;
$git rm file_path
#用于我们不希望这个文件被版本控制,本地也不需要使用的删除。
· 输入命令$git commit -m "delete ds"
· 输入命令$(将当前分支推送到origin主机的对应分支)git push origin
$
git push
#用于命令用于将本地分支的更新,推送到远程主机。
$git push origin
#将当前分支推送到origin主机的对应分支,如果当前分支只有一个追踪分支,那么主机名可以省略。
但据研发小伙伴说,".DS_Store"就算删掉了系统还是自动生成,我们只能选择忽略它……
b. 忽略Git中的".DS_Store"
在对应的Git目录下,创建一个.gitignore文件,然后在该文件里配置上.DS_Store。类似拉黑名单的路子。
· 输入命令$(创建.gitignore)touch .gitignore
;
· 输入命令$(打开.gitignore)open .gitignore
;
· 在打开的文本框内输入".DS_Store",换行再输入"*/.DS_Store",保存;
· 输入命令$(提交.gitignore)git add .gitignore
&git commit -m"ignore"
。
$
git config --list
#查看现有的配置
$
vim .gitignore
或简写vi .gitignore
#vim可以编辑文件
· 按 i 进入编辑模式;
· 编辑结束按"esc键";
· 在底部弹出的输入行,输入":wq";
· 回车保存。
如果你已经commit了".DS_Store",文件已经被纳入了版本管理中,再进行忽略是无效。
必须先输入命令$(删除缓存)git rm -r --cached file_path
另外,在教程里也有一章比较详细地提到《忽略特殊文件》的具体办法。
c. 假装没看见这行代码…从心理上删除……
<br />
六、版本切换
再上传一个新版本:
对wil.txt进行修改;
输入命令$git add
&git commit -m "oh"
。
这样我们一共修改了三个版本(从旧到新):版本1-"test"、版本2-"add test"、版本3-"oh"。接下来我们看这三个版本之间查看切换方法:
1.概念介绍:
首先说一下"commit"的快照概念,这个概念可以辅助理解第一部分的背景介绍。廖雪峰老师把这个概念说明得很清楚,于是下面直接摘抄:
“不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。……Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,<b>这个快照在Git中被称为commit</b>。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。”
</br>
2.查看命令记录:
· 输入命令$(查看版本历史)git log
显示内容包括"commit id"、"作者&邮箱"、"文件说明"、"创建时间"。
· 输入命令$(查看版本历史)git log --pretty=oneline
显示内容包括"commit id"、"文件说明"
前面一大串黄黄的字符就是"commit id",每一个用户的"commit id"都是不一样的。
</br>
3.退回上一个版本:
· 输入命令$(回退到上一个版本)git reset --hard HEAD^
回退到上一个版本成为当前版本。
head
表示当前版本;head^
表示上一个版本;head^^
表示上上一个版本;head~100
表示往上100个版本。
此时,我们输入命令
git log --pretty=oneline
后发现,版本3的记录消失了。
</br>
4.前往未来版本:
· 输入命令$(回到"id"为"ba3245c"的版本)git reset --hard ba3245c
当我们能在窗口内直接找到该版本的"commit id"时,直接输入前几位即可。
当在窗口内找不到版本"commit id"时,
输入命令$(查看该目录所有的命令记录)git reflog
,调出需要的"id"。
<br /><br />
小结
$
git status
#随时查看工作区、版本库的状态。
$git diff
#当工作区状态变化时,可以查看具体修改内容。add之后无法查看。
$git reset --hard HEAD^
#退回上一个版本。
$git reset --hard commit_id
#可以前往id所代表版本。
$git log
#用于回到以前的版本。以当前版本为终点,查看提交历史命令。
$git reflog
#多用于重返未来。查看所有操作过的命令记录。
$vim .gitignore
或简写vi .gitignore
#用于打开文档;"i"进入编辑状态,"esc键"退出编辑状态,输入":wq"保存并退出。
· "commit"相当于一个Git的快照。
· 《忽略特殊文件》的办法
<br /><br /><br /><br /><br /><br /><br />
主要参考:
其他文章与资料:
· git push
· git rm与git rm --cached
· 如何删除github上的文件
· Git 忽略一些文件不加入版本控制
· Git中全局忽略.DS_Store文件