- 投稿日:2020-02-22T19:10:17+09:00
個人的にこれに落ち着いた 趣味で使うGitのブランチ運用
ブランチ運用って、どうすればいいか悩むよね?悩むよね?
趣味で作ったソースコードを、Gitで管理したいなと思った。
(リモート管理便利だなー、バージョニング大事だなーって最近思えるようになってきたから)
しかし、いきなり詰まった。え、ブランチどうしよ。
業務で使ってるようなガチガチな感じだと趣味で利用するには複雑すぎるし、
シンプルすぎると全然メリットが感じられないし、、
そんな感じで悩みながら、ちょうどいい感じのブランチ運用に辿り着いたので紹介します。対象
どんな人向けか? どんな人向けじゃないか? を簡単に。
- Gitについてある程度知っている方
- (Gitとは、ブランチとは等の説明はありません)
- 趣味で作ったソースコードをGitで管理したいけど、ブランチの運用方法で迷っている方
- (紹介する運用方法が業務に適用できるレベルかは分かりません)
環境
- git version 2.21.0.windows.1
作成するブランチ
今回紹介する運用では、以下の3種類のブランチを使用する。
ブランチ名 用途 master 完成品用。
直接編集・コミットしてはいけない。develop 開発用。
featはここから派生する。
完成したらmasterにマージする。feat/[編集内容等] 使い捨て用。
基本的にはここで編集する。
編集が完了したらdevelopにマージする。
developにマージしたらfeatは削除する。運用の流れ
ローカルのfeatブランチでソースコードを編集し、その内容をリモートの
developブランチへマージするまでの流れをコマンドベースでまとめます。
※ 以下、ローカルの資材には(L)を、リモートの資材には(R)を付けて表します。start!
準備
// 1. developブランチ(L)に移動 git checkout develop // 2. developブランチ(R)の資材をdevelopブランチ(L)に反映 git pull origin develop // 3. developブランチ(L)から派生してfeatブランチ(L)を作成 git branch feat/sample // 4. 作成したfeatブランチ(L)に移動 git checkout feat/sample編集~コミット~プッシュ
// 5. featブランチ(L)でソースコードを編集し、編集内容をステージング git add [編集したファイル] // 6. ステージングした内容をコミット git commit -m "[コミットメッセージ]" // 7. featブランチ(L)の資材をリモートへプッシュ(これで自動的にfeatブランチ(R)が作成される) git push origin feat/sampledevelopブランチ(R)へマージ
// 8. ブラウザ上で、featブランチ(R)→ developブランチ(R)のマージリクエスト(とか、プリクエストとか)をする // 9. ブラウザ上で、マージリクエスト(とか、プリクエストとか)をメンバーに承認してもらう(1人の場合は自分で承認する)後片付け
// 10. ブラウザ上で、featブランチ(R)を削除 // 11. developブランチ(L)に移動 git checkout develop // 12. developブランチ(L)を最新化し、編集内容が反映されているかを確認 git pull origin develop // 13. featブランチ(L)を削除 git branch --delete feat/samplegoal!
感想
個人的にとても満足!
開発がはかどるなー!他にもGitには便利なコマンドがたくさん!(log、diff、stash、、、)
こつこつ勉強してもっとGitを使いこなせるようになりたいなー以上です。
- 投稿日:2020-02-22T19:10:17+09:00
個人的にこれに落ち着いた 趣味で使うGitのブランチ運用(複数人対応)
ブランチ運用って、どうすればいいか悩むよね?悩むよね?
趣味で作ったソースコードを、Gitで管理したいなと思った。
(リモート管理便利だなー、バージョニング大事だなーって最近思えるようになってきたから)
しかし、いきなり詰まった。え、ブランチどうしよ。
業務で使ってるようなガチガチな感じだと趣味で利用するには複雑すぎるし、
シンプルすぎると全然メリットが感じられないし、、
そんな感じで悩みながら、ちょうどいい感じのブランチ運用に辿り着いたので紹介します。対象
どんな人向けか? どんな人向けじゃないか? を簡単に。
- Gitについてある程度知っている方向け
- (Gitとは、ブランチとは等の説明はありません)
- 趣味で作ったソースコードをGitで管理したいけど、ブランチの運用方法で迷っている方向け
- (紹介する運用方法が業務に適用できるレベルかは分かりません)
環境
- git version 2.21.0.windows.1
作成するブランチ
今回紹介する運用では、以下の3種類のブランチを使用する。
ブランチ名 用途 master 完成品用。
直接編集・コミットしてはいけない。develop 開発用。
featはここから派生する。
完成したらmasterにマージする。feat/[編集内容等] 使い捨て用。
基本的にはここで編集する。
編集が完了したらdevelopにマージする。
developにマージしたらfeatは削除する。運用の流れ
ローカルのfeatブランチでソースコードを編集し、その内容をリモートの
developブランチへマージするまでの流れをコマンドベースでまとめます。
※ 以下、ローカルの資材には(L)を、リモートの資材には(R)を付けて表します。start!
準備
// 1. developブランチ(L)に移動 git checkout develop // 2. developブランチ(R)の資材をdevelopブランチ(L)に反映 git pull origin develop // 3. developブランチ(L)から派生してfeatブランチ(L)を作成 git branch feat/sample // 4. 作成したfeatブランチ(L)に移動 git checkout feat/sample編集~コミット~プッシュ
// 5. featブランチ(L)でソースコードを編集し、編集内容をステージング git add [編集したファイル] // 6. ステージングした内容をコミット git commit -m "[コミットメッセージ]" // 7. featブランチ(L)の資材をリモートへプッシュ(これで自動的にfeatブランチ(R)が作成される) git push origin feat/sampledevelopブランチ(R)へマージ
// 8. ブラウザ上で、featブランチ(R)→ developブランチ(R)のマージリクエスト(とか、プリクエストとか)をする // 9. ブラウザ上で、マージリクエスト(とか、プリクエストとか)をメンバーに承認してもらう(1人の場合は自分で承認する)後片付け
// 10. ブラウザ上で、featブランチ(R)を削除 // 11. developブランチ(L)に移動 git checkout develop // 12. developブランチ(L)を最新化し、編集内容が反映されているかを確認 git pull origin develop // 13. featブランチ(L)を削除 git branch --delete feat/samplegoal!
感想
個人的にとても満足!
開発がはかどるなー!他にもGitには便利なコマンドがたくさん!(log、diff、stash、、、)
こつこつ勉強してもっとGitを使いこなせるようになりたいなー以上です。
- 投稿日:2020-02-22T12:39:02+09:00
Gitコマンドでxcrun: errorが出た時の対処
はじめに
久々に自分のMacでGit使おうとしたら以下のエラーで動かなかったので、対処方法をメモしておきます。
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun環境
- macOS Catalina10.15.3
- git version 2.21.1 (Apple Git-122.3)
対処方法
Xcodeの開発者ツールが見当たらなくなってしまっていることが原因らしいので、ターミナルで以下を実行すると直りました。
xcode-select --install xcode-select --resetおわりに
MacOSをアップデートするとあるあるネタらしいので、またあったときに慌てないようにしたいです。
参考ページ
- 投稿日:2020-02-22T03:01:37+09:00
git filter-repoってなんぞ
ある日、いつものようにgitで歴史改竄をしようとしたらこんな警告文が…
WARNING: git-filter-branch has a glut of gotchas generating mangled history rewrites. Hit Ctrl-C before proceeding to abort, then use an alternative filtering tool such as 'git filter-repo' (https://github.com/newren/git-filter-repo/) instead. See the filter-branch manual page for more details; to squelch this warning, set FILTER_BRANCH_SQUELCH_WARNING=1.要するに
git filter-branch
が新しくなんかいい感じになったgit filter-repo
があるらしいです。インストール
デフォルトではインストールされていないので、追加でインストール作業が必要です。
Homebrewだとこんな感じ。それ以外はこちらを見てくださいbrew install git-filter-repo
(Windowsはpipからインストールするしかないのか…)
使い方
マニュアルはこちら。オプションは
git filter-branch
よりわかりやすくなってますね。フォルダ移動git filter-repo --to-subdirectory-filter my-module
src以下だけ残すgit filter-repo --path src/
ReadMe.mdだけ消すgit filter-repo --path ReadMe.md --invert-paths
- 投稿日:2020-02-22T02:00:35+09:00
【Git】中途半端でコミットしたく無いけど別の作業がしたい!(git stash)
Git コマンド紹介:
stash
まあまあ使うので、まとめておきます。stash
こんな時に使う
作業が中途半端だ!コミットしたく無い!でも、別のブランチにチェックアウトしたい!
使用例
git stash save
:いったん保存
↓
git checkout 別branch
別の作業...
git checkout 元branch
↓
git stash list
:保存したものの確認
↓
git stash pop stash@{スタッシュ番号}
:保存してたものを戻す(listから消す)
or
git stash apply stash@{スタッシュ番号}
:保存してたものを戻す(listに残す)解説
% git sss ## master...origin/master [ahead 1] M index.html今、
master
ブランチで作業していて、index.html
が未コミットです。
stashコマンドを使っていきます。% git stash save Saved working directory and index state WIP on master: 6c22e4e add directory保存できました。これで、別ブランチにチェックアウトしてOK。
branch
ブランチで別の作業をします。% git checkout branch Switched to branch 'branch' 作業... % git checkout master Switched to branch 'master' Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits)作業が終わり
master
ブランチに戻ってきました。% git stash list stash@{0}: WIP on master: 6c22e4e add directory保存がしっかり確認できます。これから、戻していきます。
apply(保存を残す)
% git stash apply stash@{0} On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: index.html no changes added to commit (use "git add" and/or "git commit -a")これで無事
master
での作業に戻れました。ちなみに、% git stash list stash@{0}: WIP on master: 6c22e4e add directory
stash apply
はlistに残ります。pop(保存を残さない)
% git stash pop stash@{0} Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: index.html no changes added to commit (use "git add" and/or "git commit -a") Dropped stash@{0} (732983fc2774b21734c7ee64d1d463f42ac6a41f) % git stash list
stash pop
はlistに残りません。
その他のstashコマンド
git stash save "コメント"
:コメントをつけて保存git stash drop stash@{スタッシュ番号}
:listから消すgit stash clear
:listから全て消す
- 投稿日:2020-02-22T00:24:20+09:00
Salesforce組織のメタデータを自動バックアップするツール作ってみたその3
今回の成果物
以前作成したSF組織のメタファイルをスケジュールで自動で取得するファイルをGit管理できるようにしました。今回はリモートへのプッシュは行っておらず、ローカルで個人で管理する用に作成しました。
必要なものは前回のものに追加して以下のもの。
・Gitのインストールフォルダ構成
myorg/ ┣unpackaged ┃ ┗package.xml ┣build.properties ┣build.xml ┣.git ┣executeBackupAndCommit.bat ┣commit.sh今回、新た追加したのは
・executeBackupAndCommit.bat
・commit.sh
の2ファイル。
また、build.xmlを書き換える必要はないので、
xmlを書き換えるプログラムは今回必要ありません。executeBackupAndCommit.bat
SF組織からメタデータを取得するコマンドを実行し、commit.shを行う起動するbatファイル
executeBackupAndCommit.batAnt backup & cd C:\Program Files\Git & git-bash "C/Users/userName/Desktop/myorg/commit.sh"※各コマンドを区切らずに、"&"で繋いで1行で書くことが重要です。こちらについては後日、記事を投稿しようと思います。
commit.sh
指定フォルダで差分をコミットするシェルスクリプト
commit.sh#!/usr/bin/bash cd "/c/Users/userName/Desktop/myorg" git add --all git commit --allow-empty -m"autobackup"バックアップの実行
上記のフォルダを配置したディレクトリで、executeBackupAndCommit.batをダブルクリックするとタスクが実行されます。(Windowsタスクスケジュラーでスケジュール実行可能)
SF組織からメタデータを取得し、差分をコミットします(今回はgit commit --allow-empty オプションを実行しているので、差分がなくても空コミットを行います。)まとめ
今回の成果物は、コードの記述量が少なかったですが、Antコマンドの後のGitコマンドがなかなか上手く実行されずにかなり躓きました。今回の躓きポイントは別記事で投稿しようと思います。
また、前回から勉強のためAntを使用しましたが、Salaesforce CLIを使用して、Antコマンドをsfdx force:source:retrieveコマンドに置き換えても同様に動作します。