- 投稿日:2020-01-01T16:37:05+09:00
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のパスを修正する必要があることがわかった。パス修正手順
$ 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
- 投稿日:2020-01-01T10:42:57+09:00
(初心者向け)コードをgitで管理する方法 gitのインストールから〜
概要
この記事は初心者の自分がRESTfulなAPIとswiftでiPhone向けのクーポン配信サービスを開発した手順を順番に記事にしています。技術要素を1つずつ調べながら実装したため、とても遠回りな実装となっています。
前回のDjangoのテンプレート機能を使ってみるまでに作ったシンプルなwebAPIをここから改造します。しかしできれば改造前のコードをそれぞれ保存し、コードを壊した際に戻したり、他の目的に流用できるようにしたいです。ただし単にコードをコピーして保管するのは管理が煩雑になる。そこでgitを活用してコードのバージョン管理を行います。
参考
環境
Mac OS 10.15
手順
- 開発マシンにGitをインストール
- プロジェクトフォルダをgitのローカルリポジトリにする
- githubにamiAppのプロジェクトを作成
開発マシンにGitをインストール
既にGitがインストールされていないか確認する。
$ git ―version自分の場合、既にgitがインストールされていました。Xcodeと同時にインストールされるようなので、とりあえずこれを使います。
インストールする場合、macでしたらbrewでインストール出来ます。
$ brew update $ brew install gitプロジェクトフォルダをgitのローカルリポジトリにする
ローカルのプロジェクトディレクトリ
…/amiApp/ami_coupon_api
をgitのローカルリポジトリにします。ターミナルでami_coupon_api
ディレクトリに移動して、以下のコマンドを実行するだけです。$ git initgithubにamiAppのプロジェクトを作成
githubをリモートリポジトリとして利用するので、githubのアカウントを作ってサインインします。
サインインしたら、左側のフレームの「Repositories」の右側の「New」ボタンを押して、リポジトリ作成画面に進みます。
リポジトリ作成画面でリポジトリ名や説明などを入力して、
Create repositories
ボタンを押すとリポジトリが作成されます。今回はこんな設定にしました。リポジトリ名:ami_api
説明:webAPI(python)とネイティブアプリ(swift)の連携を学習するために作った居酒屋アプリ。クーポンの配信などが出来ます。
Private/Public: Public (コードが公開されます。もともと公開する予定なのでPublicにしています。)これまでに作成したコードをコミット対象ファイルにする
git add
コマンドでgitで管理したいディレクトリ、ファイルをコミット対象に設定します。対象のプロジェクトのディレクトリで
git status
コマンドを実行し、状況を確認します。コミット対象にしていないファイルとディレクトリが赤く表示されます。まだ1つもadd
していないので真っ赤です。
下記のコマンドで
ami_coupon_ami
をコミット対象にします。$ git add ami_coupon_api/git status コマンドで確認すると、
ami_coupon_api
ディレクトリ配下のファイルがコミット対象に追加されて緑になっています。
他のファイルも同じ要領でコミット対象に追加します。全てのファイルを一括で追加する場合は、下記のコマンドを使います。
$ git add --all現時点の資材をローカルリポジトリにコミットする
ここまでに開発した内容を残すため、まずは自分のPCに作ったローカルリポジトリへコミットします。まずは誰がコミットしたか分かるように、ユーザ名を登録します。
$ git config --global user.name “ユーザ名”登録した名前は
git config ―list
コマンドで確認できます。次にローカルリポジトリへコミットします。コミットする際は
-m
オプションで、コメントを残します。$ git commit -m “コメント本文”リモートリポジトリにプッシュする
今の時点では自分のPC内で資材を管理している状態です。複数人で作業する場合にコードをシェアしたり、資材をバックアップするには、Githubで作成したリモートリポジトリにプッシュします。
まずは以下の手順でプッシュ先のリモートリポジトリを登録します。
git remote add
コマンドでリモートリポジトリを登録する。(紐付け名は今後プッシュする際に使うので忘れないようにメモしておく)$ git remote add [紐付け名] [Githubに作成したリポジトリのURL]
次に、
git push
コマンドで登録したリモートリポジトリにプッシュします。今回は初回なのでmaster
ブランチにプッシュします。コマンドを実行するとGithubのユーザ名とパスワードの入力を求められます$ git push [紐付け名] [プッシュ先ブランチ]Githubのマイページを更新して、プッシュしたコードが追加されている事を確認します。
webAPI改造のためのブランチを作成し、作成したブランチに移動する。
これからwebAPIの改造をするので、改造用のブランチを作成します。まずは既に存在するブランチを確認します。
$ git branch自分の場合、存在するブランチは master のみでした。「*」の付いているブランチが現在のブランチです。
master
ブランチをコピーしてapi改造用のブランチを作成します。
次はレスポンスをJson形式で返すように改造する予定なので、ブランチ名をdevelop_chengeToJson
としました。なお、通常の複数人での開発では git flow という標準的なブランチ運用ルールを適用する事が多いです。その場合、小中規模の変更については
develop
ブランチではなく、その更に枝分かれしたfeture
やbacklog
というブランチ名で管理しますが、自分の場合は1人で開発なので、develop
ブランチをどんどん作成して改造していく事とします。コピー元のブランチにいる状態で、下記のコマンドを実行します。
$ git branch [コピーして作成するブランチ名]新しいブランチ
develop_changeToJason)
が出来ました。
作成したブランチに移動する時は、以下のコマンドを使います。
$ git checkout [作成したブランチ名]ちなみに、
checkout
コマンドに-b
オプションを付けると新しいブランチの作成と同時に作成したブランチに移動出来ます。恐らく通常はこちらのコマンドを使う方が多いと思います。$ git checkout -b [コピーして作成するブランチ名]作成したapi改造用ブランチをリモートに登録する。
ローカルリポジトリに新しいブランチを作成したので、リモートにプッシュします。
git push [紐付け名] [作成したブランチ名]なお、-u オプションをつける事で次回から[紐付け名]を省略が出来ます。
git push -u [紐付け名] [作成したブランチ名]Githubのマイページを更新すると
develop_chengeToJson
ブランチが増えています。
以上です。
- 投稿日:2020-01-01T09:37:32+09:00
.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'. HelloRef
command - Git alias with positional parameters - Stack Overflow
https://stackoverflow.com/questions/3321492/git-alias-with-positional-parametersOriginal by Github issue
- 投稿日:2020-01-01T01:17:02+09:00
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'チェックアウトできた。
以上