0

我们的一个客户在 beanstalkapp.com 上设置了几个版本控制项目。

其中大部分带有颠覆性。我在 Windows 上安装并设置了 TortoiseSVN;这使我可以在我的计算机上拥有所有文件的副本。如果我想更改文件,我可以右键单击它并选择“更新”(以确保在编辑之前将其更新到最新版本),进行更改,然后右键单击它并选择“提交”。我还可以选择一些我已更改的文件,然后将它们全部提交。

最新的项目使用 git。我安装并设置了 TortoiseGit,在我的计算机上克隆了存储库,但发现界面更加混乱。

1)我似乎无法找到一种只更新单个文件的方法,而无需下载每个更改的文件。我相信这是通过右键单击文件夹(而不是文件)并选择 TortoiseGit -> Pull 来全局完成的。如果我尝试右键单击单个文件夹,则没有拉;有一个“检查修改”,但它似乎没有做它听起来的样子。

2)我同样对提交感到困惑。如果我右键单击并选择 Git commit -> master,它确实允许我检查/取消选中我想要更改的文件。但后来看来我也必须做一个“推动”,这似乎也是全球性的。当我尝试更新文件、提交并选择“推送”时,文件已正确更新,但 Beanstalk 还在其日志中列出了我进行了另一项更改:

xxx.beanstalkapp.com:/xxx 的'合并分支'master'

包括一个我根本没有接触过的文件。当我选择“推送”时,我看不到任何文件列表。

我一直在阅读有关 stackoverflow 的各种文章以解决类似的问题,但大多数似乎是为了解大量有关 git 技术信息的人准备的;使用命令行、分支等

是否有任何简单的方法来更新一个文件、编辑它并提交它,或者这对于 TortoiseGit 是不可能的?

4

1 回答 1

2

与 Subversion 不同, Git不支持具有不同基本版本的工作树(svn:工作副本)的部分;总是有一个“HEAD”提交,它是整个树的基本修订。也无法下载某些更改而不是其他更改;预计您可以获得整个历史记录(直到您最后一次获取更改)并且您在本地导航该历史记录(一次仍然是整个提交)。

您可以使用index提交部分更改,但提交的签出/推送/拉取始终是对整个树的操作。

(我对 TortoiseGit 不熟悉,但是如果它添加了这些功能,那么由于需要扩展存储库格式,它必然与命令行 Git 不兼容。)

如果需要构建混合修订状态,那么首先,感兴趣的更改必须在单独的提交中(在 Git 中进行细粒度提交通常是个好主意;git rebase -i可用于在发布前拆分和合并提交他们)。创建从一个感兴趣的修订派生的临时分支;然后使用git mergegit cherry-pick添加来自其他分支的更改,或git revert撤消对该分支历史记录的过去更改。

于 2013-02-11T20:42:31.443 回答