【问题标题】:Sourcetree Git - Checkout file disable modifyingSourcetree Git - 签出文件禁用修改
【发布时间】:2014-09-22 09:08:28
【问题描述】:

在 Sourcetree 之前,我使用的是 Wincvs,它有一个很好的功能,我在 Sourcetree 中找不到。

我正在尝试以这种方式设置它,首先我必须先签出一个文件,然后才能对其进行修改(因此该文件在签出之前只是可读的)。然后,每个想要编辑此文件的人都会收到其他人(具有实际名称)正在编辑此文件的通知,这也很好。

现在(使用 Sourcetree)就像我在 IDE 中编辑文件一样,我在 Sourcetree 中看到更改的文件(我可以提交和推送),但没有检查其他人是否正在修改相同的文件。

还有一个问题,是否有可能只检索已更改的文件?当我从服务器中提取时,Sourcetreee 尝试合并更改的文件,但我希望它们从服务器中更新(不合并)。我已经看到有可能以这种方式将项目“删除”并从服务器中拉出,但我希望更改后的文件覆盖我的本地文件。

感谢您提供任何信息

【问题讨论】:

  • 由于 git 本质上是分散的,我认为不可能通知您正在处理特定文件的人

标签: git atlassian-sourcetree git-checkout


【解决方案1】:

使用 Git 根本不可能锁定文件,因为 Git 是分布式的,而不是集中式的,这与 CVS 或 Subversion 不同(这与 SourceTree 无关,因为 SourceTree 只是一个 Git 客户端)。检查,如果其他人也更改了文件(或更具体地说,树)将在您推送提交时完成。当另一个开发人员推送另一个提交时,您的推送被拒绝,您必须从其他开发人员那里获取并合并提交(顺便说一句,您应该阅读更多有关 Git 基础知识的内容)。

如果你想覆盖本地文件,那么你只需获取分支,然后将本地分支重置为远程分支(git reset --hard 将覆盖所有本地更改)。

【讨论】:

  • 是的,似乎 git 真的不可能(在 SO 上找到了一些其他主题)。我想我只是需要时间来适应它,因为在 wincvs 中“更多”的东西是有组织的。现在我正在同一个项目的 2 个不同的工作站上工作(作为我的第一个 git 项目)。而且我总是希望它们保持同步(当我在一个站点上更改某些内容时,我会推送它并稍后在另一个站点上工作)。现在我在尝试从服务器拉取时经常遇到冲突,这很烦人(然后我删除一个文件并再次拉取)。谢谢
  • 如果您是唯一使用此存储库的人,那不应该发生这种情况。您应该检查 Git 存储库中是否有一些自动生成的文件,这可能会导致这些冲突。如果是这样,最好将它们从存储库中删除并将它们添加到 .gitignore 文件中。
  • 这首先是问题,但后来我将所有 .class 文件(以及我发现的一些其他扩展名是自动生成的)设置为忽略列表,但仍然收到错误xml 文件(它是一个 Android 应用程序,我收到 Manifest.xml 的错误)。但我会注意这一点,正如我所说,我需要一些时间来适应 git 的不同概念(与 Wincvs 相比)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 2011-01-15
相关资源
最近更新 更多