好的,在看到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(和另一个版本)

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


当前回答

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

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

其他回答

如何安装Git

在Windows上:

安装msysgit

有几个下载:

Git:除非您特别需要以下其他选项之一,否则请使用此选项。PortableGit:如果您想在PC上运行Git而不在PC上安装(例如从USB驱动器运行Git),请使用此选项msysGit:如果你想开发Git本身,可以使用这个。如果您只想将Git用于源代码,但不想编辑Git的源代码,则不需要这样做。

这还安装了一个Cygwin bash shell,因此您可以在更好的shell中使用git(而不是cmd.exe),还包括gitgui(可以通过gitgui命令或“开始”>“所有程序”>“git”菜单访问)

Mac OS X

使用gitosx安装程序,也可以从源代码安装

通过包管理器

使用本地包管理器安装git。例如,在Debian(或Ubuntu)上:

apt-get install git-core

或者在Mac OS X上,通过MacPorts:

sudo port install git-core+bash_completion+doc

…或fink:

fink install git

…或Homebrew:

brew install git

在基于Red Hat的发行版上,如Fedora:

yum install git

在Cygwin中,Git包可以在“devel”部分找到

源代码(Mac OS X/Linux/BSD/等)

在Mac OS X中,如果您安装了开发工具,您可以非常容易地从源代码编译Git。以.tar.bz或.tar.gz格式从以下位置下载最新版本的Git:http://git-scm.com/,并提取它(在Finder中双击)

在Linux/BSD/等上。应该是一样的。例如,在Debian(和Ubuntu)中,您需要通过apt安装构建基本包。

然后在终端中,cd到您提取文件的位置(运行cd~/Downloads/git*/应该有效),然后运行。。

./configure && make && sudo make install

这将在默认位置安装Git(/usr/local-因此Git将位于/usr/local/bin/Git中)

它将提示您输入密码(用于sudo),这样它就可以写入/usr/local/目录,而该目录只能由“root”用户访问,因此需要sudo!

如果您希望将其安装在单独的位置(这样Git的文件不会与其他工具混合),请在configure命令中使用--prefix:

./configure --prefix=/usr/local/gitpath
make
sudo make install

这会将git二进制文件安装到/usr/local/bin/gitpath/bin/git中,因此您不必每次都键入该文件,您应该通过在~/.profile中添加以下行将其添加到$PATH中:

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

如果您没有sudo访问权限,可以使用--prefix=/Users/myusername/bin并安装到主目录中。记得将~/bin/添加到$PATH

脚本x-git-update-to-latest-version自动完成了很多工作:

此脚本更新git repo的本地克隆(localy at ~/work/track/git),然后配置、安装(位于/usr/local/git git-descripte)并更新/usr/local/gt符号链接。这样,我的PATH中就可以有/usr/local/git/bin,而且我总是使用最新版本。此脚本的最新版本还安装了手册页。您需要调整MANPATH以包含/usr/local/git/share/man目录。

好吧,尽管你要求我们不要“简单地”链接到其他资源,但当已经存在一个社区生长(和不断增长)的非常好的资源时,这是非常愚蠢的:Git社区书。说真的,一个问题中的20多个问题绝对不会简明扼要。Git社区书有HTML和PDF两种格式,可以用清晰、格式良好、经过同行评审的答案回答您的许多问题,并且格式可以让您直接解决手头的问题。

唉,如果我的帖子真的让你不安,我会删除它。说吧。

非常好的关于合并冲突的帖子-GitGuys:合并冲突-冲突和解决方案

这个博客真的很棒——说明性的,干净的例子,可以理解。绝对值得一看。

如何设置共享团队存储库?

这里描述了如何建立一个普通的存储库——但是如何建立一种团队存储库,每个人都可以从中提取和推送到其中?

使用共享NFS文件系统

例如,假设您的团队已经拥有可以使用的共享组成员资格。

mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared

要开始使用此存储库,最简单的方法是从您已经使用过的本地存储库开始:

cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master

其他人现在可以克隆并开始工作:

cd your/local/workspace
git clone /your/share/folder/project.git

使用SSH

在目标服务器上设置用户帐户。无论您使用没有密码的帐户、有密码的帐户还是使用authorized_keys,都取决于您所需的安全级别。有关更多信息,请参阅通过SSH配置Git。

如果所有开发人员都使用相同的帐户访问此共享存储库,则不需要使用上述--shared选项。

以与上述相同的方式启动存储库后,您可以执行如下初始推送:

cd your/local/workspace/project
git remote add origin user@server:/path/to/project.git
git push origin master

看到与上面的相似之处了吗?另外,如果帐户有密码,唯一可能发生的事情就是SSH请求密码。如果您在没有密码的帐户上得到此提示,则SSH服务器可能已禁用PermitEmptyPassword。

克隆现在看起来像这样:

cd your/local/workspace
git clone user@server:/path/to/project.git

Git重置

假设你做了一个拉,把它合并到你的代码中,然后决定你不喜欢它。使用git-log或tig,找到您想返回的任何位置的哈希(可能是在拉/合并之前的最后一次提交),复制哈希,然后执行以下操作:

# Revert to a previous commit by hash:
git-reset --hard <hash>

您可以使用HEAD^作为上一次提交的快捷方式,而不是哈希。

# Revert to previous commit:
git-reset --hard HEAD^