Git学习笔记(一)
闲言碎语
Git是什么
一个版本控制系统(VCS,Version Control System)
Git与其他的VCS的区别
快照,而不是差异
Git的三个状态
学习笔记
准备工作
根据《Pro Git》所说,在你安装Git后首先应该设置用户名与邮箱
$git config --global user.name "John Doe"
$git config --global user.email johndoe@example.com
句首的$为提示符(Prompt),不是自己键入的
然后是设置文本编辑器
$git config --global core.edit vim
教程里是Emacs~
其实我都不太会用~
之后可以用
$git config --list
查看设置,用
$git config -e
使用文本编辑器修改设置
添加文件
为了开始用Git记录(Track)一个已存在的项目,首先需要进入到项目所在的文件夹,然后输入
$git init
进行初始化
这个操作会在目录下创建一个名为.git的子文件夹,里面包含了所有必要的仓库文件,也就是一个Git仓库的骨架
接下来使用
$git add <FILE>
如
$git add *
$git add *.c
$git add README
添加文件,后面可以用通配符*,但不支持正则表达式
同时,也可以用
$git clone [url]
获得一份别人仓库的拷贝
更改文件
给出《Pro Git》中对于文件状态的叙述:
添加/更改文件后,可以用
$git status
查看各文件处于什么状态
如果在之后打上-s,则可以看到各文件状态的一个简短描述,比如下面就是一种
$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
未被记录的文件有个??标记,加入到暂存区域(Staging Area)的新文件有一个A,修改过的文件有一个M。有两列标记,左列的标记指示暂存后的文件,右边的标记指示的是修改后的文件。以上面这个胃里,README在工作目录里更改过但是还没有暂存,lib/simplegit.rb更改并暂存了,Rakefile更改后暂存了,但是在暂存后又更改过,所以这个文件的改变在暂存/非暂存中都发生了。
同时可以通过更改.gitignore文件来声明一些不同步的文件,如下例中的.gitignore文件
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the root TODO file, not subdir/TODO
/TODO # ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt
除了status之外,还可以使用
$git diff
查看暂存与未暂存的更改。
如果想要查看下次提交(commit)会改变的文件(即暂存的文件),使用命令
$git diff --staged
提交更改
输入
$git commit
即可完成对staged file的提交,这次的修改也就完成,与此同时,也常用
$git commit -m "Comit Message"
附加上此次提交的信息
commit还有更多、更丰富的选项可选,具体的就看文档吧