2017-08-28 18 views
1

私はGitブランチを貢献するユーザから、~のチルダ記号で、UNIXのようなオペレーティングシステムでホームフォルダを参照するのに使われた表記法に似ていますが、Gitはエラーでブランチ作成を中止することを禁止します私が決めた代替表記として今のところなぜ `〜`チルダ記号は有効なGitブランチ名の一部ではありませんか?

$ git checkout -b '~' 
fatal: '~' is not a valid branch name. 
$ git checkout -b '~bar' 
fatal: '~bar' is not a valid branch name. 
$ git checkout -b 'foo~' 
fatal: 'foo~' is not a valid branch name. 
$ git checkout -b 'foo~bar' 
fatal: 'foo~bar' is not a valid branch name. 

:次のコマンドのメッセージfatal: '~' is not a valid branch name.貢献者からのブランチ名が~alice/feature/fooのようになります、~bob/bugfix/barなど

なしGitのバージョン2.14.1で動作しません@a私の目的のための共通接頭辞としての記号はです。しかし、私はちょっと変わった文字を、-ハイフン以外のブランチ名の一部にすることを考え直しているし、Git自体や基礎ファイルシステムによって課せられる可能性のある制限のために、区切り記号として_が単語区切り記号として使われている例えばチェックアウトされて保存されます。

+0

重複する質問のリンクをもう一度見直す必要があります。 gitのブランチ名は実際にはフォルダです。 〜はUNIXシステムのホームディレクトリを意味します。したがって、そのフォルダは既に存在しているので、gitはそのようなブランチを作ることができません。このQ&Aにはいくつかの詳細がありますhttps://stackoverflow.com/questions/2527355/using-the-slash-character-in-git-branch-name/2527452#2527452 –

+0

@Eyorther '〜'はlinuxの完全なディレクトリ名です。 'mkdir \〜'は魅力的に機能します。 – YSC

+1

@コードキャスター私は、この質問を再開するために投票しました。1 /提案された複製には存在しない情報で回答に努力しました.2 /これは完全な複製ではありません:OPは禁止されている理由禁止されています。 – YSC

答えて

2

The rules for reference names are given in the git check-ref-format manual page。参照を解析するとき、彼らは構文上の項目であるため、チルダ~、カラット^、そしてコロン:文字が禁止されています:master~3手段は、例えば、masterポイントこれにコミットから戻って最初の3人の親をカウントし、HEAD:path/to/blobファイル(ブロブ)であります現在のコミット内でこの文字はコミットの親を参照するために使用されているので

+0

しかし、Gitがブランチ名の特殊文字に関して非常に厳格であった場合、 '@' * at *記号を禁じるのはなぜですか? '@'はシンボリックリファレンス 'HEAD'の略ですから? –

+2

実際、 '@' -as-a-whole *は*禁止されています(ルール9)、 '@ {'も禁止されています(ルール8)。 'this〜that'は定義された意味を持たず、' this〜 'だけなので、ルールは '〜'とそれに続く数字(または文字列の終わり)を禁じるために緩和することができます。しかし、おそらくWindowsのために、Gitは今のところ他の方向に向かいつつある(より多くの制限を加える)ようだ。 – torek

4

Gitの参照(タグやブランチ)はチルダ(~)を含むことが禁止されている:

  • ref~ref~1の省略形ですとref年代を意味し、最初の親;
  • ref~2は、refの第2の親を意味する。
  • ...

Gitの構文でチルダとキャレット(^)の役割の簡単な要約のためのポールBoxleyのGit caret and tilde記事をチェックしてください。

最後に、official documentationにcommitを参照するためのgit構文に関するすべてのドキュメントがあります。

+0

なぜdownvote? – YSC

+0

私はOPが答えを気に入らないと思う(それは正しいが)。私の答えのコメントには*大きな理由はないかもしれませんが、それは*元の理由です。 – torek

関連する問題