2017-03-29 6 views
2

gitはファイルシステムのブランチ名に基づいて(つまり、リモートのrefsフォルダ内の)ブランチ名に基づいているので、フォルダ名に許可されている文字はOSによって異なるため、問題が発生することがあります。Gitブランチ名はOSによって異なりますか?

たとえばあなたのようなMAC OS上でブランチを作成することができます。ファイル名が含まれているため

Fetch failed: fatal: Unable to create 'C:/AndroidStudioProjects/MyProject/.git/refs/remotes/origin/feature/my_special_"Splash Screen"_feature.lock': Invalid argument 

:私はWindows上でこれを取得した場合、それはつもりのようなメッセージで失敗しています

feature/my_special_"Splash Screen"_feature 

MAC OS上で許可されている間、Windows上で許可されていないアポストロップ。

Windowsで同じブランチを作成しようとすると、gitはアポストロプルを削除します。

これに関する公式のドキュメントを知っている人はいますか?また、このブランチの名前を変更する必要がありますか、回避策がありますか?

非公式のポリシーは " Legal Git branch names" に記載されている
+0

それとも、ブランチ名のみ「/」+英数字が含まれていることが、あなたはすべてのセットだ政策を採用しています。このポリシーに違反している支店が中央のリポジトリに移動しないように、自動チェックを配置することもできます。 – larsks

+0

別の問題は大文字小文字を区別することです。 Gitでは、ファイルシステムベースのファイルを使用してこれらのファイルを保存する作業をやめています。実際、ブランチファイルは '.git/packed-refs'ファイルに格納されることがよくあります。ファイル名については問題があります。それでも、@ larsksは言った。 :-)作業ツリー内のファイル名には、Unicodeのファイル名を使用し始めると同じ問題があります(あらかじめ組み合わされたコードと組み合わされたものを考えてください)。 (また、 '' 'はアポストロフィではないので、二重引用符です) – torek

答えて

3

一つ、this thread参照:

A Gitのブランチ名はできません

: ""

  • で始まるパスコンポーネントを持っています
  • ".." 二点をお持ちのASCII制御文字、 "〜"、 "^"、持っている: "と "/"
  • エンドまたはSP、どこでも
  • 終了 "" .lock \ "(バックスラッシュ)

That patch (for a better error message on invalid branch name) was not implemented

  • は含まれ"、それは一度に二重引用符が含まれていません。

    でも、ブランチ名に特殊文字を使用しないことをお勧めします。

    This comment in refs.cは公式の政策の最も近いまま:

    /* 
    * Try to read one refname component from the front of refname. 
    * Return the length of the component found, or -1 if the component is 
    * not legal. It is legal if it is something reasonable to have under 
    * ".git/refs/"; We do not like it if: 
    * 
    * - any path component of it begins with ".", or 
    * - it has double dots "..", or 
    * - it has ASCII control characters, or 
    * - it has ":", "?", "[", "\", "^", "~", SP, or TAB anywhere, or 
    * - it has "*" anywhere unless REFNAME_REFSPEC_PATTERN is set, or 
    * - it ends with a "/", or 
    * - it ends with ".lock", or 
    * - it contains a "@{" portion 
    */ 
    
  • +0

    ありがとう、私たち自身の方針をベースにするのは良いことです。 – breakline

    関連する問題