A-B-C Master
\D-E Feature
Run Code Online (Sandbox Code Playgroud)
执行rebase命令后git checkout feature- > git rebase master我从feature分支机构提交的所有提交都会消失,所以我A-B-C提交了.在变基之后,feature分支看起来像master.此外,变基不会产生任何错误,但它不会显示"提交已重播"消息,我认为通常它会在变基期间显示.你知道可能导致这种行为的原因吗?
一旦我注意到我的提交消失了,我运行以下命令在git历史记录中找到丢失的代码:git rev-list --all | xargs git grep expression此命令返回了一个提交哈希,但是当我运行git log(因为rebase)时,这个哈希不存在.如果我这样做,git reset --hard missing-hash我可以feature再次看到原始(正确)代码.运行rebase master再次重现相同的问题.
编辑:我刚刚注意到我有一些额外的提交WIP on commit-message,index on commit-message当我这样做git reset --hard missing-hash时可以与它有关git stash / git stash apply
我刚刚尝试过第一次使用.gitattributes.我认为我必须做错事,因为它没有工作,因为我认为使用merge=ours属性的目的是为了(?).
我用法的一个例子:
我有两个分支; 一个是"主人",另一个是"GCE-Site"."GCE-Site"分支上的文件具有不同的设置,这些设置也存在于"master"分支上,我不想合并到"master"[或其他分支].
在这两个分支上,我有一个.gitattributes包含以下规则:
README.md merge=ours
config.php merge=ours
.gitattributes merge=ours
.gitignore merge=ours
.cache/ merge=ours
Run Code Online (Sandbox Code Playgroud)
需要规则的所有文件都在根级别加上.cache /文件夹上的所有内容.当我这样做时git merge GCE-Site,所有文件仍然在我不想要的时候合并到主服务器中.
有什么我想念的吗?非常感谢您的帮助.日Thnx
一个非常菜鸟的问题.
在我的整个项目中使用git也是好的(作为不同存储之间的同步,版本控制不是主要的一点),包括图像,pdf,Word文档,甚至可能是一些exe文件?
它如何跟踪pdf,图像,exe文件的变化,如果有的话?如果它只是因为与HEAD版本存在一些差异而存储整个更改的文件,那么在几次提交后存储库可能会变得非常大.或者它是否仍然只能保存文本文件以外的文件中的增量更改?
底线:对于大型项目的同步,git是否良好(或至少可以接受)?对我而言,如果它不比Dropbox等差,那就足够了(就最终结果而言,GUI不是问题).
我最近开始研究android开发(aosp)并阅读有关所有android子项目的"repo"工具/包装器.
虽然我认为repo在它的功能方面做得相当不错,但我想知道它是否有任何替代方案.
我认为git子模块已经足够了,但互联网上的很多帖子都不鼓励使用子模块(由于一些"缺点",我认为这些缺点根本不是缺点).
请记住,不同子项目的源代码应该有自己的版本或独立的代码库我不确定git子树是否是一个很好的解决方案.
如果有人可以指出回购或其他任何相关信息的替代方案,那就太好了.
上下文
我们正在开发一个大型软件平台,其中包括Android,Server,Web和iOS(以及其他人).为了使我们的所有代码保持最新状态,我们将它们全部保存在一个Master repo中(这非常重要,因为我们在所有平台上共享模型,因此提交可能会影响许多不同的平台).
为了处理iOS方面,我们决定将项目分解为模块化pod,以便我们可以轻松地在其他库(也包括pod)中共享它们,因此当我们发布时,我们的客户很容易将我们的api包含在其中他们现有的项目(即我们希望使用cocoapods结构获得cocoapods提供的所有好处).
为了实现这一目标,我已经为每个项目设置了私有规格仓库和pod规格.
tl; dr:我们有一个主git repo,它包含我们所有的代码(多个平台,包括多个不同的pod).我们希望保留此结构,但也能够从repo中的代码创建pod.
题
我遇到的问题是我可以找到的pod规范的所有文档说你必须使用这种格式:
spec.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git',
:tag => spec.version.to_s }
让我兴奋的唯一部分是我们的repo不仅包含一个pod(更不用说iOS代码了).
有可能做这样的事情:
spec.source = { :git => 'https://github.com/MyCompany/Master/MyCompanyCoreDir',
:tag => spec.version.to_s }
我们非常感谢任何帮助
干杯
靛青
这是场景:
git add和所有事情).git rebase --continue继续运行rebase我通常不会这样做,但这种特殊的冲突需要一些严重的重新编码,我觉得需要记录.
我该怎么做呢?我希望有某种git rebase --continue --let-me-edit-the-message-first命令,但我无法在文档中找到它
我知道:
git rebase必须将提交消息存储在某处,因为当它提交时它会将原始消息放入其中.我只想在两者之间插入我的编辑.rebase --continue,然后使用git rebase -i返回并稍后编辑有问题的提交消息.这要求我记住我在整个(可能很长)的rebase过程中提交的内容.呸.我有点惊讶,我已经找不到答案了......我希望有办法做到这一点.如果有答案,我很难找到它.我发现混淆git add等等git rm于解决变化的需要或之后(像这样),一般git rebase智慧(比如这个和这个),以及许多看似非常特定于特定情况的问题(像这样).
由于我很惊讶我找不到这个答案,所以我有一个第二个问题:是否有更好的方法来记录在rebase期间所做的更改?
像其他一些人一样,我不喜欢默认的"合并拉取请求"按钮行为,所以我在本地命令行中获取了形状,然后推回到repo.我希望能够自动将原始PR解析为"合并".
使用这里指定的魔术字符串(在这里从类似的SO问题中找到)几乎是我想要的.不幸的是,包括closes #123将PR标记为"已关闭",这本身就是"被拒绝"的同义词.
我想知道是否有一种方法可以触发您只需按下按钮时获得的相同"合并"状态(带紫色图标).
到目前为止,我已经尝试将以下内容添加到我的提交消息中,但无济于事:
closes #xyz(只设置已关闭状态和关联)Merge pull request #123 from user/fork(只是同事)我从GitHub中删除了该项目,并希望通过Android Studio重新共享(创建新的存储库),但它仍然认为我已经在GitHub上了.有没有办法重置这个?
在网上进行大量搜索的结果是pre-checkoutgit 中的钩子还没有实现.原因可能是:
我的问题在于:
我已经实现了pre-commit,post-merge和post-checkout挂钩维护每个分支不同的数据库备份.
场景:现在我提交数据库的备份时使用pre-commithook 保存在文件中.当我签出分支或合并时,使用post-merge&post-checkouthooks 恢复存储在文件中的数据库.现在的情况是,如果有人在提交和签出后对数据库进行了更改,则更改将丢失,因为数据库未备份.结帐成功,因为文件结构没有变化.
所以在这种情况下我想要一个pre-checkout钩子来处理上面场景中备份数据库的任务.
有人能帮我吗.我正在使用Git(GitHub)并尝试*.sql在gitattributes中决定将文件设置为什么.我见过人们用
*.sql diff=astextplain
*.sql diff
*.sql text=auto
Run Code Online (Sandbox Code Playgroud)
我被建议将其设置为第二个选项,但我只是想知道它与其他两个选项有什么区别.
git ×10
github ×3
android ×2
bitbucket ×2
merge ×2
rebase ×2
attributes ×1
cocoapods ×1
git-checkout ×1
git-rebase ×1
git-repo ×1
hook ×1
ios ×1
objective-c ×1
repo ×1