Git参考

来源:互联网 发布:笔趣阁软件哪里下载 编辑:程序博客网 时间:2024/05/22 11:59

 Git参考简介

本站是Git帮助网站。主要提供最重要,最常用的Git命令,便于学习记忆。命令按照操作类型分类,你可能会尝试做,将目前常用的选项和需要完成这些常见任务的命令。

每一节都有下一节的连接,可以看作一个完整教程。每一页有深入链接,比如官方手册页,以及Pro Git book一书的有关章节,这样你就可以从少数的关键命令深入到其他所有命令。首先,让我们开始像Git一样思考源代码管理。
 

像Git一样思考

一件重要的,是要明白,Git的版本控制,不同于之前用的Subversion,Perforce,或其他SCM如果你能忘掉自己对版本控制的臆想猜测,并Git方式思考Git,学起来应该更容易。

让我们从头开始假定你在设计新的源代码管理系统。如果没有版本控制工具如何控制版本只用复制项目文件夹,保存,像这样:

$ cp -R project project.bak
这样,一旦代码搞砸,就可以轻松地恢复文件,还是看你有什么项目看起来比较像现在看上去是什么样子,当您复制的改变。

如果你真的很偏执,可以在backup前加上日期:
$ cp -R project project.2010-06-01.bak 

这样一来就会有一堆项目副本,用来检查对比你甚至可以使用这种模式相当有效地与他人共享更改如果你把项目打包成zip在自己的网站其他开发人员就很容易下载,修改,并发回给你补丁
 $ wget http://sample.com/project.2010-06-01.zip $ unzip project.2010-06-01.zip $ cp -R project.2010-06-01 project-my-copy $ cd project-my-copy $ (change something) $ diff project-my-copy project.2010-06-01 > change.patch $ (email change.patch)

现在,原始开发者可以把修改应用到项目副本很多开源项目已经合作了好几年

实际运行起来相当不错,我们写个工具,使操作更简单快捷和Subversion每个版本都要复制所有文件不同,我们觉得备份不用复制整个目录

这就是Git的核心通过git commit命令告诉Git,要保存项目快照记录了项目清单所有文件大部分命令这些舱单看到它们之间的区别或拉的内容,其中等等。
 
如果你认为有关的Git存储比较和合并您的项目快照工具可能会更容易明白是怎么回事以及如何正确做事情
 

获取并创建项目

http://gitref.org/creating/
要想使用Git首先得有Git仓库,用来存储备份数据
有两种方式获得Git仓库一是从现有目录初始化新项目源代码控制二是从公共Git仓库克隆如果你想和他人做同一项目的话下面分别介绍
 
 
现有目录创建仓库,只用在该目录运行git init例如,假定目录有这几个文件
$ cd konichiwa$ lsREADME   hello.rb

项目用各种语言Hello World”。当前有Ruby,但是开始要启动版本控制,运行git init.
$ git initInitialized empty Git repository in /opt/konichiwa/.git/

现在可以看到个.git子目录在项目就是Git仓库,以后项目备份所有数据都放到这
$ ls -a.        ..       .git     README   hello.rb
恭喜你,现在Git仓库的骨架可以开始项目备份了
简而言之,用git  init,使之成为一个新的Git仓库现有目录内容你可以在任何时候任何目录完全在本地 

 git clone复制一个Git仓库,再添加新文件

如果多人合作一项目或者,要获得项目副本查看和使用代码,你会克隆它。只用运行git clone[URL]要复制项目URL命令
$ git clone git://github.com/schacon/simplegit.gitInitialized empty Git repository in /private/tmp/simplegit/.git/remote: Counting objects: 100, done.remote: Compressing objects: 100% (86/86), done.remote: Total 100 (delta 35), reused 0 (delta 0)Receiving objects: 100% (100/100), 9.51 KiB, done.Resolving deltas: 100% (35/35), done.$ cd simplegit/$ lsREADME   Rakefile lib
这将复制该项目的整个历史所以你必须在本地,它将给你一个该项目的主要分支工作目录所以你可以看看代码开始编辑如果更改到新的目录可以看到git的子目录 - 这是所有项目的数据
$ ls -a.        ..       .git     README   Rakefile lib$ cd .git$ lsHEAD        description info        packed-refsbranches    hooks       logs        refsconfig      index       objects
默认情况下,Git会创建一个目录,那是因为你给它网址项目名称相同 - 基本上无论最后的斜线的URL如果你想要不同的东西,你可以只是把命令的末尾在URL后

