好的,在看到PJ Hyett的这篇文章后,我决定跳到最后,使用Git。

所以我需要的是Git初学者实用指南。“初学者”被定义为知道如何处理他们的编译器,在某种程度上理解Makefile是什么,并且在没有很好地理解它的情况下接触了源代码控制。

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

So:

安装/设置

如何安装Git如何设置Git?尝试涵盖Linux、Windows、Mac,思考“客户端/服务器”思维。在Windows上使用Msysgit安装GIT服务器如何创建新项目/存储库?如何将其配置为忽略不属于代码库的文件(.obj、.user等)?

使用代码

如何获取最新代码?如何检查代码?如何提交更改?如何查看未提交的内容或当前代码库的状态?如何销毁不需要的提交?如何比较文件的两个版本,或当前文件和以前的版本?如何查看文件修订的历史记录?如何处理二进制文件(例如,visio文档或编译器环境)?如何合并“同时”更改的文件?如何撤消(恢复或重置)提交?

标记、分支、发布、基线

如何“标记”、“标记”或“发布”特定文件集的特定修订集,以便以后随时可以提取该修订集?你如何获得特定的“释放”?你是怎么分支的?如何合并分支?如何解决冲突并完成合并?如何将一个分支的部分合并到另一个分支中?什么是重新定基?如何跟踪远程分支?如何在远程存储库上创建分支?如何删除远程存储库上的分支?Git工作流示例

另外

描述并链接到一个好的GUI、IDE插件等,使Git成为一个非命令行资源,但请列出它的局限性和优点。msysgit-跨平台,包含在Git中gitk-跨平台历史查看器,包含在Git中gitnub-Mac OS Xgitx-Mac OS X历史查看器smartgit-跨平台、商业、测试版用于Linux的tig控制台GUIqgit-用于Windows、Linux的GUIGitExtensions-Windows包,包括友好的GUI初学者还应该知道其他常见任务吗?Git Status告诉您刚才做了什么,您有什么分支,以及其他有用的信息如何将subversion存储库设置为源代码控制源代码,从而有效地工作?

其他Git初学者参考

Git指南Git手册Git魔法数字广播GitHub指南Git教程Scott Chacon的Progit-书Git-SVN速成课程Git自下而上Git就绪gitref.org网站Git可视化备忘单

深入Git

从概念上理解Git计算机科学家Git(和另一个版本)

我会不时地检查条目,并“整理”它们,使它们具有一致的外观/感觉,并且很容易扫描列表-请随意遵循简单的“标题-简要说明-说明列表-获取和额外信息”模板。我还将链接到上面项目符号列表中的条目,以便以后很容易找到它们。


当前回答

如何“标记”一组特定的修订

如何“标记”、“标记”或“发布”特定文件集的特定修订集,以便以后随时可以提取该修订集?

使用git标记命令。

要简单地“标记”当前修订,只需运行。。

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

要列出当前标记,只需运行不带参数的git标记或-l(小写l):

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

要删除标记,请使用-d标志:

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

要标记特定(先前)提交,只需执行。。

git tag [tag name] [revision SHA1 hash]

例如:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

注意:默认情况下,git创建一个“轻量级”标记(基本上是对特定修订的引用)。“正确”的方法是使用-a标志。这将启动编辑器,请求标记消息(与请求提交消息相同,您也可以使用-m标志在命令行上提供标记消息)。使用带注释的标记创建一个具有自己的ID、日期、tagger(作者)和可选的GPG签名(使用-s标记)的对象。有关这方面的更多信息,请参阅本文

git tag mytagwithmsg -a -m 'This is a tag, with message'

要列出带有注释的标记,请使用-n1标志显示每个标记消息的1行(-n245显示每个注释的前245行,依此类推):

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

有关更多信息,请参阅git标记(1)手册页

其他回答

git的GUI


Git GUI

包含在git中-从命令行运行gitgui,Windows msysgit安装程序将其添加到“开始”菜单中。

GitGUI可以完成使用Git所需的大部分工作。包括阶段更改、配置git和存储库、推送更改、创建/签出/删除分支、合并等等。

我最喜欢的功能之一是右键菜单中的“stage line”和“stage hunk”快捷键,它允许您提交文件的特定部分。您可以通过git add-i实现相同的功能,但我发现它更容易使用。

它不是最漂亮的应用程序,但它几乎可以在所有平台上运行(基于Tcl/Tk)

屏幕截图|屏幕播放


GitK

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

与git-gui配合得很好。


吉特努布

Mac OS X应用程序。主要相当于gitlog,但与github有一些集成(如“网络视图”)。

看起来很漂亮,适合Mac OS X。您可以搜索存储库。Gitnub最大的缺点是它以线性方式(一次一个分支)显示历史-它没有可视化分支和合并,这对git来说很重要,尽管这是一个计划中的改进。

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


GitX

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

它可以可视化非线性分支历史、执行提交、查看和搜索提交,还具有其他一些不错的功能,比如能够“快速查看”任何版本的任何文件(按文件列表视图中的空格)、导出任何文件(通过拖放)。

它比git-gui/gitk更好地集成到OSX中,即使在超大的存储库中,它也非常快速和稳定。

原始的git存储库pieter最近没有更新(在撰写本文时超过一年)。一个更积极维护的分支可以在妹夫bard/gitx上找到-它添加了“侧边栏、获取、拉、推、添加远程、合并、樱桃采摘、重新基础、克隆、克隆到”

