TSQL父>子>子的重复没有光标
我正在创建一个SQL 2008 R2存储程序以复制一排及所有孩子. 这是一个三层设置,与父母,孩子和子女 给定父母的ID,我需要创建重复. 我已经使用fast_forward cursor解决了它. 我知道我也可以在行中循环进行一段时间,但我认为这会比该光标方法更快.你的想法是什么? 是否有更好的方法可以在不使用光标的情况下完成此任务? 编辑:我考虑的另一个选项是创建一个临时表,持有tblacStages记录的旧/新pkid. tblacStages可能有1到20个相应的行(Tblacupgrade可能有3行,每个TBLACSTAGES行) CREATE PROCEDURE [dbo].[spDuplicateACUnit] @pACUnitID bigint = 0 AS BEGIN SET NOCOUNT ON; DECLARE @NewACUnitID bigint = 0 INSERT INTO TBLACUnits ([col1]
6 2023-10-27
编程技术问答社区
如何在TortoiseGit中不拉快进
由于有些人建议在git中合并时不建议快点(-no-ff),所以我想这样做.但是我看不到在哪里检查可以在Tortoisegit Gui中启用这一点. 是的,我可以从命令行进行此操作.但是小组中的其他人不会使用它,所以我需要GUI解决方案. 编辑:从问题中删除推动;正如下面指出的那样,这是不现实的.参考文献仅是拉. 解决方案 您在哪里搜索它?选择Tortoisegit - >合并菜单项时,我将在下面显示对话框.我不敢相信您错过了其中的"不快进"复选框:) 对于pull,Tortoisegit中没有这样的选择,但是您可以手动从GUI手动进行fetch,然后使用merge进行merge.净结果将相同.
4 2023-10-24
编程技术问答社区
git rebase master,然后推送origin分支,结果出现非快速转发的错误
我正在尝试在我的功能分支上工作,同时将其与主分支保持最新. 这是场景 git clone ssh://xxx/repo git checkout -b featureA $ git add file.txt $ git commit -m 'adding file' $ git push origin featureA 与此 git checkout master git pull origin master git checkout featureA git rebase master git push origin feature A To ssh://xxx/repo ! [rejected] featureA -> featureA (non-fast-forward) error: failed to push some refs to 'ssh://xxx/repo' To prevent you from losing h
10 2023-08-02
编程技术问答社区
我可以让git中的快进功能默认为关闭吗?
我永远无法想到我使用git merge而不是git rebase>和 的时间.有什么方法可以配置Git默认情况下快速转发?有一个--ff选项的事实似乎暗示有办法,但是我似乎在文档中找不到它. 解决方案 是的,有--no-ff.您可以每个分支配置合并选项,例如 git config branch.master.mergeoptions "--no-ff" 将以下内容添加到您的$(REPO)/.git/config文件: [branch "master"] mergeoptions = --no-ff 脚注:说到我的经验,我最终发现快速切换到OFF对GIT新移民很有帮助 - 但是,一旦对工作流程和概念的感觉开始下沉,您肯定想避免模糊您的日志图表毫无意义 脚注2,十年后:下面的其他答案提供了更多的现代配置选项,但实际上,您可能确实想在当今时代呆在默认值(即尽可能快速前进),因为空的合并合并实际上只会使历史更难推理. 其他解决方案 似乎在线程中仍然
10 2023-08-02
编程技术问答社区
如何在GitHub上进行快进式合并?
因此,我的一位同事试图使用github在Web-Interface中使用GitHub的"通过快进"选项合并一个分支,以使历史记录从Bogus Merge consits中保持清洁(他们合并的master分支已将其合并为由于启动了合并的功能分支,因此没有进展). 有趣的是,这无法正常工作:所有提交都有新的订单. 经过仔细检查,似乎合并选项实际上被称为" rebase and Merge",它似乎确实具有相当于git rebase --force>的同等学历,更改了 committer 信息(都是合并以及合并发生的时间). 我花了很多时间来确认我的怀疑确实是这种情况,因为我无法制作CMDline工具来向我展示功能分支上的原始提交与看似相同的提交之间的区别(有了主分支上的不同哈希. (最后,我发现gitk同时显示了提交和作者的作者;在中,我发现我也可以通过git log --pretty=raw获得此信息) so: 是否有一种方法可以通过GitHub的Web-In
20 2023-04-26
编程技术问答社区
git fast-forward one commit
* 9dbd857 (hotfix-correct-java-jdk-path, feature/add-ansible-galaxy-requirements-file) requirements.yml: adds maven and nodejs requirements * 1643619 (QOL-1640-enable-vpc-peering) roles/ansible-linux-commons: change value of hostname in cloud-init * b5fd2a4 roles/bamboo-agent: add bitbucket ssh host key to /etc/ssh/ssh_known_hosts * d5cc1f7 vpc cfn template: produce outputs conditionally * 3b87efe vpc cfn template: use csv for subnet/AZ mapping *
22 2023-04-22
编程技术问答社区
防止主分支的提交
(为简单起见)我的git存储库中有一个master dev.我想确保master分支始终工作,因此我所做的所有工作都应在dev分支中. 但是,当我将更改与--no-ff合并合并时,我倾向于留在master分支中,然后继续在其中工作(因为我忘记了结帐我的dev分支). 我可以为master分支制定规则,哪个分支机构我不能进行,并快速合并,但只有--no-ff从另一个分支合并? 这必须适用于私人托管存储库(ergo,而不是github或bitbucket). 解决方案 是的,这是可能的.您必须创建一个预先承诺的钩子,该挂钩拒绝对主分支的承诺.当您调用 Merge 命令时,git不会调用前签名挂钩,因此此挂钩只会拒绝常规提交. 转到您的存储库. 创建一个文件, .git/hooks/pre-commit ,其中包括以下内容: #!/bin/sh branch="$(git rev-parse --abbrev-ref HEAD)" if [ "$
14 2023-04-22
编程技术问答社区
`-no-ff`标志对`git merge`有什么影响?
使用gitk log,我无法发现git merge和git merge --no-ff的效果之间的区别.如何观察差异(使用git命令或某些工具)? 解决方案 --no-ff标志预防git merge如果它检测到您的当前HEAD是您要合并的提交的祖先,则执行"快速前向".快速前进的是,Git不是将您的分支指针移动到传入的提交时,而不是构建合并提交.当做git pull而没有任何局部更改时,通常会发生这种情况. 但是,有时您想防止这种行为发生,通常是因为您想维护特定的分支拓扑(例如,您在主题分支中合并,并且想在阅读历史记录时确保它看起来像这样).为此,您可以通过--no-ff flag和git merge will 始终构建合并而不是快进. 类似地,如果要执行git pull或使用git merge以明确快速向前,并且如果无法快速向前,则需要纾困,那么您可以使用--ff-only>旗帜.这样,您可以定期执行git pull --ff-only之类的事情,而无需思考,然后如
6 2023-04-22
编程技术问答社区
Git Merge --no-ff 会复制提交的内容
我今天有一个好奇的git行为,我想问这是否正常.现在,这是情况(新提交被添加到底部): br1 br2 A \ B C D 现在,当我做 时 git checkout br1 git merge --no-ff br2 它变得像这样(请阅读至下降;最新提交是'e') br1 br2 A | \ | B | C | D | / E 好的..现在,奇怪的是;现在我称为" git状态";它说我在远程分支之前4投入.这是怎么发生的?我不应该只是一个提交吗? 奇特的事情是,当我从藏匿处检查(基本上是Git Web UI)时,它确认了此" 4提交"状态,而我在" BR1"和" BR2"下看到了相同的提交(B C和D)两者... 我假设在使用" --- fff"参数时,以" br2"(b c d)的提交不会复制到" br1",而只能合并提交.我在这里误会了吗? 解决方案
12 2023-03-26
编程技术问答社区
Aptana: 没有快进的 Git 合并
如何禁用快速向前的分支3? 中的分支 示例: 创建/结帐一个分支(FOO) 提交更改 结帐大师 与foo合并 解决方案 将其设置在项目存储库配置 git config --add merge.ff false 其他解决方案 我认为您最接近的是使用merge --no-ff.
8 2023-03-26
编程技术问答社区
保持Git特性分支更新的策略
我喜欢保持我的功能分支的最新开发.经常进行" git合并 - 不发展"是否有任何问题.然后在最后,运行" git Flow功能完成功能1".共享这些功能分支(这意味着其他人可能正在努力,或者我在家里的计算机中开发出来),这主要是因为我喜欢知道他们被其他地方备份了.如果他们没有共享,是否会始终如一地重新选择? 或者最好不要将功能分支保持最新,而只是将所有内容合并到最后? 解决方案 如果您的分支不公开,则通过rebase进行更新是最好的方法.如果他们是公开的,那么最好在最后合并它们(而不是始终如一地合并其中的更改).两种策略都保持简单,干净的提交和合并历史. 其他解决方案 是的,我认为始终如一的重新打击将是首选方法. git-flow当前有一个有能力达到此目的的命令(不确定问问题时是否在此命令中):git flow feature rebase . 其他解决方案 这是我为更强大版本改编的git-flow的方式: /p> ymmv
12 2023-03-26
编程技术问答社区
git merge with -no-ff and -squash
我正在使用git流的方式来管理我的存储库中的分支机构,如: 因此,我应该使用的命令序列如下: git checkout mybranch git pull --rebase origin develop git checkout develop git merge --no-ff mybranch 但是,在某些情况下,我想做的一件事要有所不同: 我想保留我在特征分支(mybranch)上的所有提交,但是当合并到develop>中时,它们将它们集中(或挤压)成一个单个差异. 所以我认为命令的顺序应该是: git checkout mybranch git pull --rebase origin develop git checkout develop git merge --no-ff --squash mybranch 如果我将--no-ff与--squash相结合? 我会做错事吗 我犹豫要尝试一下,这源于"挤压"和"保存历史"是正交要求 - 参见挤
32 2023-03-26
编程技术问答社区
夸张 "和 "不承诺 "之间有什么区别?
应该使用哪个人隐藏微型参数? git merge --squash和git merge --no-ff --no-commit之间的唯一区别是对其他父母的拒绝? 解决方案 差异 这些选项存在于单独的目的.您的存储库的结局不同. 让我们假设您的存储库在您在主题分支上开发后是这样的: --squash 如果您结帐大师,然后git merge --squash topic; git commit -m topic,您会得到: --no-ff --no-commit 相反,如果您做git merge --no-ff --no-commit; git commit -m topic,就会得到: 隐藏微型委员会 如果您真的想隐藏(我的意思是 delete 对您的存储库),请使用--squash.因为,正如您在上图中看到的那样,如果您不挤压,您并没有真正隐藏微型承诺.此外,您通常不会将主题分支推向世界.主题分支是为了使主题成熟. 如果
12 2023-03-26
编程技术问答社区
如何防止在git中向选定的分支进行非前向推送?
我想保护我的git存储库,因此只能覆盖非主分支.有没有一种方法可以保护选定的分支? 解决方案 您可以使用 gitenterprise 用于设置每个branch权限(admin)使用细粒度的访问权限. 和git config --system receive.denyNonFastForwards true如果您需要阻止所有分支的历史记录,则将简单地完成工作. 其他解决方案 这是我为自己使用的更新钩(复制到挂钩/更新).默认情况下,此脚本拒绝所有非速度更新,但允许它们进行明确配置的分支.倒转应该很容易,因此除了主分支以外的所有人都允许所有更新. . #!/bin/sh # # A hook script to block non-fast-forward updates for branches that haven't # been explicitly configured to allow it. Based on update.sample. # Call
12 2022-10-13
编程技术问答社区
如何以编程方式快进一个单一的git提交?
我定期从git收到看起来像这样的消息: Your branch is behind the tracked remote branch 'local-master/master' by 3 commits, and can be fast-forwarded. 我希望能够在可以执行以下操作的shell脚本中编写命令: 我如何确定我当前的分支是否可以从它正在跟踪的远程分支中快进? 我该如何分辨我的分支后面有多少个"投入"? 我如何仅通过 提交快速前进,以便例如,我的本地分支从"落后3委员会"转到"后面的2个consits"? (对于那些有兴趣的人,我试图整理一个优质的git/darcs镜子.) 解决方案 如果当前提交是远程分支头的祖先,则可以将远程分支快速前进到本地分支.换句话说,如果远程分支的"单分支历史"包含当前的提交(因为如果这样做,则确定新的提交是在"当前提交"上的) 因此,确定远程分支是否可以快进的安全方法: # Conve
20 2022-10-13
编程技术问答社区
何时使用Git中的'--no-ff'合并选项
成功的git分支模型建议在合并分支时使用--no-ff: --no-ff标志使合并始终创建新提交 对象,即使可以通过快速进行合并进行合并.这个 避免失去有关功能历史存在的信息 分支和小组一起承诺,加在一起添加了 特征. […] 是的,它将创建更多(空的)提交对象,但增益是 更大的成本.不幸的是,我还没有找到一种方法 使--no-ff git合并的默认行为,但确实如此 应该是. 了解Git Workflow ,但是,建议使用 not 使用--no-ff : 因此,您添加了一个新规则:"当您在功能分支中合并时,请使用 –-no-ff强迫新提交."这完成了工作,您可以移动 上. […] --no-ff band-aid,破碎 bisect bisect 和 blame blame 神秘 您使用螺丝刀作为锤子的症状. […] 两种方法在差异方案中似乎都是合理的,但是"好实践?" 是什么. 您什么时候使用--no-ff,什么时候不,为什么? 解决方案
20 2022-10-13
编程技术问答社区
为什么git默认执行快进式合并?
来自Mercurial,我使用分支来组织功能. 自然,我也想在我的历史上看到这个工作流. 我使用git启动了我的新项目,并完成了我的第一个功能.合并该功能时,我意识到Git使用快进,即,如果可能的话,它将我的更改直接应用于主分支,并忘记了我的分支. 想对未来进行思考:我是唯一从事该项目的人.如果我使用GIT的默认方法(快速合并),我的历史记录将导致一个巨大的主分支. 没有人知道我为每个功能都使用了一个单独的分支,因为最终我只有那个巨大的主分支.那看起来不专业吗? 通过这种推理,我不想快速合并,也看不出为什么是默认值.有什么好处? 解决方案 快进的合并对于短寿命的分支是有意义的,但是在更复杂的历史,非fast-forward合并可能会使历史更易于理解,并使一组提交变得更容易. 警告:非fasterting也具有潜在的副作用.请查看 https://sandofsky.com/blog/git-workflow.html 避免及其"检查点"的" no-ff"打
62 2022-10-13
编程技术问答社区
Git: 防止主分支的提交
(为简单起见)我的 Git-repo 中有一个 master 分支和一个 dev.我想确保 master 分支一直在工作,所以我所做的所有工作都应该在 dev 分支中. 但是,当我将我的更改与 --no-ff 合并合并时,我倾向于留在 master 分支,并继续在其中工作(因为我忘记签出我的 dev 分支). 我可以为 master 分支设置一个规则,该规则指出我不能进行提交和快进合并,但只有 --no-ff 从另一个分支合并? 这必须适用于私有托管存储库(而不是 GitHub 和 BitBucket). 解决方案 是的,有可能.您必须创建拒绝提交到主分支的预提交挂钩.当你调用 merge 命令时,Git 不会调用 pre-commit 钩子,所以这个钩子只会拒绝常规提交. 转到您的存储库. 创建文件.git/hooks/pre-commit,内容如下: #!/bin/sh branch="$(git rev-parse --abbrev-ref
162 2022-07-19
编程技术问答社区
git: 列出远程更改
我有一个 git 远程“我的"(碰巧是一个 github 分支),它已经成功地通过 2 次提交取得了进展.我的本地主分支领先于 244 次提交(从原始 gitub 存储库中提取).因此,推动“我的"并不是快进的. 如何列出“我的"在前的 2 个提交? 解决方案 你的问题有点不清楚,但听起来你想列出远程分支上不存在于本地分支的提交.这只需使用提交范围 ..: 即可完成 # Get the most recent updates from the remote git fetch # List all commits that are in / but not in your local git log --oneline ../ 文档 来自 官方 Linux 内核 git log 文档: .. 仅显示指定的两个提
228 2022-07-19
编程技术问答社区
`git merge`和`git merge --no-ff`之间有什么区别?
使用 gitk log,我无法发现两者之间的区别.如何观察差异(使用 git 命令或某些工具)? 解决方案 如果 --no-ff 标志检测到您当前的 HEAD 是您提交的祖先,则它会阻止 git merge 执行“快进"'正在尝试合并.快进是当 git 不构造合并提交时,只是将您的分支指针移动到指向传入的提交.这通常发生在没有任何本地更改的情况下执行 git pull 时. 但是,有时您希望防止这种行为发生,通常是因为您想要维护特定的分支拓扑(例如,您正在合并一个主题分支,并且您希望确保它在阅读历史记录时看起来像这样).为此,您可以传递 --no-ff 标志,而 git merge 将 总是 构造一个合并而不是快进. 类似地,如果你想执行一个 git pull 或使用 git merge 来显式地快进,并且你想在它不能快进的情况下退出,那么你可以使用 --ff-only旗帜.这样您就可以不假思索地定期执行 git pull --ff-only 之类的操作,然后如果出错
254 2022-07-19
编程技术问答社区