首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Git 改变了分布式 Web 开发规则 -2

Git 改变了分布式 Web 开发规则 -2

通用 Git 命令Git 就是我们常说的命令套件 平台,这意味着您使用的主命令是 git,命令行的第一个参数表示您想运行的特定 Git 命令。               
Git 模拟更早版本的 Git 还为许多 Git 命令安装模拟,形式为 git-command,其中 command 表示特定的 Git 命令。这使您能以 git push 或 git-push 的形式执行 Git 命令。该功能在早期的 Git 中非常有用(当时许多辅助 Git 命令都在开发之中),因为它为主 Git 二进制文件中提供的 Git 命令以及外部命令提供了命令语法,如今 Git 变得更加成熟,已经不再需要它了。               

任何时候,只要运行不带任何参数的 git 就可以看到通用 Git 命令清单。以下列出部分该清单:               
  • add。向 Git 索引添加一个新文件。您必须提交该文件,以向 Git 存储库添加其内容。
  • branch。使您能列出签出(check out)的分支,确定当前处理的分支,创建新分支,销毁已经创建或签出的本地分支副本。该命令不能切换到其他分支:使用 Git 的 checkout 命令实现。
  • checkout。签出指定的分支或文件/目录。如果签出一个分支,则该分支将成为工作分支。如果指定一个特定文件或目录,则该文件或目录将更新以匹配当前签入工作分支目录的版本。您还可以使用该命令基于指定现有分支的可选跟踪更改新建一个分支。
  • commit。记录 Git 索引中的文件和目录更改。指定想提交更改的文件和目录时,您可以使用 -a 选项将所有挂起更改添加到 Git 跟踪的文件,也可以使用 --interactive 选项选择希望一起提交的文件和目录更改。(如果处理的是几个涉及大量文件的不同任务,但又想一起提交某些更改,那么后者将非常有用。提交是对本地存储库执行的操作;如果使用远程中央存储库,那么必须使用 Git 的 push 命令将本地更改传输到远程存储库。)
  • diff。显示本地文件与其他提交之间,或者两次不同提交的文件之间的不同之处。使用该命令时常常指定文件名,显示指定文件与提交到当前分支存储库的文件版本之间的不同之处。
  • fetch。从另一个存储检索索引更新,指出已经创建的新标记,并提供有关已经提交到该存储库但尚未在本地显示的文件或目录更改的信息。然后,可以使用 git log 命令检测可用更改。要在 fetch 之后实际检索相关文件更改,您可以使用 git pull 或 git rebase 命令。
  • grep。查询或显示当前分支中文件模式的匹配。该命令支持大部分您所喜爱的 GNU grep 选项。
  • log。展示当前分支或当前分支中指定文件的提交日志信息。
  • merge。将一个分支的更改合并到另一个。该命令提供一些选项,用于确定是否自动提交合并的更改,这使您能在实际接受这些更改之前了解合并的影响。
  • mv。重命名 Git 当前跟踪的文件、目录或符号链接。
  • pull。从另一个存储库检索索引更新,并将其合并到当前分支的文件或目录。
  • push。使用本地索引和对象更改信息更新远程存储库。
  • rebase。更新当前分支以匹配远程分支,修改尚未传输到远程分支的本地提交,使其适用于远程分支的当前状态。这是一个强大而危险的命令,因为它会根据需要重写命令以便合并。如果对远程存储库的更改频率和范围不大,可以使用 git pull 命令替代。
  • rm。移除 Git 当前跟踪的文件、目录或符号链接。
  • stash。临时将当前更改推入堆栈,并将当前签出返回到原始状态。git stash save 在本地堆栈中保存当前更改,git stash apply 检索并重新应用它们。如果您想 fetch 远程更改或者要在不永久提交进行中的更改的情况下执行 rebase,那么这将非常有用。
  • status。展示当前分支的状态,指出尚未提交的更改、不会跟踪的文件等等。
