我是Perforce的新手,说实话,我讨厌它。
我在c:\ workspaces \ perforce目录中有大约20个文件,我选择了所有文件并点击删除键。
在删除它们之前,它们都已签入。
我一直在试着弄清楚如何让他们回来(Perforce太不直观了)但是没有什么能像我一样突出n00b了。
如何从Perforce中将最新修订版本恢复到目录中?
答案 0 :(得分:22)
你需要强制同步。
在命令行上:
$> p4 sync -f
在P4V GUI中:
答案 1 :(得分:9)
perforce服务器会跟踪您上次提取的文件。这样做是为了使下一个sync
仅引入自上次同步以来发生更改的文件,而不是再次引入所有文件。
要覆盖此行为,您需要使用-f
选项。
即使客户端已经拥有,-f标志也会强制重新同步 该文件,并覆盖任何可写文件。这个标志没有 影响打开的文件。
如果您使用的是命令行客户端,则可以从要同步的目录运行此命令:
p4 sync -f ...
您可能还想查看opened
文件列表,因为sync -f
不会引入与这些文件相对应的更改(即使您已将其删除)。
此命令应列出所有已打开的文件:
p4 opened ...
如果上面的列表中列出了您已删除的文件,则应在运行sync -f
之前将其还原。
p4 revert <FILE1> <FILE2>
p4 sync -f ...
如果您使用的是p4v
,则可以按照dwinkle提及的步骤进行操作:
1. Right click the folder in your workspace
2. Choose `Get Revision` in the context menu.
3. Choose `Get Latest revision`
4. Check `Force Operation (replace file even if you already have the revision specified)
5. Click on `Get Revision` button to fetch the files.
要使用p4v
查看已打开文件的列表,您必须查看待处理更改列表的列表。如果您没有将文件放在任何特定的更改列表中,您应该查看default
更改列表。右键单击您之前看到的文件,然后选择Revert
。
答案 2 :(得分:5)
如果您已签出文件,然后删除。在获得最新强制(p4 sync -f)之前,您需要恢复(p4 revert -a // ...)文件夹。
答案 3 :(得分:2)
替代方案:
p4 reconcile
p4 revert //...
答案 4 :(得分:2)
如果您不关心旧客户,一个解决方案就是关闭新客户端:
p4 newclient
p4 sync
如果您希望客户端具有相同的名称,您可以像其他人提到的那样进行强制同步:
p4 sync -f
如果您希望客户端具有相同的名称,但您的目录不再被识别为p4工作区,则需要删除该客户端,然后重新创建它。
p4 -c <client_name> client -d <client_name>
p4 newclient
答案 5 :(得分:0)
在我的情况下,我尝试了所有内容,但我无法将所有文件都还原,因此我尝试删除它们,然后我无法将所有文件都还原。我重新启动了我的电脑,并在网上尝试了很多解决方案。最后,我的问题通过以下一个或所有问题得到解决:升级到最新的P4V应用程序,使用提升的权限运行应用程序,并在强制获取最新状态后去吃午餐。
如果你浪费了一半的时间。您可能想尝试以上内容。
答案 6 :(得分:0)
我已删除目录中的所有文件。我该如何找回他们?
我偶然发现的一个问题是,如果删除目录,则不能仅使用p4 sync -f
来取回它。我想要一个完整的目录干净版本,所以我做了:
rm -rf directory1
但是,当我在其上执行p4 sync -f directory1
时,它会吐出:
directory1 - no such file(s).
我发现有效的方法是首先在目录内恢复文件:
p4 sync -f directory1/some-file
您将必须知道丢失目录内可以使用的文件之一的名称:
p4 files //depot/some/path/directory1/\*
一旦获得文件名之一,请执行:
p4 sync -f directory1/some-file
这应该创建directory1
目录。然后,您可以在创建的目录中进行完全同步:
cd directory1
p4 sync -f ...
希望这对其他人有帮助。
答案 7 :(得分:0)