我有一个名为Atomics的开发分支(更准确地说,atomics
).它完成了开发.它测试好了,所以它被合并到Master.我现在准备完全删除它,因为它不再需要它.
我真的认为这个问题很明确并且回答得很好:在本地和远程删除Git分支.唉,它不起作用......
这是我做的:
# Accepted answer, succeeded
$ git push origin --delete atomics
# Shit, it did not delete the local branch
$ git branch -a
...
* master
atomics
# Another answer. Whoops, causes an error
git push --delete origin atomics
error: unable to delete 'atomics': remote ref does not exist
# Try yet another answer:
git fetch --all --prune
# Check again
$ git branch -a
...
* master
atomics
Run Code Online (Sandbox Code Playgroud)
根据托雷克的回答:
$ git branch -d atomics
error: The branch 'atomics' is not fully merged.
# See below on the prelude that may have caused this
# (yet another Git black-hole)
# Yep, did not work
$ git fetch --prune origin
$ git branch -a
* master
atomics
...
Run Code Online (Sandbox Code Playgroud)
如果重要,这是Apple的Git:
$ git --version
git version 1.8.5.2 (Apple Git-48)
Run Code Online (Sandbox Code Playgroud)
在这一点上,我有两个问题.首先,我们如何删除实际工作的本地和远程分支?鉴于引用的问题,这似乎是多余的,但即使答案被接受,这个问题似乎也没有得到回答.
其次,我如何从这个特殊的Git状态恢复,其中部分删除的东西?
这是前奏.这--squash
是为了确保登录Master是准确的.
$ git checkout master
$ git merge --squash atomics
# These files already existed in Master, but a 'git push' after the merge
# did nothing. Also, 'git status' showed they were modified.
$ git add a.h b.h a.cpp b.cpp
$ git commit a.h b.h a.cpp b.cpp -m "Mergae Atomics into Master"
$ git push
Run Code Online (Sandbox Code Playgroud)
编辑:我接受了Torek的回答,因为这个男人太努力了,不能从中得到一些东西.不幸的是,该程序对这个问题不起作用; 当删除另一个dev分支时,它不适用于以下实验.该工具已损坏,并且没有任何可以解决问题的问答.
TL; DR:以任何顺序使用(至少)两个命令.删除本地(和/或远程跟踪,也是本地).删除远程.
在您的输出中,atomics
是一个本地分支.要删除它,请确保您没有删除它(您不是,它本来是前缀*
,这只是一般的第一步),然后用git branch -d
它来删除它.
[ 编辑以说明发生的事情的编辑评论git branch -d
:如果Git抱怨本地分支没有完全合并,Git试图告诉你可能会有一些提交你将无法访问,这是没有保存在其他地方.如果那没关系 - 如果你真的想放弃它们,或者你是想保留它们但是非常确定它们安全地保存在某个地方 - 你可以告诉Git强制删除,使用git branch -D
或git branch --delete --force
.这指示Git忽略可能被放弃的提交.结束编辑 ]
这些push --delete
东西是告诉一些其他 Git,在某个远程站点,删除他的本地分支.在其他网站上发生的事情一般不会影响您当地的东西.有一些例外,特别是git fetch
和git push
能够进行本地更改,但默认情况下没有一个会影响任何本地分行在所有的,不管是什么它成功或得到一些其他的Git做失败.
您可能还需要git fetch --prune origin
删除远程跟踪分支(尽管名称是您的存储库的本地名称).您可以改为使用git branch -r -d origin/atomics
(本地删除远程跟踪分支origin/atomics
).
归档时间: |
|
查看次数: |
2544 次 |
最近记录: |