草庐IT

git - 如何配置 "git pull --ff-only"和 "git merge --no-ff"

对我来说,一个典型的git工作流程是克隆一个远程存储库并使用gitpull来保持它是最新的。我不想在pull时merge提交,所以我使用--ff-only选项。我还为特色工作创建了本地分支机构。我想保留分支历史记录,所以当我将本地分支merge回我的本地克隆时,我使用--no-ff选项。我如何配置git以默认使用这些选项?目前我的.gitconfig看起来像这样:[merge]ff=false[pull]ff=only但是,gitpull(实际上是gitfetch和gitmerge)似乎选择了merge选项并因此创建了merge。 最佳答案

git - 如何实现不允许的 `git --no-ff --ff-only`

作为我们的rebase-heavy工作流程的一部分,我希望在master分支上使用merge。特别是,我只想在主题分支重新基于最近的主提交时才merge,从而使任何merge成为快进的merge。我可以通过使用:gitmerge--ff-only此外,我想记录主题分支与空提交的集成,这就是为什么我想使用--no-ff强制该行为的原因:gitmerge--no-ff不过,我真正想要的是两者的结合:仅在微不足道时merge,但无论如何让我记录下来。Git认为致命:不能将--no-ff与--ff-only结合使用。这对某些人来说似乎是不言而喻的。gitmerge--edit--no-ffto

git - .gitignore : Ignore one specific directory and that one only

这个问题在这里已经有了答案:HowtoexcludefileonlyfromrootfolderinGit(5个答案)关闭9年前。我有这个目录结构./bin/./sometool/bin/...以及其他一些文件和目录。如果我想避免跟踪java类文件,我应该将其添加到.gitignore文件中:bin/但是,这似乎也忽略了路径./sometool/bin这是否正确,如果正确,我如何获得我想要的行为。

git - git rebase 和 git merge --ff-only 之间有区别吗

从我读到的内容来看,它们都帮助我们获得了线性历史。根据我的实验,rebase一直有效。但是merge--ff-only只适用于可以快进的场景。我还注意到,gitmerge创建了一个merge提交,但是如果我们使用--ff-only,它会给出一个线性历史,基本上等于gitrebase。所以--ff-only扼杀了gitmerge的目的,对吧?那么它们之间的实际区别是什么? 最佳答案 请注意gitrebase与gitmerge的工作不同(有或没有--ff-only)。什么rebase所做的是获取现有的提交并复制它们。例如,假设您在bra

git - 如何在 git 中执行 "local-only commit"?

我正在使用git,我希望能够创建一个不与远程存储库同步的提交。这样的提交必须“float”在本地存储库中的所有其他提交之上,以避免影响历史记录。我可以使用这样的提交来存储特定于本地的更改(配置更改、调试标志、本地解决方法等)。目前,我在提交时手动rebase以将提交重新排序回顶部,并且我使用HEAD^推送以避免推送本地更改。我也考虑过将更改放入存储中,但这不太方便,因为它妨碍了存储的正常使用。另一种选择是简单地保留所有这些本地更改未暂存,并在每次我想提交时使用gitadd-p。然而,随着大量琐碎的本地更改,这变得很麻烦。这是我当前工作流程的示例:我的仓库最初看起来像A---B---C-

git - `--squash` 和 `--no-ff --no-commit` 有什么区别?

应该使用哪一个来stash微提交?gitmerge--squash和gitmerge--no-ff--no-commit之间的唯一区别是其他parent的拒绝吗? 最佳答案 区别这些选项的存在是为了不同的目的。您的存储库以不同的方式结束。假设您在主题分支上完成开发后,您的存储库是这样的:--squash如果你checkoutmaster然后gitmerge--squashtopic;gitcommit-mtopic,你得到这个:--no-ff--no-commit相反,如果你执行gitmerge--no-ff--no-commit;

git - 如何使 git merge 的默认设置为 --no-ff --no-commit?

公司政策是使用--no-ff进行merge提交。我个人喜欢调整merge日志消息,所以我使用--no-commit。另外,我喜欢在提交之前实际编译和测试。如何使--no-ff和--no-commit成为所有分支的默认值?(自从提出这个问题以来,我已经了解了这些年,我几乎总是对提交感到满意,因此允许它默认提交更简单,只要我在执行之前修改或以其他方式修复问题push一切都很好...) 最佳答案 把它放在$HOME/.gitconfig中:[merge]ff=nocommit=no您可以使用git-config来执行此操作:gitconf

Git diff --name-only 并复制该列表

我只想获取两次修订之间更改的文件列表,这很简单:gitdiff-–name-onlycommit1commit2>/path/to/my/file但是,如果我想将所有列出的文件复制到另一个地方,我应该怎么写呢?我需要完全相同的目录结构来复制文件。比如我修改和添加了文件:/protected/texts/file1.txt/protected/scripts/index.php/public/pics/pic1.png我想在/home/changes/中包含所有更改和添加的文件:/home/changes/protected/texts/file1.txt/home/changes/pr

git - `--no-ff` 标志对 `git merge` 有什么影响?

使用gitklog,我无法发现gitmerge和gitmerge--no-ff的效果之间的区别。我如何观察差异(使用git命令或某些工具)? 最佳答案 --no-ff标志阻止gitmerge在检测到您当前的HEAD时执行“快进”您尝试merge的提交的祖先。快进是,git不构建merge提交,而是将分支指针移动到指向传入的提交。这通常发生在没有任何本地更改的情况下执行gitpull时。但是,有时您希望防止这种行为发生,通常是因为您希望维护特定的分支拓扑(例如,您正在merge主题分支并且希望确保它在读取历史记录时看起来是那样的)。为

linux - 用于创建名称从 00 到 ff 的文件夹的 bash 脚本

我想创建名称从00到ff的文件夹(总共256个文件夹),这样每个文件夹都有名称从00到ff的文件夹。我应该在我的终端上写什么?有什么建议吗? 最佳答案 printf可以将一系列数字格式化为十六进制:mkdir$(printf"%02x"{0..255})fordirin*/domkdir$(printf"$dir/%02x"{0..255})done 关于linux-用于创建名称从00到ff的文件夹的bash脚本,我们在StackOverflow上找到一个类似的问题: