您的位置:首页 > 其它

GIT基础

2016-01-18 14:57 141 查看

建立git仓库

在现有的目录下创建

使用cd命令进入现有项目的目录

git init




git的仓库最好添加上LICENSE以及readme文件

git add LICENSE


克隆现有的仓库

顾名思义,就是拷贝的意思,我们可以从网络上拷贝别人的仓库文件到本地,使用clone 命令即可

$ git clone https://github.com/libgit2/libgit2 mylibgit


其中的网站地址是repository的地址,如果命令中没有”mylibgit”,拷贝的文件名为Libgit2,否则就为mylibgit。这句命令在拷贝repository的同时为本地的repository更改了名字。

Git 支持多种数据传输协议。 上面的例子使用的是 https:// 协议,不过你也可以使用 git:// 协议或者使用 SSH 传输协议,比如 user@server:path/to/repo.git 。 在服务器上搭建 Git将会介绍所有这些协议在服务器端如何配置使用,以及各种方式之间的利弊。

检查repository中的文件状态

repository下的文件只可能有两种状态:已跟踪,未跟踪。使用

$ git status


命令可以查看repository下面的文件状态,如下图所示,如果有没有被跟踪文件,就会提示”untracked files”,没有被跟踪的文件需要使用add添加到repository,才能实现跟踪,如图所示



再调用一次 “git status”,会发现文件的状态被改变了,变成了

changes to commited:


说明文件已经被跟踪,处于暂存状态。add命令的功能是把文件添加到下一次提交,如果在修改文件之后,不使用add命令,那么该文件的当前版本就会在未跟踪区,修改前的版本在跟踪区。因此文件与add的关系如下:

修改后的文件(或者新建的文件)在未跟踪区->git add filename ->添加到跟踪区

忽略系统自动生成的文件

在使用不同的编译器的时候,有许多系统自动生成的工程文件,如果不想git总是提示未跟踪这些文件,可以使用 cat .gitignore命令

$ cat .gitignore
*.[oa]
*~


这段代码告诉git忽略编译器生成的.o和.a文件,也忽略以波浪线’~’结尾的文件,下面是一些正则表达式,忽略不同的文件

# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, 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 .pdf files in the doc/ directory


上面表达式中的#是注释

查看暂存区与工作区的区别

可以使用

git diff


这句命令只能查看上一次add之后暂存区与工作区文件的区别,而不是上一次commit之后暂存区与工作区文件的区别,如果在diff之前add了所有的文件,执行diff以后将看不到任何变化

如果要查看已经提交和暂存区的区别,即下次要commit的内容,可以使用

git diff -staged


提交文件

通常情况下,提交文件有两个步骤,一个是add, 一个是commit,其中add将工作区的文件暂存到暂存区,commit将暂存区的文件提交到repository,但是这样国语繁琐,可以一步到位,使用

$ git commit -a -m "commit in one step"


其中-a参数是跳过add指令,可以将已经跟踪的文件全部提交

删除文件和移动文件

手动删除的文件,在使用git status时会提示,被删除的文件,可以使用

$ git rm filename
$ git mv file_from file_to


第一条命令彻底删除一个文件。finename也可以使用shell的正则表达式方式,删除特定的文件;第二条命令,将file_from移动到file_to
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git