所有 Git 命令都接受 --help 选项,这是一个常用的选项,可以获取任何命令的详细信息,查看每个命令接受的命令行选项清单等等。您还可以执行命令 git help command 获取有关任何 Git 命令的帮助。               
有关 Git 命令的完整清单,请执行 man git 命令查看 Git 的在线参考信息。               
设置一个新的 Git 项目要对不受任何修订控件控制的现有项目使用 Git,请执行以下步骤:               
  • 更改为包含项目源代码的目录:
    1
    2
    3
    $ cd www.move2linux.com
    $ ls
    greenbar_wide.gif  images  index.html  legacy.html  services.html




  • 使用 git init 命令在当前目录中创建一个空的存储库:
    1
    2
    $ git init
    Initialized empty Git repository in .git/




  • 还可以选择使用 git status 命令查看新项目的状态。                                        该命令列出当前目录中未跟踪的所有文件和目录,表示 Git 了解它们的存在但是没有指示跟踪该文件:                                       
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ git status
    # On branch master
    #
    # Initial commit
    #
    # Untracked files:
    #   (use "git add <file>..." to include in what will be committed)
    #
    #       greenbar_wide.gif
    #       images/
    #       index.html
    #       legacy.html
    #       services.html
    nothing added to commit but untracked files present...




  • 将项目中的文件和目录添加到新的 Git 存储库。                                        您可以明确列出它们或者使用句点(.)作为 “当前目录内容” 的传统快捷方式:                                       
    1
    $ git add .




  • 再次执行 git status 命令验证当前目录及其子目录中所有文件都已经添加到新项目中:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $ git status
    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    #   (use "git rm --cached <file>..." to unstage)
    #
    #       new file: greenbar_wide.gif
    #       new file: images/digits/b/0.gif
    #       new file: images/digits/b/1.gif
    #       new file: images/digits/b/4.gif
    #       new file: images/digits/b/5.gif
    #       new file: images/digits/b/6.gif
    #       new file: images/digits/b/7.gif
    #       new file: images/digits/b/8.gif
    #       new file: images/digits/b/9.gif
    #       new file: index.html
    #       new file: legacy.html
    #       new file: services.html
    #




  • 执行 git commit 命令签入初始文件。                                        除非使用 -m "commit message" 选项在命令行上指定提交消息,否则该命令将启动默认编辑器,您必须在其中输入一个与提交关联的注释。保存命令和现有编辑器之后,Git 将签入与更改关联的文件,并显示有关提交和关联文件的信息。                                       
    1
    2
    3
    4
    $ git commit
    Created initial commit dfbd6cc: Initial checkin
    12 files changed, 285 insertions(+), 0 deletions(-)
    ...




现在,您可以使用上述命令在 Git 中处理项目文件了。               
建立中央存储库根据本节内容创建存储库要求您接收处理该存储库的其他用户做出的更改,或者要求您在其他用户将更改传输到您的分支时立即签出分支。有关建立不保存所有文件工作副本(因而不存在该问题)的中央存储库的信息,请参见  一节。               

更改现有 Git 项目如果可以更改其他人已经创建的 Git 项目,事情会变得更加简单。您可以使用 git clone 命令创建自己的 Git 项目工作副本:                       
1
$ git clone /home/jake/src/maps




该示例在当前工作目录中创建一个 Git 地图项目副本。您可以将目录更改为地图项目副本,并使用之前讨论的命令在 Git 中开始处理该项目中的文件。                       
复制 Git 项目复制位于另一个机器上的 Git 项目非常简单。Git 默认支持 Secure shell (SSH) 和 HTTP 协议,如果远程系统上运行着 Git daemon,还可以使用特别有效的 git 协议导出感兴趣的项目。Git 默认使用 SSH,因此用于通过 SSH 复制目录的语法与您的预期完全一致:                       
1
2
$ git clone remote-machine:/home/jake/src/maps
$ git clone ssh://remote-machine/home/jake/src/maps




注意:通过 SSH 复制 Git 项目要求您授权对远程系统的访问,这是最好使用 git 协议的又一原因,尽管它要求您运行 Git daemon。
返回列表