前言:
我的学习资料主要是廖雪峰的git教程和git官方documentation,廖雪峰的教程能够帮助我快速建立起“what is git"这个概念,但是对很多基本操作讲得不够细致深入。于是我开始广泛搜索他人的博客,发现很多人的博客中git的学习内容都是来自官方的documentation, 于是我决定自己读一读官方资料。
官方文档地址:git documentation
下面就是我学习过程中的一些总结,我写这篇文章的主要目的也是帮助自己记忆新知识点。
1. 新建一个git repository(仓库)
方法1:
如果我想要用git track我的一些本地文件,比如说,/User/meteornight/cpp_project/, 我想要track cpp_project这一文件夹中的代码文件.c
cd /User/meteornight/cpp_project
git init
add \*.c
add README.md
add .gitignore
git commit -m "initial commit"
方法2:
git clone url
e.g.
git clone https://github.com/meteornnnight/learning-area.git
这样,我就可以克隆他人在github上的repository了。
2. 用git记录文件改动,涉及到的git基本操作
git文件状态的循环周期(The lifecircle of the status of your files)git add README.md
git commit -m "message"
git add和git commit非常简单,git add即把modified file加入到staged area(暂存区),git commit即提交暂存区中的修改(changes)。
tip: 纯git commit指令,没有-m的时候,git会打开默认编辑器中的commit template,在编辑器中输入commit message,可以看出commit message不可忽略,十分重要。
3. 关于git diff命令的细节:
3.1 git diff只会显示unstaged changes
如果我修改了working directory中的某个文件,这个文件被modified, 但是我没有git add这个文件,所以these changes are modified but not staged,git diff就会比较现在这个被modified的文件与暂存区中的文件,如果暂存区中没有这个文件,git就会与最新版本的文件进行比较。
3.2 git diff不能显示staged changes
在上述1这种情况的基础上,我把这些modified changes提交到staged area了,也就是说我添加了git add命令,那么git diff命令不会出现任何output。
3.3 git diff --cached/staged filename可以显示staged changes
git diff --cached/staged filename比较暂存区和最后一次commit之间的changes.
4. 删除文件
情景1: 我想在硬盘中删除文件
rm exampleFile
git rm exampleFile
git commit -m "delete exampleFile"
情景2: 我想在硬盘中保留文件,但是不再用git track这个文件。
git rm --cached exampleFile
网友评论