我不得不承认我没有使用gits高级功能,但在我当前的项目中我不得不这样做.
情况:有人试图实现一些功能并将它们交给主人,现在我被叫去做其他人试图做的事情(但失败了),因此,我做的第一件事就是
git checkout -b clean_start HASH
Run Code Online (Sandbox Code Playgroud)
Hash是一个正确的SHA1哈希,在当前主服务器之前大约有20个提交,并且有效.我现在对这个分支进行了一些更改,现在我想将远程存储库的当前主分支(具有其他人所做的更改)更改为我的本地分支.
换句话说,我想移动主人20的头部提交,然后将我的新干净分支合并到其中.
这正是我必须做的吗?通过恢复HEAD~20等,还是有一个命令可以完全移动?
在svn中,可以执行svn revert ./*当前目录和仅当前目录的还原.
相当于svn revert只有当前目录被还原的git是什么?
我知道有git reset --hard,但它会恢复所有内容,而不仅仅是当前目录.
我如何只恢复git中的当前目录?
为了研究前一次提交所引入的效果,我想将其反向应用到我的工作副本并使用代码.
我通过创建和应用补丁的工作流程进行了管理,但是想知道这是否可以更轻松地完成.
git checkout -b "tmp-fiddle"
git diff -R -p d9fd2bb^ d9fd2bb > patch_to_examine.patch
# Manually edit the patch a little
git apply patch_to_examine.patch
Run Code Online (Sandbox Code Playgroud)
请注意,我没有查看git revert或git rebase -i因为这些会引入新的提交或更改历史记录:我只是希望引入的更改d9fd2bb不适用于我当前的工作副本.
我的一位同事完全搞砸了我们主CVS存储库中目录的内容.我需要将整个模块恢复到去年年底的状态.请问CVS命令是什么?
他添加并删除了数百个文件,因此简单的"复制旧签出和提交文件"是不够的.
我有RTFM和STFW,我试过这个:
cvs co modulename # Note no -P option
cvs up -jHEAD -jMAIN:2008-12-30 modulename
Run Code Online (Sandbox Code Playgroud)
但这不起作用 - 他创建的新文件被删除,但旧的文件和目录不会被复活.(我没有承诺).
我可以为此编写一个shell脚本,但是这个功能肯定已经在CVS了吗?
更新:一些澄清:
我可以在特定日期获得模块的本地结账.问题是如何将其重新纳入CVS.
我确实有备份,但使用像CVS这样的修订控制系统的要点是它应该很容易获得任何历史状态.下次发生这样的事情时,我可能没有足够的幸运能够备份(例如备份是每天,所以我可能会失去一天的工作).
我知道CVS已经老了,我们应该转向更新的东西.但是在拥有大量基于CVS的工具(结账和构建脚本,夜间构建服务器等)的大型团队中,此类迁移的时间成本相当可观.(评估,更新脚本,测试,迁移,培训,丢失开发人员时间,并行维护两个系统,因为旧分支仍然需要CVS).因此,这必须由管理层规划和安排.
更新#2:我将在此开始赏金. 要获得赏金资格,您必须解释如何使用普通的CVS命令恢复,而不是使用hacky shell脚本.
更新#3:服务器是CVS 1.12.13.通过pserver访问.我可以在Linux PC上使用相同版本的CVS,或在Windows上使用CVSNT 2.0.51d客户端.
开发人员对两个文件进行了小的更改.但在这次提交期间,他发生了合并冲突,删除了很多东西(可能没有最新的版本).然后它被推送到共享仓库,其他一些开发人员做了一些其他的提交.
现在,我们注意到,合并删除了重要文件,我们希望将其还原.
如何在不丢失下一次提交的更改的情况下执行此操作?
我试图git revert commitsha,但它没有带来改变.我需要还原mergesha吗?我怎样才能确定它?
我把我的git repo搞砸了一下.我在一个单独的分支中处理了一个功能.完成工作后,我切换到主人将其合并,但我的伙伴推了几个与我发生冲突的文件.合并之后,冲突和推动新的变化,我看到我也承诺了我的伙伴的旧变化.
现在我想重做这个提交/合并.我试过
git reset --soft HEAD^但是当我想要推送时,我收到了此错误消息Merge the remote changes before pushing again.
谁能帮我?
我试图通过使用'revert'命令恢复到git中的某个'hash'数字.
我使用以下命令:
git revert c14609d74eec3ccebafc73fa875ec58445471765
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下返回:
错误:提交c14609d74eec3ccebafc73fa875ec58445471765是一个合并但没有给出-m选项.
致命:恢复失败
作为一个新的git用户,请你解释一下发生了什么以及我要做些什么来解决这个问题.
我想恢复到c14609d74eec3ccebafc73fa875ec58445471765运行时看到的某个commit()git log.
我对Subversion和Subclipse都很陌生,并且看到一些问题让我相信更新头部和同步之间存在差异.具体来说,我发现当我尝试恢复(使用subclipse历史记录)时,我经常会收到一条消息,说"无法从路径自己的未来历史中反转合并范围,请先尝试更新".我的同步应该确保我在REPO的分支中拥有所有文件的"head"版本,但是执行"Update to head"确实解决了问题...那么是什么给出了?我试图检查SVN控制台,看看有什么变化,但它不是很冗长.
想法?
我有第二个问题,但我假设第一个问题的答案将会阐明它.如果你很好奇并有时间阅读,我也会打字.这是场景......我从"生产"标签中分支了所有文件,并开始处理我的项目.在几次提交之后,我检查一个已更改文件的历史记录,并注意到"粗体"版本(根据文档,这应该是头部)低于我的所有提交.就好像我拥有的不是头脑.但是头部只是该项目的最新版本吗?所以我错过了什么.
感谢您的回复,并花时间阅读本文!
是什么"还原"和"改写和更新"选项之间从Eclipse的差异(团队同步 - SVN(工作区) - 外出模式)?
提前致谢.
我有一个可拖动的div,其恢复参数设置为"无效".
当恢复发生时,我想触发CSS更改到另一个元素.
"revert"是参数而不是事件,因此在恢复发生时触发所需的CSS更改时遇到很大困难.
$('#peg_icon').draggable({
revert: 'invalid',
scroll: false,
stack: "#peg_icon",
drag: function(event, ui) {
$('#peg_icon').css('background-image','url(images/peg-icon-when-dragged.png)');
}
});
Run Code Online (Sandbox Code Playgroud)
我没有尝试使用"revert"作为事件:
revert: function(event, ui) {
$('#peg_icon').css('background-image','url(images/peg-icon-default.png)');
},
Run Code Online (Sandbox Code Playgroud)
我也无意中试图让revert paramater接受这个功能:
function(socketObj)
{
//if false then no socket object drop occurred.
if(socketObj === false)
{
//revert the peg by returning true
$('#peg_icon').css('background-image','url(images/peg-icon-default.png)');
return true;
}
else
{
//return false so that the peg does not revert
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在拖动一个div,当拖动时,背景图像会改变,当拖动恢复时,背景图像将恢复到其原始状态.
在拖动时发生恢复时,如何触发对其他元素的CSS更改?