初学者Git:明确的实践指南

好的,在PJ Hyett看到这篇文章后,我决定跳到最后,然后和Git一起去。

所以我需要的是一个初学者对Git的实用指南。 “初学者”被定义为知道如何处理他们的编译器的人,在某种程度上理解Makefile是什么,并且已经触及源代码控制而不能很好地理解它。

“实用”被定义为这个人不想详细了解Git在后台做什么,甚至不关心(或知道)它是否分发。 你的答案可能会暗示可能性,但是试图针对那些希望将“主”存储库保存在一个备份和安全的“服务器”上的初学者,并将其本地存储库视为“客户”资源。

所以:

安装/设置

  • 如何安装Git
  • 你如何设置Git? 尝试涵盖Linux,Windows,Mac,认为'客户/服务器'的思维模式。
  • 在Windows上使用Msysgit安装GIT服务器
  • 你如何创建一个新的项目/存储库?
  • 你如何配置它忽略不属于代码库的文件(.obj,.user等)?
  • 使用代码

  • 你如何得到最新的代码?
  • 你如何查看代码?
  • 你如何提交更改?
  • 您如何看待未提交的内容或当前代码库的状态?
  • 你如何销毁不需要的提交?
  • 如何比较文件的两个修订版本,或者您当前的文件和以前的修订版本?
  • 你如何看待修改文件的历史?
  • 你如何处理二进制文件(例如visio文档或编译器环境)?
  • 如何合并在“同一时间”更改的文件?
  • 你如何撤消(恢复或重置)提交?
  • 标记,分支,发布,基线

  • 如何为特定文件集“标记”“标记”或“释放”特定修订集,以便以后随时可以拉取该修订版?
  • 你如何拉一个特定的'释放'?
  • 你如何分支?
  • 你如何合并分支机构?
  • 你如何解决冲突并完成合并?
  • 你如何将一个分支的部分合并到另一个分支?
  • 什么是rebasing?
  • 我如何跟踪远程分支机构?
  • 我如何在远程存储库上创建分支?
  • 如何删除远程存储库上的分支?
  • Git工作流程示例
  • 其他

  • 描述并链接到一个良好的GUI,IDE插件等,它使Git成为非命令行资源,但请列出它的局限性和优点。
  • msysgit - 包含在Git中的跨平台
  • gitk - 跨平台历史查看器,包含在Git中
  • gitnub - Mac OS X
  • gitx - Mac OS X历史记录查看器
  • smartgit - 跨平台,商业,测试版
  • tig - 用于Linux的控制台GUI
  • qgit - 用于Windows,Linux的GUI
  • Git扩展包 - Windows版包含友好的GUI
  • 初学者应该知道的任何其他常见任务?
  • Git状态告诉你你刚刚做了什么,你拥有哪个分支以及其他有用的信息
  • 我如何有效地将Subversion版本库作为我的源代码控制源进行工作?
  • 其他Git初学者的参考

  • Git指南
  • Git书
  • Git魔法
  • gitcasts
  • GitHub指南
  • Git教程
  • Progit - Scott Chacon的书
  • Git - SVN崩溃课程
  • Git从下往上
  • Git准备好了
  • gitref.org
  • Git visual cheatsheet
  • 深入Git

  • 从概念上理解Git
  • Git为计算机科学家(和另一个版本)
  • 我会不时地浏览这些条目并“整理”它们,以便它们具有一致的外观/感觉,并且很容易扫描列表 - 随意遵循简单的“标题 - 简要解释 - 指令列表 - 陷阱和额外信息“模板。 我还会链接到上面的项目符号列表中的条目,以便以后很容易找到它们。


    你如何创建一个新的项目/存储库?

    一个git仓库只是一个包含特殊的.git目录的目录。

    这与“集中式”版本控制系统(如subversion)不同,远程服务器上托管着一个“存储库”,您将其checkout入“工作副本”目录。 使用git,您的工作副本就是存储库。

    只需在包含您想要跟踪的文件的目录中运行git init即可。

    例如,

    cd ~/code/project001/
    git init
    

    这会在当前目录中创建一个.git (隐藏)文件夹。

    要创建一个新项目,使用附加参数(要创建的目录的名称)运行git init

    git init project002
    
    (This is equivalent to: mkdir project002 && cd project002 && git init)
    

    要检查当前的当前路径是否在git仓库中,只需运行git status - 如果它不是仓库,它会报告“致命的:不是git仓库”

    您还可以列出.git目录,并检查它是否包含与以下内容类似的文件/目录:

    $ ls .git
    HEAD         config       hooks/       objects/
    branches/    description  info/        refs/
    

    如果出于某种原因你希望“删除”一个存储库(你希望停止使用git来跟踪该项目)。 只需删除存储库基本级别的.git目录即可。

    cd ~/code/project001/
    rm -rf .git/
    

    警告:这将破坏所有修订历史,所有标签,git所做的一切。 它不会触及“当前”文件(您当前可以看到的文件),但以前的更改,删除的文件等将无法恢复!


    git的图形用户界面


    Git GUI

    附带git - 从命令行运行git gui ,Windows msysgit安装程序将其添加到“开始”菜单。

    Git GUI可以完成你需要用git做的大部分工作。 包括阶段更改,配置git和存储库,推送更改,创建/检出/删除分支,合并和许多其他事情。

    我最喜欢的功能之一是右键单击菜单中的“舞台线”和“舞台大块”快捷方式,它允许您提交文件的特定部分。 你可以通过git add -i来实现,但是我觉得它更易于使用。

    它不是最漂亮的应用程序,但它几乎适用于所有平台(基于Tcl / Tk)

    截图| 一个截屏


    GitK

    也包含在git中。 它是一个git历史记录查看器,可让您可视化存储库的历史记录(包括分支,创建时间和合并时间)。 您可以查看和搜索提交。

    与git-gui很好地结合在一起。


    Gitnub

    Mac OS X应用程序。 主要是相当于git log ,但与github有一些整合(如“网络视图”)。

    看起来很漂亮,适合Mac OS X.您可以搜索存储库。 对Gitnub最大的批评是它以线性方式显示历史(一次只有一个分支) - 它没有形象化分支和合并,这对于git来说很重要,虽然这是一个有计划的改进。

    下载链接,更改日志和截图| git存储库


    GitX

    打算成为“OS X的git克隆”。

    它可以可视化非线性分支历史记录,执行提交,查看和搜索提交,还有其他一些很好的功能,例如能够“快速查看”任何修订版本中的任何文件(按下文件列表视图中的空间),导出任何文件(通过拖放)。

    它比git-gui / gitk更好地集成到OS X中,并且即使对于特大的存储库也是快速和稳定的。

    最初的git存储库pieter最近没有更新(写作时间超过一年)。 在brotherbard / gitx上提供了一个更加主动的维护分支 - 它增加了“侧边栏,抓取,拉取,推送,添加远程,合并,樱桃挑选,重定位,克隆,克隆”

    下载| 截图| git repository | 兄弟叉| 洛朗叉


    SmartGit

    来自主页:

    SmartGit是分布式版本控制系统Git的前端,可在Windows,Mac OS X和Linux上运行。 SmartGit适用于那些喜欢通过命令行客户端进行图形用户界面的开发人员,使用Git(当今最强大的DVCS)更加高效。

    你可以从他们的网站下载它。

    下载


    TortoiseGit

    适用于Windows用户的TortoiseSVN Git版本。

    它将TortoiseSVN移植到TortoiseGit最新版本1.2.1.0该版本可以完成常规任务,例如commit,show log,diff two版本,创建分支和标记,创建修补程序等。 有关详细信息,请参阅ReleaseNotes。 欢迎来贡献这个项目。

    下载


    QGit

    QGit是一个基于Qt / C ++构建的git GUI查看器。

    使用qgit,您将能够浏览修订历史记录,查看修补程序内容和更改的文件,以图形方式跟随不同的开发分支。

    下载


    gitg

    gitg是一款针对gtk + / GNOME的git存储库查看器。 其主要目标之一是为跨多个桌面的git前端提供更统一的用户体验。 它不是在编写跨平台应用程序,而是通过与其他操作系统的类似客户端(如GitX for OS X)的密切协作。

    特征

  • 浏览修订历史。
  • 处理大型版本库(加载linux版本库,17000+版本,1秒以内)。
  • 提交更改。
  • 阶段/不定期的个人大片。
  • 恢复更改。
  • 显示修订版本变化的彩色差异。
  • 为给定的修订浏览树。
  • 导出给定修订的树的部分。
  • 提供任何类似'git log'的命令可以理解的构建历史的refspec。
  • 在历史视图中显示并在分支之间切换。
  • 下载:发布或来源


    Gitbox

    Gitbox是Git版本控制系统的Mac OS X图形界面。 在单个窗口中可以看到分支,历史和工作目录状态。

    日常操作非常简单:使用复选框进行阶段和不停顿的更改。 通过单击即可提交,拉取,合并和推送。 双击更改以使用FileMerge.app显示差异。

    下载


    Gity

    Gity网站没有太多的信息,但从那里的截图看来,它是一个功能丰富的开源OS X git gui。

    下载或来源


    合并

    Meld是一个视觉差异和合并工具。 您可以比较两个或三个文件并对其进行编辑(动态更新)。 您可以比较两个或三个文件夹并启动文件比较。 您可以浏览和查看流行版本控制系统(如CVS,Subversion,Bazaar-ng和Mercurial [和Git])的工作副本。

    下载


    武士刀

    Steve Dekorte的OSX Git GUI。

    匆匆一瞥,看看哪些远程分支有变动拉和本地回购有推动变化。 支持添加,提交,推送,拉取,标记和重置的git操作,以及突出显示本地更改和添加的项目hieracy的可视化差异和可视化浏览。

    1个仓库免费,25美元以上。

    下载


    Sprout(以前称为GitMac)

    专注于使Git易于使用。 具有原生Cocoa(类似mac)UI,快速存储库浏览,克隆,推/拉,分支/合并,视觉差异,远程分支,易于访问终端等。

    通过使最常用的Git操作直观且易于执行,Sprout(以前称为GitMac)使Git用户友好。 与大多数Git工作流程兼容,Sprout非常适合设计师和开发人员,团队协作以及高级和新手用户。

    下载| 网站


    适用于Mac OSX的功能丰富的Git GUI。 30天免费试用,单用户授权59美元。

    下载| 网站


    例如:It

    EGit是Git版本控制系统的Eclipse Team提供者。 Git是一个分布式SCM,这意味着每个开发人员都可以完整复制代码的每个修订版本的所有历史记录,从而快速且多功能地查询历史记录。

    EGit项目在Git的JGit Java实现之上实现Eclipse工具。

    下载| 网站


    Git扩展

    适用于Windows的开源代码 - 将您需要使用Git的所有内容安装在一个软件包中,易于使用。

    Git Extensions是一个工具包,可以让Windows更直观的使用Git。 外壳扩展将在Windows资源管理器中进行整合,并在文件和目录上显示上下文菜单。 还有一个Visual Studio插件可以使用Visual Studio中的git。

    下载

    非常感谢dbr对git gui的解释。


    SourceTree

    SourceTree是Git,Mercurial和SVN的免费Mac客户端。 由Bitlassucket后面的人Atlassian构建,似乎与任何VC系统都可以很好地协同工作,这使得您可以掌握一个单一的工具来使用您的所有项目,但是它们是版本控制的。 功能丰富,免费。

    适合新手和高级用户的专家准备和功能包装:

    查看传出和传入的变更集。 樱桃采摘分支机构之间。 修补程序处理,改版,存储/搁置等等。

    下载| 网站



    那么,尽管你问我们不是“简单地”链接到其他资源,但是当已经存在一个真正相当不错的社区成长(并且不断增长)的资源时,这是非常愚蠢的:Git Community Book。 严重的是,这个问题中的20多个问题将会是简洁而一致的。 Git Community Book既可以HTML和PDF格式提供,也可以以清晰,格式良好并经过同行评审的答案和格式回答您的许多问题,让您可以直接跳到您的问题。

    唉,如果我的帖子真的让你感到不安,那么我会删除它。 只是这样说。

    链接地址: http://www.djcxy.com/p/1213.html

    上一篇: Git for beginners: The definitive practical guide

    下一篇: What is the difference between README and README.md in GitHub projects?