Git 一般只添加数据
你执行的Git操作,几乎只往Git数据库中添加数据。很难让Git执行任何不可逆操作,或者让它一任何方式清除数据。同别的VCS一样,未提交更更新是有可能丢失或弄乱修改的内容;但是你提交快照到Git中,就难以再丢失数据。
三种状态
Git有三种状态:已提交、已修改和已暂存
已提交
表示数据已安全存到本地数据库中。
已修改
表示修改了文件,但还没有保存到数据库中
已暂存
表示对一个一修改文件的当前版本做了标记,使之包含在下次提交的快照中
三个工作区域
Git仓库
是Git用来保存项目的元数据和对象数据库的地方。这是Git中最重要的部分,从其他计算机克隆仓库时,拷贝的就是这里的数据
工作目录
工作目录是对项目的某个版本独立提取出来的内容。从这些Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改
暂存区域
是一个文件夹,保存了下次提交的文件列表信息,一般在Git仓库目录中。
基本的Git工作流程是这样的:
您修改工作树中的文件。
您可以选择性地暂存您希望成为下一次提交一部分的更改,这些更改只会将这些更改添加到暂存区域。
您执行提交,它将文件保存在暂存区域中,并将该快照永久存储到您的Git目录中。
如果文件的特定版本在Git目录中,则认为它已提交。如果它已被修改并添加到暂存区域,则会暂存。如果它已经签出但是没有上演,那么它会被修改。
安装Git(mac)
brew install git
Git附带了一个名为的工具git config,可让您获取和设置控制Git外观和操作方式的配置变量。这些变量可以存储在三个不同的地方:
/etc/gitconfigfile:包含应用于系统上每个用户及其所有存储库的值。如果将选项传递--system给git config,则会专门从此文件读取和写入。(因为这是系统配置文件,您需要管理员或超级用户权限才能对其进行更改。)
~/.gitconfig或~/.config/git/config文件:用户个人特定的值。您可以通过传递--global选项使Git专门读取和写入此文件,这会影响您在系统上使用的所有存储库。
config在.git/config您当前使用的任何存储库的Git目录(即)中的文件:特定于该单个存储库。您可以强制Git使用该--local选项读取和写入此文件,但这实际上是默认值。(不出所料,您需要位于Git存储库中的某个位置才能使此选项正常工作。)
安装Git时应该做的第一件事是设置用户名和电子邮件地址。这很重要,因为每个Git提交都使用这些信息,并且它会不可避免地融入您开始创建的提交中:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
再次,如果您通过该--global选项,则只需执行一次,因为Git将始终将该信息用于您在该系统上执行的任何操作。如果要使用特定项目的其他名称或电子邮件地址覆盖此项,则可以在该项目中运行不带--global选项的命令。
获取Git仓库
获取Git仓库有两种方法。第一种是在现有目录或目录下导入所有文件到Git中,第二种是从一个服务器克隆到一个现有的Git仓库
从现有目录中初始化仓库
进入该项目目录并输入:
$ git init
这将创建一个名为的新子目录.git,其中包含所有必需的存储库文件 - Git存储库框架。此时,您的项目中没有任何内容被跟踪。
如果要启动版本控制现有文件(而不是空目录),则应该开始跟踪这些文件并执行初始提交。您可以使用一些git add指定要跟踪的文件的命令来完成此操作,然后执行以下操作git commit:
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
我们将在一分钟内了解这些命令的作用。此时,您有一个包含跟踪文件和初始提交的Git存储库。
克隆现有存储库
如果您想获得现有Git存储库的副本 - 例如,您想要贡献的项目 - 您需要的命令是git clone。如果您熟悉其他VCS系统(如Subversion),您会注意到该命令是“克隆”而不是“结帐”。这是一个重要的区别--Git只接收服务器拥有的几乎所有数据的完整副本,而不仅仅是获得一个工作副本。运行时,默认情况下会删除项目历史记录的每个文件的每个版本git clone。事实上,如果您的服务器磁盘损坏,您通常可以使用任何客户端上的几乎任何克隆来将服务器设置回克隆时的状态。
您使用克隆存储库git clone <url>。例如,如果要克隆调用的Git可链接库libgit2,可以这样做:
$ git clone https://github.com/libgit2/libgit2
这将创建一个名为的目录libgit2,初始化其中的.git目录,下拉该存储库的所有数据,并检出最新版本的工作副本。如果你进入libgit2刚刚创建的新目录,你会看到那里的项目文件,准备工作或使用。
如果要将存储库克隆到名称之外的目录中libgit2,可以将新目录名称指定为附加参数:
$ git clone https://github.com/libgit2/libgit2 mylibgit
该命令与前一个命令的作用相同,但调用目标目录mylibgit。
网友评论