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仓库。一是从现有目录初始化新项目或新源代码控制。二是从公共Git仓库克隆,如果你想和他人做同一项目的话。下面分别介绍。
$ cd konichiwa$ lsREADME hello.rb
$ 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 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有“索引”,作为备份的临时区域排序。让你建立工作目录下一系列修改过的文件,而不是一次提交所有文件的变化备份。
简言之,先用 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。
- Git参考
- git 参考
- git参考
- Git 快速参考
- Git命令快速参考
- Git命令快速参考
- Git命令快速参考
- git命令快速参考
- git命令快速参考
- git命令快速参考
- Git命令快速参考
- git命令快速参考
- Git 快速参考
- git新手入门参考文章
- git参考文档
- Git教程参考
- Git 应用参考
- Git使用参考
- SQL SERVER2005及其以上版本树形结构实现
- 关于技术(二)
- Linux 内存管理
- FreeBSD常用命令
- 最近面试的重点
- Git参考
- Jmail c#发送邮件完全解决方案
- 木牛流马PLC 硬件资源
- AppWidget
- sysctl.conf优化方案
- C#中如何使用Jmail库
- EL表达式 (详解)
- Linux ACL 体验
- 非常有用的实用程序