我在当前项目中第一次使用Git。在修改文件时,我将它们保持为未跟踪状态,然后在准备好提交时再进行提交。
这对我来说似乎很好,但在准备提交之前将它们保持为未跟踪状态是否存在缺点?
我在当前项目中第一次使用Git。在修改文件时,我将它们保持为未跟踪状态,然后在准备好提交时再进行提交。
这对我来说似乎很好,但在准备提交之前将它们保持为未跟踪状态是否存在缺点?
好的,缺点是Git不知道它们,因此无法保护您。如果您使用git add
将文件添加到索引中,则Git已经在其对象数据库中存储了该文件的内容。因此,当时的内容已备份。如果您现在因为任何原因在工作目录中丢失了该文件,则Git仍然在索引中存储了该内容,并且您仍然可以提交它。这适用于跟踪和未跟踪文件的更改。
总的来说,您应该尝试习惯于使提交更小并更频繁地提交。提交“未完成”或“不完美”的东西并不可耻。当然,如果您能很好地控制它,您总是会更喜欢那些完美的提交,但是如果您无法做到这一点,也没关系。因此,不要等待文件“完成”,而是提交其中状态。如果这导致您最终出现混乱,您仍然可以变基您的注释以清理历史记录(当然,只有在尚未推送时才进行变基)。
取决于情况,
缺点是你可能会丢失文件。
我主要采用的方法是始终在分支上工作,进行多次提交,最后准备好提交到主分支时,只需一次提交。
另一种方法是使用wip(正在进行的工作)提交,结合交互式变基,可以帮助解决早期和经常提交的愿望以及只提交完成工作的愿望。
这样你就可以做到:
# work (edit files)
git add and git commit -m"wip"
# work (edit files)
git add and git commit -m"wip"
# work (edit files)
git add and git commit -m"wip"
git rebase -i HEAD # bring up an editor
现在使用 squash 命令将这三个提交合并成一个更有意义的描述。
现在你只有一个提交,可能已经注释,可以直接与其他提交进行差异比较。
关于交互式变基的一些注意事项:
注意:当文件中包含即将被删除的个人或私人信息时,有一种情况是不添加文件的好时机。最好永远不要让这些信息出现在 git 中,否则人们可能会在历史记录中挖掘这些信息。