学习Git。需要知道我是否走在正确的轨道上

时间:2010-08-24 15:19:42

标签: git

在我开始使用Git作为我的SCM之前,我会“彻底”测试代码的稳定性,然后我只需复制工作目录并将其重命名为类似(date)project_name。然后,如果我搞砸了某个地方而无法挖掘自己,我会从最后一个稳定目录开始。然后我听说了Git。

我想知道到目前为止我是否正确使用Git。这就是我一直在做的事情:

  1. 写一些代码......

  2. git add .将所有已更改的文件添加到舞台

  3. git status检查这些已更改的文件是否已准备好提交

  4. git commit提交最新更改并编写提交消息

  5. 重复

  6. 到目前为止,这就是我一直在做的事情。对于简单的备份目的以及恢复到“先前的稳定性”的能力,这是否足够了解Git?如果没有,我还应该知道什么?

5 个答案:

答案 0 :(得分:8)

正如其他人所说,我强烈建议您对分支机构感到满意。我的工作流程通常是:

从master *分支开始:

  • git checkout -b awesome-new-killer-feature创建一个新分支(-b)并将其签出。

  • 写一些代码......

  • git add .git statusgit commit提交小的更改,重复第2步

哦不!我的朋友刚报道了一个严重的错误!他丢失了数据!!!!!

  • git checkout master返回主分支

  • git checkout -b bugfix-serious-data-loss为修补程序

  • 创建新分支
  • 修复错误,git addgit statusgit commit,冲洗,重复直至错误修复

  • git checkout master返回主分支

  • git merge --no-ff bugfix-serious-data-loss合并错误修复回主人

好的,现在我可以回到我的真棒 - 新杀手功能上了:

  • git checkout awesome-new-killer-feature继续处理我的工作

  • git rebase master将对master的更改合并到工作代码中,这样我们就可以获得bugfix的好处。更不用说当我们需要将此分支合并回主分支时,这降低了合并冲突的可能性

  • 编写代码,git addgit statusgit commit,冲洗,重复直到功能完成

  • git checkout mastergit merge --no-ff awesome-new-killer-feature将分支合并回主人

现在请坐下来输入gitk以查看您正在做的事情的精彩历史视图。

可选:

  • git branch -D bugfix-serious-data-loss awesome-new-killer-feature删除未使用的分支。我想保持我的回购清洁

git的力量不是因为无法检查你的工作。它来自快速和便宜的分支和合并是。分支允许您同时处理多个想法和/或尝试丢弃想法,而不会影响您的稳定代码。如果这个想法不起作用,只需删除分支,如果它可以将它合并回主服务器。

*注意:按照惯例,大多数git用户将其主/主干分支称为“主”。

答案 1 :(得分:7)

如果您想要做的就是在出现问题时能够重置为旧提交,那么是的,就是这样。虽然您可以将所有git步骤合并为:

git commit -a

(提交所有已更改的跟踪文件)


如果你有时间,我会考虑分支和标记,但是对于你正在做的事情它们并不是严格要求的,它们只会让生活更轻松

答案 2 :(得分:3)

是的,你做对了:)在提交之前,运行以下命令有时是个好主意:

git difftool

这将让您在自己喜欢的差异工具中进行所有代码更改(例如Beyond Compare,KDiff3等)。只需按Enter键打开工具,确保一切正常并关闭程序。然后再次按Enter键以自动区分下一个更改的文件。

如果您正在使用Windows,here's a good tutorial了解如何设置您喜欢的差异(和合并)工具。

答案 3 :(得分:2)

我使用gitk --all可视化我的修订历史记录和对所有分支的未提交更改,并使用git commit -am "commit message"在一个命令中添加和提交。

我还建议大量使用分支。我做web开发,所以我将让master分支反映服务器上代码的状态,每次我处理一个大功能时我都会创建一个新的分支。这样,如果我有一个紧急错误修复,我可以轻松签出主分支,提交并上传修复程序,并将其合并回正在进行的功能。

答案 4 :(得分:1)

在添加更改之前,可以方便地预览更改,

git diff