廖神写的git学习资料网站:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256916071d599b3aed534aaab22a0db6c4e07fd0000
说明:该网站上的教程都是针对命令行操作的,这可能跟我们平时把项目托管到github上,然后clone下来进行更改再提交的操作有差异。
这节课内容:
1.创建自己的repository
最好自己新建一个目录,然后在这个目录下创建自己的仓库,添加自己的代码。(注意:git只能管理,追踪文本形式的代码文件,推荐不要用windows自带的记事本编写代码,因为windows记事本的开发者在每个文件开头添加了0xefbbbf(十六进制)的字符,以后可能会遇到奇怪的Bug,推荐使用Notepad++或则sublime text编辑文本文件)**此外,文本文件的编码统一设置为utf-8。**
命令如下:
1. mkdir your_repository_path
2. git init # 当前目录下会出现.git目录,用来跟踪管理版本库的,不要去修改
2 . 把文件添加到版本库
git只能追踪文本文件的改动,比如说txt文件,网页,程序代码等,git可以记录代码每次的改动,哪些行是新增的,哪些行是删除的等等,可以在github上以网页的形式查看,很方便
假如我在本地写了一个文档,为readme.txt,内容如下:
TangShengqin is a cool boy!
当然,这个文档放在之前创建的目录下,比如说learngit,因为在这个目录下才有.git。把文件放到git仓库需要以下步骤:
第一步,用git add命令告诉git,把文件添加到仓库。
git add readme.txt
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。对某个文件使用了git add命令之后,这个文件就可以被git追踪和管理了。
此外,可以多次使用命令git add file命令,添加多个文件。
第二步,用命令git commit告诉Git,把文件提交到仓库:
git commit -m "wrote a readme file"
使用git add,只是把文件添加到了暂存区,关于为什么要先add,再commit,可以参考知乎链接
到这里,你所做的修改已经commit到本地仓库了。如果,你想把本地的仓库托管在github上,那么你还需执行以下的命令:
git push
git push 的功能就是:将本地仓库修改推送到服务器上的仓库中。
扩展命令:
git add -A # 提交所有变化(包括新增,删除,修改)
git commit -a # git commit -a 相当于运行 git add 把所有当前目录下的文件加入暂存区域再运行git commit.
查看哪些文件被git所管理控制:
git ls-files
使用 git add 将文件添加到缓冲区(staging area)了,现在想反过来查看缓冲区内有哪些文件,如果是这样的话,使用 git status 可能无法达到你的目的,官方文档如下:
The git status command can be used to obtain a summary of which files have changes that are staged for the next commit.
意思是:git status 只能查看缓冲区内哪些文件发生了变化,若其中没有文件发生变化,就无法查看缓冲区内有哪些文件(哪些文件曾被 add 过)。
假如你在本地有个文档,还未完善或则是只想自己看,不想提交到仓库中被Git所管理,那么可以编辑.gitignore,将文件名添加到.gitignore中:
.gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得。
下面是一些.gitignore的编写规则:
1、配置语法:
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
2、示例:
(1)规则:fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
(2)规则:/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;
(3)规则:
/*
!.gitignore
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;
根目录应该指的是仓库目录,也就是.git所处的那层目录
!感叹号表示不忽略匹配到的文件或目录,后面的目录和文件会被git管理
关于.gitignore的编写和操作还有待确认!