GIT基础

来源:互联网 发布:网络十大禁书百度云 编辑:程序博客网 时间:2024/05/16 09:13

建立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.txtdoc/*.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

0 0