我在Git中有一个存储库.我做了一个分支,然后对主人和分支做了一些改变.
然后,几十次提交之后,我意识到分支处于比主设备好得多的状态,所以我希望分支"成为"主设备并忽略主设备上的更改.
我无法合并它,因为我不想在master上保留更改.我该怎么办?
额外:在这种情况下,'old'主服务器已经被push
转到另一个存储库,例如GitHub.这怎么改变了?
不知何故,我的主人和我的起源/主人分支已经分道扬.. 我实际上不希望它们分歧.如何查看这些差异并"合并"它们?
我有master
跟踪远程分支的分支origin/master
.
我想将它们重命名为master-old
本地和远程.那可能吗?对于跟踪的其他用户origin/master
(以及经常更新其本地master
分支的用户git pull
),重命名远程分支后会发生什么?他们git pull
仍然会工作还是会抛出一个它再也找不到的错误origin/master
?
然后,继续,我想创建一个新的master
分支(本地和远程).再说一次,在我这样做之后,如果其他用户这样做会发生什么git pull
呢?
我想这一切都会带来很多麻烦.是否有一种干净的方式来获得我想要的东西?或者我应该保持master
原样,并创建一个新的分支,master-new
然后继续在那里工作?
我有一个带有2个分支的git存储库:master和test.
主分支和测试分支之间存在差异.
两个分支都承诺所有更改.
如果我做:
git checkout master
git diff test
出现一个充满变化的屏幕,显示出差异.我想合并测试分支中的更改,所以:
git merge test
但得到消息"已经是最新的"
但是,检查每个不同分支下的文件清楚地显示了差异.
这里有什么问题,如何解决?
我有一个存储库,它有一些不好的提交(本例中为D,E和F).
ABCDEF主和原点/主
我专门用一个修改了本地存储库git reset --hard
.我在重置之前选了一个分支,所以现在我有一个看起来像的回购:
A-B-C master
\ D-E-F old_master
A-B-C-D-E-F origin/master
Run Code Online (Sandbox Code Playgroud)
现在我需要这些糟糕提交的一些部分,所以我选择了我需要的位并做了一些新的提交,所以现在我在本地有以下内容:
A-B-C-G-H master
\ D-E-F old_master
Run Code Online (Sandbox Code Playgroud)
现在我想把这种状态推到远程仓库.但是,当我尝试做一个git push
Git时,礼貌地给我刷掉了:
$ git push origin +master:master --force
Total 0 (delta 0), reused 0 (delta 0)
error: denying non-fast forward refs/heads/master (you should pull first)
To git@git.example.com:myrepo.git
! [remote rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@git.example.com:myrepo.git'
Run Code Online (Sandbox Code Playgroud)
如何让远程仓库获取本地仓库的当前状态?
我正在尝试更新GitHub上的Git存储库.我做了一些更改,添加了它们,然后尝试做了一个git push
.回复告诉我一切都是最新的,但显然不是.
git remote show origin
Run Code Online (Sandbox Code Playgroud)
用我期望的存储库响应.
为什么当存在在存储库中看不到的本地提交时,Git告诉我存储库是最新的?
[searchgraph] git status
# On branch develop
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Capfile
# config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)
[searchgraph] git add .
[searchgraph] git status
# On branch develop
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: Capfile
# …
Run Code Online (Sandbox Code Playgroud) 我遇到了硬盘故障导致Git存储库的某些文件损坏.运行时,git fsck --full
我得到以下输出:
error: .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack SHA1 checksum mismatch
error: index CRC mismatch for object 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid code lengths set)
error: cannot unpack 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid stored block lengths)
error: failed to read object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa at offset 276988017 from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack
fatal: object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa is corrupted
Run Code Online (Sandbox Code Playgroud)
我有存储库的备份,但包含包文件的唯一备份已经损坏了.所以我认为我必须找到一种方法从不同的备份中检索单个对象,并以某种方式指示Git生成一个只有正确对象的新包.
你能否告诉我如何修复我的存储库?
我有一个分支demo
,我需要与master
分支合并.我可以使用以下命令获得所需的结果:
git pull origin demo
git checkout master
git pull origin master
git merge demo
git push origin master
Run Code Online (Sandbox Code Playgroud)
我唯一关心的是,如果有任何合并问题,我想告诉git
覆盖master
分支中的更改而不给我合并提示.因此,demo
分支中的更改基本上应该自动覆盖master
分支中的更改.
我环顾四周有多种选择,但我不想冒险合并.
我正在使用Git来跟踪我的文档乳胶来源.我想让master分支中包含适合最终用户发布的文档,所以当有人需要时,我可以切换到master分支,编译并分发文档.
当手册需要重大更新时,我会创建新分支.但是,当手册获得批准后,它需要合并回主人手中.当从分支合并到master时,我想将一些命令传递给Git说:"忘记合并,只需使用分支中的文件覆盖master中的文件." 有没有办法做到这一点?具体来说,我想避免每次都打开合并工具.提前致谢.
我刚开始一个新项目,我正在使用GitLab和SourceTree.我创建了一个分支(origin\master),但是我错误地将这个分支用于我的开发,所以我将我的前几个更改推送到了这个分支.现在我了解到这个分支实际上应该有生产版本,并且应该使用origin\develop分支进行开发.
有没有什么办法可以将master分支重命名为origin\develop,并以某种方式使用原始版本的应用程序创建一个新的origin\master分支?
我是项目中唯一的开发人员,因此不会影响任何人.如果可能的话,如果你可以解释如何在SourceTree中这样做,因为我不使用命令行git.我对SourceTree比较熟悉.
git ×10
merge ×3
branch ×2
corruption ×1
dvcs ×1
git-branch ×1
github ×1
gitlab ×1
sourcetree ×1