下载|截图| git仓库|妹夫巴德叉|劳隆叉


智能Git

从主页:

SmartGit是分布式版本控制系统Git并在Windows、Mac OS X和Linux。SmartGit旨在喜欢图形用户的开发人员通过命令行客户端的接口,使用Git更高效-当今最强大的DVCS。

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

下载


TortoiseGit公司

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

它正在将TortoiseSVN移植到TortoiseGit。最新版本1.2.1.0此版本可以完成常规任务,如提交、显示日志、diff两个版本、创建分支和标记、创建补丁等。有关详细信息,请参阅ReleaseNotes。欢迎参与本项目。

下载


QGit

QGit是一个基于Qt/C++语言。使用qgit,您可以浏览修订历史记录,查看修补程序内容和更改的文件随着不同的发展分支。

下载


gitg

gitg是git存储库查看器靶向gtk+/GNOME。其主要功能之一目标是提供更多git的统一用户体验跨多个桌面的前端。它这不是在写跨平台应用程序,但通过与类似机构密切合作其他操作系统的客户端(如OS X的GitX)。

特征

浏览修订历史记录。处理大型存储库(在1秒内加载linux存储库,17000多个版本)。提交更改。准备/取消准备单个大块。还原更改。显示修订中更改的彩色差异。浏览树以查找给定的修订。导出给定修订的树的部分。提供诸如“gitlog”之类的命令可以理解的任何refspec来构建历史记录。在历史视图中显示和切换分支。

下载:版本或源


Gitbox(Gitbox)

Gitbox是一个Mac OS X图形Git版本控制接口系统在一个窗口中,您可以看到分支、历史和工作目录状态。日常操作很简单:阶段并用复选框取消对更改的分级。使用单击。双击对的更改显示与FileMerge.app的差异。

下载


Gity

Gity网站没有太多信息,但从上面的截图来看,它似乎是一个功能丰富的开源OS X gitgui。

下载或源


Meld

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

下载


卡塔纳

Steve Dekorte的OSX Git GUI。

一眼就能看到哪些远程分支对拉动和本地回购进行了更改有更改要推送。添加、提交、推送、拉取、标记和重置支持以及视觉差异以及项目层次结构的可视化浏览突出显示本地更改和添加。

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

下载


Sprout(原GitMac)

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

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

下载|网站


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

下载|网站


EGit

EGit是Git版本控制系统的Eclipse团队提供者。Git是一个分布式SCM,这意味着每个开发人员都有一个完整的副本每次修订代码的所有历史记录这段历史非常快速和丰富。EGit项目正在JGit之上实现Eclipse工具Git的Java实现。

下载|网站


Git扩展

Open Source for Windows-在一个简单易用的软件包中安装使用Git所需的一切。

GitExtensions是一个让在Windows上使用Git更加直观的工具包。shell扩展将集成在Windows资源管理器中,并在文件和目录上显示上下文菜单。还有一个Visual Studio插件可以使用Visual Studio中的git。

下载

非常感谢dbr对gitgui的详细介绍。


源代码树

SourceTree是Git、Mercurial和SVN的免费Mac客户端。由BitBucket背后的Atlassian构建,它似乎与任何VC系统都一样适用,它允许您掌握一个单独的工具,用于所有项目,无论它们是版本控制的。功能齐全,免费。

专为新手和高级用户准备的Expert Ready&功能包:检查传出和传入的变更集。在树枝间摘樱桃。补丁处理、重新基础、隐藏/搁置等。

下载|网站


控制台UI-Tig

安装:

apt-get install tig

用法

在git repo中,键入“tig”以查看交互式日志,点击任何日志上的“enter”以了解有关它的更多信息。h获取帮助,其中列出了基本功能。

琐事

“Tig”倒过来就是“Git”。

资源:一定要看看Scott Chacon的Gitcast,尤其是Railscoff的演讲。

Github很棒,也有一些有用的指南。

如何“标记”一组特定的修订

如何“标记”、“标记”或“发布”特定文件集的特定修订集,以便以后随时可以提取该修订集?

使用git标记命令。

要简单地“标记”当前修订,只需运行。。

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

要列出当前标记,只需运行不带参数的git标记或-l(小写l):

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

要删除标记,请使用-d标志:

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

要标记特定(先前)提交,只需执行。。

git tag [tag name] [revision SHA1 hash]

例如:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

注意:默认情况下,git创建一个“轻量级”标记(基本上是对特定修订的引用)。“正确”的方法是使用-a标志。这将启动编辑器,请求标记消息(与请求提交消息相同,您也可以使用-m标志在命令行上提供标记消息)。使用带注释的标记创建一个具有自己的ID、日期、tagger(作者)和可选的GPG签名(使用-s标记)的对象。有关这方面的更多信息,请参阅本文

git tag mytagwithmsg -a -m 'This is a tag, with message'

要列出带有注释的标记,请使用-n1标志显示每个标记消息的1行(-n245显示每个注释的前245行,依此类推):

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

有关更多信息,请参阅git标记(1)手册页

如何跟踪远程分支

假设有一个您从中克隆本地存储库的远程存储库,并且假设该远程存储库上有一个名为“some_branch”的分支,下面是如何在本地跟踪它:

# list remote branches
git branch -r

# start tracking one remote branch
git branch --track some_branch origin/some_branch

# change to the branch locally
git checkout some_branch

# make changes and commit them locally
....

# push your changes to the remote repository:
git push