我最近将一个遥控器重命名为一个新的别名,旧的别名(及其所有提交,直到重命名)仍然在日志中显示,因此gitk。运行
$ git remote show old-alias
显然会回归:
fatal: 'old-alias' does not appear to be a git repository
这很烦人。如何清除这些参考文献?如果我手动删除
,可以.git/logs/refs/remotes/old-alias/
.git/refs/remotes/old-alias/
目录?
修改
以下是git remote -v
输出:
origin git@github.com:my-user/our-repo (fetch)
origin git@github.com:my-user/our-repo (push)
upstream git@github.com:upstream-user/our-repo (fetch)
upstream git@github.com:upstream-user/our-repo (push)
以下是git log --oneline --graph --decorate
输出:
* 692d53f (HEAD, origin/somebranch, somebranch) Commit message
* 9a4e794 Commit message
* 419376b Commit message
* 9a945bd (origin/someotherbranch, someotherbranch) Commit message
* 9a0fe3b Commit message
* 021d553 Commit message
* fa60dba Commit message
* 2d52d72 Commit message
* c59307f Commit message
* b89ae1c Commit message
* 063030c Commit message
* 97b8c77 Commit message
* ec65002 Commit message
* 38d7bb8 Commit message
* 36856fc Commit message
* 13b5065 Commit message
* 66e7dae (upstream/master, origin/master, old-alias/master, master) Commit message
|\
| * caf7e86 Commit message
| * a0c5abe Commit message
| * 9d1a735 Commit message
| * 4e7770d Commit message
| * cd3dd89 Commit message
* | 3037432 Merge pull request message
|\ \
| |/
| * 12b4a01 Commit message
| * be41159 Commit message
|/
* 8210859 Commit message
* 6b2090e Commit message
* 4b069f3 Commit message
* 1ef939c Merge pull request message
|\
| * fc559bb Commit message
|/
* 6fab424 Commit message
* ce10b38 Commit message
* 345128e Commit message
old-alias
已通过origin
围绕提交2d52d72
更改为git remote rename old-alias origin
。
答案 0 :(得分:2)
此处的问题也存在类似问题:Why is old name of git remote sill in .git/refs/remotes?。根据那里的建议,我删除了
.git/logs/refs/remotes/old-alias/
.git/refs/remotes/old-alias/
手动目录。 .git/logs/HEAD
和.git/logs/refs/heads/someotherbranch
中有剩余日志:
./logs/HEAD:14:6d8019... Ayberk Özgür <ayberk.ozgur@email.com> 1394819391 +0100 pull old-alias someotherbranch: Fast-forward
./logs/refs/heads/android:13:6d8019... Ayberk Özgür <ayberk.ozgur@email.com> 1394819391 +0100 pull old-alias someotherbranch: Fast-forward
我不确切知道这些是old-alias
剩下的唯一痕迹,还是它们可能有害。但是,到目前为止我还没有遇到任何问题。
答案 1 :(得分:0)
首先,我最终得到了什么:
export REMOTE_NAME="old-alias" # insert your remote name
for branch in $(git branch -a | grep -o "${REMOTE_NAME}/.*") ; do
git branch -r -d $branch
done
我有一个非常类似的问题,尽管即使在我的.git目录中鲁莽地删除内容后 - 可能不这样做! - 我还有远程参考资料。
对我来说,诀窍是使用-r
选项来删除git分支:git branch -r -d
,如bitoiu所建议的那样(在引用的答案中)。
我将此与git br -a
结合使用,因为我有〜20个孤立的远程分支,我想循环遍历它们以删除它们。
我希望因为读者有git,grep只有-o
选项才能返回匹配的子字符串。如果没有,请使用您选择的工具修剪前导remotes/
,例如我在QNX上使用的| sed -e 's/^remotes.//'
(尽管我在QNX上没有git)。
最后,如果你更喜欢一个衬里,那么值得学习sh / bash for循环单行语法:for branch in $(git branch -a | grep -o "old-alias/.*") ; do git branch -r -d $branch ; done