git update-index --chmod=+x "を実行ファイルに自動で適用する
2023-09-08 04:43:40
質問
Git リポジトリに頻繁に bash スクリプトを追加するのですが、そのスクリプトは Linux ファイルシステム上で実行可能なパーミッションが
git add
. しかし、追加したファイルをリモート リポジトリにプッシュし、別の場所でプルした後、ファイルが実行不可能なパーミッションで表示されます。この問題を修正する方法は 2 つあるように思われます。
-
chmod u+x $script git commit -am "fixing the script permissions... again..."
-
git update-index --chmod=+x $script
毎回パーミッションを修正する代わりに、Gitがスクリプトのファイルパーミッションを単純に見る方法はありますか?
git add
の間にスクリプトのファイルパーミッションを見て、"これは実行可能ファイルだ!"と認識し、実行可能なパーミッションで直接リポジトリに追加する方法はありますか?
どのように解決するのですか?
いくつかの方法があります。
- Gitのエイリアス
- Bash のエイリアス
- bash と git のエイリアスを組み合わせることもできます。
-
Git エイリアス
gitのエイリアスでは常にbashを使用することができます。
-
gitの設定を開いてください。
vim ~/.gitconfig
-
aliasesセクションを追加します(存在しない場合)。
[alias] addscr = !sh -c 'if [[ ${0: -3} == ".sh" ]]; then git update-index --chmod=+x $0; git add $0'
-
-
Bashのエイリアス
-
bashのプロファイルファイルを編集します。
vim ~/.bashrc
-
ファイルの末尾に追加します。
function gitadd(){ if [[ ${1: -3} == ".sh" ]] then git update-index --chmod=+x $1 fi git add $1 } alias gitadd='gitadd'
-
-
gitとbashのエイリアスを結合する
-
bashのプロファイルファイルを編集します。
vim ~/.bashrc
-
ファイルの末尾に追加します。
function checkShellFile(){ return ${1: -3} == ".sh" } alias gitadd='checkShellFile ? git addsrcipt "$1" : && git add "$1"'
-
gitの設定ファイルを編集します。
vim ~/.gitconfig
-
aliasesセクションを追加します(存在しない場合)。
[alias] addscript = !sh -c 'git update-index --chmod=+x $0 && git add $0'
-
いずれも未検証
関連
-
[Gitラーニングノート】Gitのコンフリクト:マージする前に変更をコミットするかstashする。
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Gitで変更された複数のファイルのうち、1つのファイルだけを隠す?
-
[解決済み] macOSアップデート後、Gitが動作しない(xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
-
[解決済み] Git にファイルモード (chmod) の変更を無視させるには?
-
[解決済み] Git のコミットからファイルを削除する
-
[解決済み] Gitのプッシュを正しく強制する方法は?
-
[解決済み] WindowsのGitでファイルの実行モードのパーミッションを作成する方法は?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
git commit to GitHub エラー、プロンプト ! [リモート拒否] master -> master (pre-receive hook declined) エラー: 失敗しました。
-
Git Bashが致命的に表示される:この操作は作業ツリーで実行する必要がある
-
git を使用してリモートリポジトリを更新する場合、現在のブランチの先端がエラーの背後にあるため、更新が拒否されました。
-
Git学習まとめ(2)コミットには何も追加されていないが、未追跡のファイルは存在する
-
[解決済み] WindowsのGitでファイルの実行モードのパーミッションを作成する方法は?
-
[解決済み] シングルブランチクローンを「元に戻す」方法は?
-
[解決済み] なぜgit AuthorDateはCommitDateと違うのですか?
-
[解決済み] Gitでは、これらの言葉はどのような意味ですか?リポジトリ、フォーク、ブランチ、クローン、トラック?
-
[解決済み] Git git reset」後にコミットメッセージを再利用/保持するには?
-
[解決済み] 別のユーザーでコードをコミットするにはどうすればよいですか?