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

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


当前回答

如何比较文件的两个版本,或当前文件和以前的版本?

比较命令是gitdiff。

要比较文件的两个版本:

$ git diff <commit1> <commit2> <file_name>

这是承诺1与承诺2的区别;如果你改变了顺序,那么文件就会反过来不同,这可能不是你所期望的。。。

要将当前暂存文件与存储库进行比较,请执行以下操作:

$ git diff --staged <file_name>

要将当前未分页文件与存储库进行比较,请执行以下操作:

$ git diff <file_name>

其他回答

提交更改

编辑文件后,需要将更改提交到git。当您执行此命令时,它将要求提交消息,这只是一个简单的文本,告诉每个人您所做的更改。

$ git commit source/main.c

将提交目录中的main.c文件/来源/

$ git commit -a # the -a flag pulls in all modified files

将提交所有更改的文件(但不提交新文件,这些文件需要使用gitadd添加到索引中)。如果你只想提交某些文件,那么你需要先用gitadd来暂存它们,然后在没有-a标志的情况下提交。

提交只会更改本地存储库,而不会更改远程存储库。如果要将提交发送到远程存储库,则需要执行推送。

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

对于来自CVS或SVN的人来说,这是一个变化,因为提交到中央存储库现在需要两个步骤。

这是PJ Hyett的帖子的副本,因为它已经不可用了:

Git并不难2008年11月23日当我们告诉人们为什么他们应该在Subversion上使用Git行是,“Git做Subversion更好比Subversion,但它做了很多不止于此。”“更多”是由一堆让Git真正发光的东西,但对于来自其他SCM的子版本。也就是说,没有什么可以停止你不能像你使用的那样使用Git在制作过渡假设您已安装必要的软件和远程在某个存储库中会抓取代码并推送更改回Subversion:$svn结账svn://foo.googlecode.com/svn/trunk食品#做出你的改变$svn commit-m“我的第一次提交”你会如何在Git中做到这一点:$git克隆git@github.com:pjhyett/foo.git#做出你的改变$gitcommit-a-m“我的第一次提交”$git推送再发出一个命令Git。这个额外的命令影响,但出于以下目的这篇文章,就是我们要说的大约,一个额外的命令。看,这真的没那么难。更新:我很抱歉没有提到在Subversion中更新本地副本与Git相比,svn更新和git拉动。只有一个这两种情况下的命令。

如何查看文件修订的历史记录?

git log -- filename

如何比较文件的两个版本,或当前文件和以前的版本?

比较命令是gitdiff。

要比较文件的两个版本:

$ git diff <commit1> <commit2> <file_name>

这是承诺1与承诺2的区别;如果你改变了顺序,那么文件就会反过来不同,这可能不是你所期望的。。。

要将当前暂存文件与存储库进行比较,请执行以下操作:

$ git diff --staged <file_name>

要将当前未分页文件与存储库进行比较,请执行以下操作:

$ git diff <file_name>

我发现这篇文章对我入门非常有用。我仍然需要阅读这本书和其他资源,但正如标题所说,这篇文章有助于“从概念上理解git”。我还建议参加RubyLearning提供的Git&GitHub课程。