基础备份

Git是压缩和保存项目备份,然后比较这些备份。本节讲压缩和提交项目的快照所需的命令。

一个重要的概念是,Git有“索引”,作为备份的临时区域排序。让你建立工作目录下一系列修改过的文件,而不是一次提交所有文件的变化备份。

简言之,先用 git add 启动跟踪。接着用 git state 和git diff 看修改了哪些东西,最后用 git commit 记录历史。这就是基本工作流程。

git add 把文件放到暂存区

Git中,必须先把文件放到暂存区,然后才能提交。如果文件是新的,运行git add 把文件放到暂存区,如果文件已经“跟踪”——就是说,你最近已经提交了这个文件 - 还是要调用git add,把修改放到暂存区。让我们来看看这几个例子。

让我们回到Hello World的例子,一旦启动项目,现在用 git add 添加文件。用 git status 看看项目状态。

$ git status -s?? README?? hello.rb

所以 git add 现在我们有两个未跟踪文件现在,我们可以添加它们。
这也是常见的递归添加一个新的项目所有文件像这样通过指定当前的工作目录git的添加..由于Git会递归添加你给它一个目录的所有文件如果你给它的当前工作目录它会简单地开始追踪一个文件在这种情况下添加一个git会做同样的事情作为一个git添加自述hello.rb为此事GIT添加*但这只是因为我们没有*不会递归子目录

好了,现在如果编辑这些文件再次运行git status会看到一些奇怪的东西

 

$ vim README$ git status -sAM READMEA  hello.rb

'AM'状态是指上次添加后文件已被修改如果现在就提交快照记录上git add 时的文件版本不是我们磁盘版本Git不会磁盘上文件当成你想要的快照 -你要告诉 git add 命令

简而言之,在文件上运行git add 当你想包括任何变化下次提交快照将不包括任何改变不添加 - 这意味着你可以多一点大多数其他SCM系统精度工艺快照
如果你感兴趣,想保持灵活,一次只保存部分修改的文件参见《ProGit book》一书的GIT add 的- P选项

git statue查看您的文件状态工作目录临时区域

正如看到git add才能看到什么暂存区域地位相比,您的工作目录代码你可以运行gitstatus命令我演示了使用- s选项,它给你输出没有标志的gitstatus命令会给你更多背景和提示这里- S与不相同状态输出简短的输出看起来像这样。
 

git diff显示哪些保存了,哪些修改了,但没有保存

git diff 命令有两个主要用途,一个这里讲,另一个在“检验和比较”一节讲。这里用它的方式来描述保存的变化,上演或磁盘上的修改,但没有保存。

git diff 显示没有保存的不同

$ vim hello.rb$ git status -s M hello.rb$ git diffdiff --git a/hello.rb b/hello.rbindex d62ac43..8d15d50 100644--- a/hello.rb+++ b/hello.rb@@ -1,7 +1,7 @@ class HelloWorld      def self.hello-    puts "hello world"+    puts "hola mundo"   end  end

git diff 显示没有保存的不同

因此,git diff --cached  命令告诉你哪些文件已经保存,上演自您上次提交,所以,如果你已经保存了hello.rb的修改。git diff 会显示实际上还没有保存的修改。它通常是一个良好的后续命令git的状态。

$ git status -s M hello.rb$ git add hello.rb $ git status -sM  hello.rb$ git diff$ 


 

如果你想看到保存修改了哪些部分,运行git diff -- cached。



原创粉丝点击