我的平台:
PHP和mySQL
我的情况:
我正在尝试在我的代码中实现事务.我试图按照例子,但它没有多大帮助.我正在运行3个查询,我想以这样的方式编写事务,这样如果任何查询失败,整个事务就应该回滚.我非常感谢一个简单,高效且非面向对象的PHP代码来实现这一目标.先感谢您.
我的PHP代码:
//db_res calls a custom function that performs a mysql_query on the query
$res1 = db_res("SELECT c1, c2 FROM t1 WHERE c5 = 3");
$res2 = db_res("UPDATE t2 SET c1 = 5 WHERE c2 = 10");
$res3 = db_res("DELETE FROM t3 WHERE c1 = 20");
if( $res1 && $res2 && $res3 )
{
//commit --- but how?
}
else
{
//rollback --- but how?
}
Run Code Online (Sandbox Code Playgroud) 注意:我不确定是否已经提出过这个问题,因为我找不到适合我的背景的任何问题(或者我无法理解现有问题'背景')
这些天我很喜欢Git.特别是,主题分支.我正在开发一个小代码共享应用程序.我有(本地)分支,如"主","认证","书签","评论","鼻子"等...
我的(预期)工作流程如下所示:创建主题分支==>在主题分支上工作==>将文件提交到分支==>将主题分支更改合并到"主"分支.(后来删除主题分支)
我试过为几个分支做同样的事情.它工作正常.但后来当我检查git图时,即使我遵循相同的工作流程,所有机会都发生在"主人"上.没有树线分叉和会聚!它显示了一条带有多个提交的单线.我不知道为什么?我的印象是,我用HEAD指针搞砸了什么?
为了给出实用的观点,这是我的git图:http://github.com/none-da/zeshare/network
以下是我使用的命令:
>> git branch authentication_feature
>> git checkout authentication_feature
>> # I work with all the files here in "authentication_feature" branch
>> git commit -m "Authentication_feature is up" # commiting to the branch
>> git branch # just to confirm, which branch I am working on
>> git checkout master # trying to shift to master branch
>> git merge --no-commit authentication_feature # I merge in two steps. This is step 1 …Run Code Online (Sandbox Code Playgroud) 假设您有一个分支master和另一个分支production,它们都包含该文件的一个版本prog.py,以及许多其他文件.想象一下,您修改了生产分支中的许多文件,包括prog.py.现在,只有在分支中进行一些更改的最佳方法是应用于分支中的版本?prog.pyproductionmaster
我开始转移到master分支并从production分支导入文件:
git checkout master
git checkout production -- prog.py
Run Code Online (Sandbox Code Playgroud)
因为我希望能够做到git add -p并手动选择更改.问题在于prog.py工作树和索引中都存在问题.如何在不触及工作树的情况下将其从索引中删除?
或者是否有更好的方法来选择prog.py应该从production分支导入到master分支的哪些更改?
我要归档一个包含大量垃圾的旧项目.我希望我再也不需要它,但我想把所有重要的东西都置于版本控制之下.由于项目中的混乱,不容易说出什么是来源和什么可以消失(没有makefile,没有make clean,没有).所以我想把几乎所有的东西放在那里,只考虑最大的文件进行排除.
如何列出要提交(或暂存)的文件及其大小?
我可以写一个脚本或其他什么,但希望有一个更简单的解决方案.我在Cygwin下工作,唯一可用的gui是git gui不显示文件大小.否则它对我需要的东西来说是完美的.
我需要使用hg关键字扩展将构建日期和修订嵌入到源文件中.撇开整个"你真的不想做那个"的论点,我怎么能这样做呢?
这是我的源文件(lib/foo/version.rb)看起来像什么(恰好是Ruby,但从我的构建中我没有"编译"步骤的观点来看,这只是相关的,我可以做-DREVISION ="$( hg id)"in):
module Foo
VERSION = {
:date => "$Date$",
:changeset => "$Revision$"
}
end
Run Code Online (Sandbox Code Playgroud)
问题是$ Revision $和$ Date $随着该文件的变更集和提交日期而扩展,而我需要的是整个存储库的tip更改集和提交日期.
我没有看到可以使用的明显模板hg help templates,关键字扩展也没有提到具有全局范围的任何内容.我正在尝试做什么?
我是GitHub的新手,能够创建一个README文本文件并提交(从我的本地机器到github网站),但现在我的问题是,我有一个文件夹,我需要将该文件夹提交到git hub,你们中的任何一个人都可以帮助我.
我正在阅读git对象:blob,tree,commit,tag.为了更好地理解git是如何工作的,我尝试了一些低级命令,比如write-tree和commit-tree.
mkdir test; cd test - > git initgit add file.我可以看到生成blob和树对象.git/objectsgit write-tree 打印当前的treeIDgit commit-tree treeID -m "commit a tree"提交这棵树.在此操作之后,生成一个提交对象,我可以看到它确实包含作者,日期等.但是,我无法检查我的提交使用git log,错误是:fatal: bad default revision 'HEAD'.经过上面的操作,当我运行时git status,我看到文件仍然在索引中等待提交.什么是和'commit' commit-tree之间有什么区别commit-tree?
正如我所理解的那样,当您在Git中进行提交时,会创建存储库的整个状态的快照,并允许我在必要时返回到该状态.所以,对我来说,提交不代表变更,而是存储库的状态.当你想回到旧州时,你可以做到git checkout commit-hash
但是,我不明白当你这样做时会发生什么cherry-pick,因为它只获得该提交所做的更改.
cherry-pick如果一个提交代表整个存储库的状态,Git如何在两个提交之间获得差异?
我刚刚使用git克隆了一个项目并打开了一个新的分支.在更改了只有1个文件之后,我尝试提交更改,但它向我显示我提交了3000多个文件.点击任何文件以查看差异后,phpstorm说"没有差异".
我听说这可能是与行结尾有关的错误,但我现在不知道该怎么做.请你帮助我好吗?现在无法验证3000个文件,我不想通过推送疯狂的东西来破坏项目.
我尝试将phpstorm中的行结尾更改为LF(unix)和CRLF(windows),但它根本没有帮助.我听说可能有必要在git中更改它,所以我尝试运行一些随机推荐的命令,但根本没有结果.
编辑:增加了100个声望赏金.我无法解决这个问题
解决方案:好的,看起来这是特权问题.我在所有目录上都给了chmod 777,这太过分了.
我在git repo中提交了一个提交,并推送了它,但是不小心它包含了我们生产机器的一些密码。所以我删除了提交:
git reset --hard HEAD~1
git push --force
Run Code Online (Sandbox Code Playgroud)
确实确实从提交列表中删除了提交,但是gitlab上的提交网址仍然显示了提交的来源。
我不确定这是git仍将提交内容保存在gitlab服务器上,还是gitlab数据库以某种方式存储提交内容,但是我确实需要从gitlab服务器中完全删除该提交。
有谁知道从gitlab完全删除提交及其内容的方法吗?