p4 上传常用命令
p4(perforce) manual 链接 https://www.perforce.com/manuals/v15.1/cmdref/p4_add.html
使用p4 submit的时候先要做两件事:
p4 opened // 查看当前已打开的文件
p4 diff // 目前编译的文件与库上的文件不同之处 ;---> p4 diff xxx //自动显示xxx与库上的不同
p4 submit -d " commit " // 上传已经更改的文件
如果不小心把不应该打开的文件 p4 edit 了, 并且submit了,此时需要把误传的文件恢复到原来的版本并重新上传:
(1)
p4 filelog tb_env.sv // p4 filelog 可以查看 tb_env.sv的上传记录,包括版本号, 修改日期,修改人等
p4 filelog -m 5 tb_en.sv // 如果想看最近n次的上传记录, 加上参数 -m n , 当前命令是查看 tb_env.sv最新5次的上传记录
p4 sync tb_env.sv#52 // 上个命令最新版本是#55,我想把tb_env.sv 恢复到52版本,使用sync命令,【tb_env.sv 与 #52之间不能存在空格】, 刚才好奇,在tb_env.sv 与#52之间加了个空格 (p4 sync tb_env.sv #52) ,结果所有的文件都sync到了52版本,吓死宝宝了, 赶紧p4 sync 了一下,恢复到了最新版本。
此时再把想要恢复的文件 tb_env.sv submit 就可以了。
(2)
个人干了一件非常愚蠢的事,恢复文件时,凭借想象力手动恢复文件,结果恢复错了还上传了,感谢指导人不但没骂我,还耐心帮我讲解如何恢复版本(汗)。
p4v 打开的软件上有个小工具,工具栏的右上部分有个Diff的快捷键,输入要diff的两个版本号,diff一下就可以显示两个版本文件的不同之处。
查看当前p4版本:
p4 changes -m1 #have
p4 shelve filename // 在库上备份一份文件,生成一个 changelist, 但是不会submit, 因此,别人p4 sync 的时候, 不会把 shelve 的文件sync 下来。
// 用于把修改的但是还不能上传的文件放在库上, 其他同事可以根据 changelist 把shelve 的文件放到本地。
如果第一次shelve了文件a, 但是想把文件b也放到同一个changelist里。
- p4 reopen -c changelist b // 把 changelist打开,把b 加进去
- p4 shelve -r -c changelist // shelve changelist 里包含的所有文件
p4 shelve 的文件不能通过p4 submit 上传到库上,需要:
- p4 shelve -d -c changelist // 删掉在库上保存的备份(这个是个人理解,可能有错)
- p4 submit -c changelist // 把 shelve 的文件上传到库上