20200101のGitに関する記事は4件です。

git configコマンドを実行しようとしたらxcrun: errorになった

エラー内容

githubのUserNameを変更したので、ローカルのUsernameも変更しようとしたら下記のエラーが出た。

$ git config --global user.name 'NewUserName'
xcrun: error: active developer path ("/Users/User/Downloads/Xcode.app/Contents/Developer") does not exist
Use `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line developer tools.
See `man xcode-select` for more details.

エラー文をそのままコピペして調べると、xcode-select --installしなさいと出たので実行。

$ xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

またエラーに。
再びググると、XCodeのCommand Line Toolsのパスを修正する必要があることがわかった。

パス修正手順

  1. $ xcode-select -p

「/Library/Developer/CommandLineTools」と表示されれば正常。
「/Applications/Xcode.app/Contents/Developer」と表示されたらパスがおかしいので2へ。

2.sudo xcode-select -switch /Library/Developer/CommandLineTools を実行
3. 再度xcode-select -pを実行。
4. 「/Library/Developer/CommandLineTools」と出力されることを確認

上記対応後、無事git configできるようになった。

ついでに

GitのUserNameを変更した場合のローカルの修正

UserNameの修正

$ git config --global user.name 'newUserName'

$ git config --global -lで確認。

リポジトリURLの修正

$ cd ローカルリポジトリ
$ git remote -v

# 変更前
origin  git@github.com:oldName/repository_name.git (fetch)
origin  git@github.com:oldName/repository_name.git (push)

$ git remote set-url origin git@github.com:new_name/repository_name.git
$ git remote -v

# 変更後
origin  git@github.com:newName/repository_name.git (fetch)
origin  git@github.com:oldName/repository_name.git (push)

pushの方がoldNameになっていたため下記を実行

$ git remote set-url --push origin git@github.com:new_name/repository_name.git
$ git remote -v

# 変更後
origin  git@github.com:newName/repository_name.git (fetch)
origin  git@github.com:newName/repository_name.git (push)

無事どっちも修正された。

参考

https://techracho.bpsinc.jp/hachi8833/2016_09_09/25454
https://dangerous-animal141.hatenablog.com/entry/2014/05/05/000000

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

(初心者向け)コードをgitで管理する方法 gitのインストールから〜

概要

 この記事は初心者の自分がRESTfulなAPIとswiftでiPhone向けのクーポン配信サービスを開発した手順を順番に記事にしています。技術要素を1つずつ調べながら実装したため、とても遠回りな実装となっています。

 前回のDjangoのテンプレート機能を使ってみるまでに作ったシンプルなwebAPIをここから改造します。しかしできれば改造前のコードをそれぞれ保存し、コードを壊した際に戻したり、他の目的に流用できるようにしたいです。ただし単にコードをコピーして保管するのは管理が煩雑になる。そこでgitを活用してコードのバージョン管理を行います。

参考

環境

Mac OS 10.15

手順

  • 開発マシンにGitをインストール
  • プロジェクトフォルダをgitのローカルリポジトリにする
  • githubにamiAppのプロジェクトを作成

開発マシンにGitをインストール

既にGitがインストールされていないか確認する。

$ git ―version

自分の場合、既にgitがインストールされていました。Xcodeと同時にインストールされるようなので、とりあえずこれを使います。
check-git-version.png

インストールする場合、macでしたらbrewでインストール出来ます。

$ brew update
$ brew install git

プロジェクトフォルダをgitのローカルリポジトリにする

ローカルのプロジェクトディレクトリ …/amiApp/ami_coupon_api をgitのローカルリポジトリにします。ターミナルでami_coupon_apiディレクトリに移動して、以下のコマンドを実行するだけです。

$ git init

githubにamiAppのプロジェクトを作成

githubをリモートリポジトリとして利用するので、githubのアカウントを作ってサインインします。
サインインしたら、左側のフレームの「Repositories」の右側の「New」ボタンを押して、リポジトリ作成画面に進みます。
signin-github-mark.png

リポジトリ作成画面でリポジトリ名や説明などを入力して、Create repositories ボタンを押すとリポジトリが作成されます。今回はこんな設定にしました。

リポジトリ名:ami_api
説明:webAPI(python)とネイティブアプリ(swift)の連携を学習するために作った居酒屋アプリ。クーポンの配信などが出来ます。
Private/Public: Public (コードが公開されます。もともと公開する予定なのでPublicにしています。)

これまでに作成したコードをコミット対象ファイルにする

git add コマンドでgitで管理したいディレクトリ、ファイルをコミット対象に設定します。

対象のプロジェクトのディレクトリでgit statusコマンドを実行し、状況を確認します。コミット対象にしていないファイルとディレクトリが赤く表示されます。まだ1つもaddしていないので真っ赤です。
check-gitstatus-001-mask.png

下記のコマンドでami_coupon_amiをコミット対象にします。

$ git add ami_coupon_api/

git status コマンドで確認すると、ami_coupon_apiディレクトリ配下のファイルがコミット対象に追加されて緑になっています。
git-local-add.png

他のファイルも同じ要領でコミット対象に追加します。全てのファイルを一括で追加する場合は、下記のコマンドを使います。

$ git add --all

現時点の資材をローカルリポジトリにコミットする

ここまでに開発した内容を残すため、まずは自分のPCに作ったローカルリポジトリへコミットします。まずは誰がコミットしたか分かるように、ユーザ名を登録します。

$ git config --global user.name “ユーザ名”

登録した名前は git config ―list コマンドで確認できます。

次にローカルリポジトリへコミットします。コミットする際は-mオプションで、コメントを残します。

$ git commit -m “コメント本文”

上手くいくとこんなレスポンスが返って来ます。
git-first-commit-mask.png
git-first-commit-log.png

リモートリポジトリにプッシュする

今の時点では自分のPC内で資材を管理している状態です。複数人で作業する場合にコードをシェアしたり、資材をバックアップするには、Githubで作成したリモートリポジトリにプッシュします。

まずは以下の手順でプッシュ先のリモートリポジトリを登録します。


  1. Githubのマイページで先ほど作成したリポジトリのURLをコピーする(ここで確認できます)
    check-repository-url-github.png

  2. git remote addコマンドでリモートリポジトリを登録する。(紐付け名は今後プッシュする際に使うので忘れないようにメモしておく)

$ git remote add [紐付け名] [Githubに作成したリポジトリのURL]

次に、git push コマンドで登録したリモートリポジトリにプッシュします。今回は初回なのでmasterブランチにプッシュします。コマンドを実行するとGithubのユーザ名とパスワードの入力を求められます

$ git push [紐付け名] [プッシュ先ブランチ]

Githubのマイページを更新して、プッシュしたコードが追加されている事を確認します。
check-pushed-at-github.png

webAPI改造のためのブランチを作成し、作成したブランチに移動する。

これからwebAPIの改造をするので、改造用のブランチを作成します。まずは既に存在するブランチを確認します。

$ git branch

check-git-branch-list-mask.png

自分の場合、存在するブランチは master のみでした。「*」の付いているブランチが現在のブランチです。

masterブランチをコピーしてapi改造用のブランチを作成します。
次はレスポンスをJson形式で返すように改造する予定なので、ブランチ名をdevelop_chengeToJsonとしました。

なお、通常の複数人での開発では git flow という標準的なブランチ運用ルールを適用する事が多いです。その場合、小中規模の変更についてはdevelopブランチではなく、その更に枝分かれした feturebacklogというブランチ名で管理しますが、自分の場合は1人で開発なので、developブランチをどんどん作成して改造していく事とします。

コピー元のブランチにいる状態で、下記のコマンドを実行します。

$ git branch [コピーして作成するブランチ名]

新しいブランチdevelop_changeToJason)が出来ました。
git-make-new-branch-mask.png

作成したブランチに移動する時は、以下のコマンドを使います。

$ git checkout [作成したブランチ名]

ちなみに、checkoutコマンドに-bオプションを付けると新しいブランチの作成と同時に作成したブランチに移動出来ます。恐らく通常はこちらのコマンドを使う方が多いと思います。

$ git checkout -b [コピーして作成するブランチ名]

作成したapi改造用ブランチをリモートに登録する。

ローカルリポジトリに新しいブランチを作成したので、リモートにプッシュします。

git push [紐付け名] [作成したブランチ名]

なお、-u オプションをつける事で次回から[紐付け名]を省略が出来ます。

git push -u [紐付け名] [作成したブランチ名]

Githubのマイページを更新すると develop_chengeToJson ブランチが増えています。
check-new-branch-at-github.png

以上です。

次回は、JSON形式でレスポンスをするwebAPIを作成します

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

.gitconfig でコマンド引数を使えるエイリアス登録をするにはシェル関数を定義すると良いらしい - #git tips

.gitconfig

  • シェルの関数で実現する
  • エイリアスの中でだけ一時的に利用するシェル関数を定義する、名前はなんでも良いがここでは1文字のfとする
  • 定義した後にすぐシェル関数 f を呼び出す
  • f の後には何も記述しない、するとコマンド引数が暗黙的に git コマンドに渡される <- ここがポイント
  • f は使い回し可能、複数のエイリアスで別の関数名をつける必要はない

git checkout して Hello とか Wow とか標準出力する、特に意味のない例

[alias]
  checkout-and-say-hello = "!f() { git checkout \"$1\" && echo Hello; }; f"
  checkout-and-say-wow = "!f() { git checkout \"$1\" && echo Wow; }; f"

Run

$ git checkout-and-say-wow master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Wow
$ git checkout-and-say-hello master
Already on 'master'
Your branch is up to date with 'origin/master'.
Hello

Ref

command - Git alias with positional parameters - Stack Overflow
https://stackoverflow.com/questions/3321492/git-alias-with-positional-parameters

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2897

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

gitブランチを作成しようとしたら『fatal: 'origin/ブランチ名' is not a commit and a branch 'ブランチ名' cannot be created from it』となった

事象

ローカルに下記のようなgit環境がある。

$ git branch -a
* master
  remotes/origin/feature
  remotes/origin/master

ここで、git checkoutコマンドでorigin/featureからfeatureブランチを作成してチェックアウトしようとしたら下記のようなエラーとなった。

$ git checkout -b faeture origin/faeture
fatal: 'origin/faeture' is not a commit and a branch 'faeture' cannot be created from it

解決

ブランチ名のtypoだった。エラーも「リモートにそんなコミットはないからブランチは作られなかったよ」と言っている。

  • 誤:git checkout -b faeture origin/faeture
  • 正:git checkout -b feature origin/feature
$ git checkout -b feature origin/feature                      
Branch feature set up to track remote branch feature from origin.
Switched to a new branch 'feature'

チェックアウトできた。

以上

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