20200331のGitに関する記事は5件です。

Dockerコンテナ内でGitコマンドを実行しようとすると「Operation not permitted」というエラーが出るときの対応

環境

  • Windows10 Pro 64bit
  • VSCode 1.43.2
  • Docker for Desktop 2.2.0.4
  • VSCode Remote-Containers使用

エラー内容

bash-5.0# git status
fatal: failed to read object xxxxxxxxx: Operation not permitted

対処方法

エクスプローラーで該当プロジェクトの.gitフォルダのプロパティを開き、
Read-only (読み取り専用)のチェックを外すと問題なくGitコマンドが実行できるようになります。

image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

リモートブランチをローカルに持ってくる

既存プロジェクトにアサインされたときすでに存在するリモートブランチをローカルにもってきたい

git checkout -b dev origin/dev

dev の部分はローカルのブランチ(自分で命名)
origin/dev の部分はリモートのブランチ

git branch -a

でリモートのブランチを確認できます

q で抜けれます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git コマンド長すぎてめんどくさい問題を解決する方法

Git を扱う際に、checkoutbranchcommitstatus などを使用しますが、これが長くて打つのだるいなぁと思ったことはないでしょうか。そんなめんどくささは「Git エイリアス」を使うと解決することが出来ます。

Git エイリアスとは

  • Git コマンドを別名で実行(入力)できるもの
  • コマンドを短縮化できるので入力が非常に楽になるもの

というくらいの理解で OK でしょう。

設定方法

設定方法は超シンプルで、コマンドで実行する方法と .git/config ファイルへ書き込むする方法があります。

コマンドで設定する方法

以下のコマンドを実行するのみです。

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status

このような設定をすることで、例えば次のコマンドは同じ意味になります。

(設定前) git checkout
(設定後) git co

Config ファイルを書く方法

./git/congig ファイルを開き、以下の様に記載します。

[alias]
co = checkout
br = branch
ci = commit
st = status

エイリアスを確認する方法

ファイルを直接開いて確認するのは面倒なので、以下 Config コマンドで確認することが出来ます。

git config --get-regexp alias

例えば、上述4つの Config コマンドを実行したあとで、git config get を実行すると以下のような形になります。

C:\Users\komiyasa>git config --get-regexp alias
alias.co checkout
alias.br branch
alias.ci commit
alias.st status

簡単にショートカットのような Alias を設定することができました。

参考

Git の基本 - Git エイリアス
gitで登録したaliasコマンド一の覧や内容をイイ感じに確認できるようにしてみた

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git clone プロジェクト名のディレクトリを作成したくない

git cloneするとデフォルトでプロジェクト名のディレクトリができる

  • デフォルト実行
$ git clone https://127.0.0.1/TEST/example.git
$ ls -l
example
  • ディレクトリを作成せずclone
$ git clone https://127.0.0.1/TEST/example.git ./
$ ls -l
readme.md
sourcefiles

※プロジェクト直下のファイルが配置される

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bitbucketのpipelinesでgit describeでエラーにならないようにする

はじめに

普段 kotlin で開発しているのですが、ビルドに時間がかかって困っています。
なので、bitbucketのpipelinesで自動的にbuildして、s3に上げて、それを使おうとしたのですが、tagを付けてもgit describeがpipelines上ではエラーになってしまいます。
ローカル環境ではエラーにならないのに全然理由がわからずに困っていたのですが、やっと解決したので共有します。

git describeでエラーになる理由

pipelinesのBuld setupに秘密がありました。

ログをみると以下のようになっているかと思います。

+ umask 000
+ GIT_LFS_SKIP_SMUDGE=1 retry 6 git clone --branch="master" --depth 50 https://x-token-auth:$REPOSITORY_OAUTH_ACCESS_TOKEN@bitbucket.org/$BITBUCKET_REPO_FULL_NAME.git $BUILD_DIR
Cloning into '/opt/atlassian/pipelines/agent/build'...

--depth 50を指定していることにより、タグを付けたところまでcloneしてくれないのが原因でした。

どうすれば

--depth 50を指定しなければよいので、cloneのオプションを指定します。

bitbucket-pipelines.yml
image: build用docker-image

clone:
  depth: full

pipelines:
  以下略

これで無事にtagを付けたcommitもcloneされます。

+ umask 000
+ GIT_LFS_SKIP_SMUDGE=1 retry 6 git clone --branch="master" https://x-token-auth:$REPOSITORY_OAUTH_ACCESS_TOKEN@bitbucket.org/$BITBUCKET_REPO_FULL_NAME.git $BUILD_DIR
Cloning into '/opt/atlassian/pipelines/agent/build'...

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む