在我开始使用Git作为我的SCM之前,我会“彻底”测试代码的稳定性,然后我只需复制工作目录并将其重命名为类似(date)project_name。然后,如果我搞砸了某个地方而无法挖掘自己,我会从最后一个稳定目录开始。然后我听说了Git。
我想知道到目前为止我是否正确使用Git。这就是我一直在做的事情:
写一些代码......
git add .
将所有已更改的文件添加到舞台
git status
检查这些已更改的文件是否已准备好提交
git commit
提交最新更改并编写提交消息
重复
到目前为止,这就是我一直在做的事情。对于简单的备份目的以及恢复到“先前的稳定性”的能力,这是否足够了解Git?如果没有,我还应该知道什么?
答案 0 :(得分:8)
正如其他人所说,我强烈建议您对分支机构感到满意。我的工作流程通常是:
从master *分支开始:
git checkout -b awesome-new-killer-feature
创建一个新分支(-b)并将其签出。
写一些代码......
git add .
,git status
,git commit
提交小的更改,重复第2步
哦不!我的朋友刚报道了一个严重的错误!他丢失了数据!!!!!
git checkout master
返回主分支
git checkout -b bugfix-serious-data-loss
为修补程序
修复错误,git add
,git status
,git commit
,冲洗,重复直至错误修复
git checkout master
返回主分支
git merge --no-ff bugfix-serious-data-loss
合并错误修复回主人
好的,现在我可以回到我的真棒 - 新杀手功能上了:
git checkout awesome-new-killer-feature
继续处理我的工作
git rebase master
将对master的更改合并到工作代码中,这样我们就可以获得bugfix的好处。更不用说当我们需要将此分支合并回主分支时,这降低了合并冲突的可能性
编写代码,git add
,git status
,git commit
,冲洗,重复直到功能完成
git checkout master
,git 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