20200222のGitに関する記事は6件です。

個人的にこれに落ち着いた 趣味で使う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/sample

developブランチ(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/sample

goal!

感想

個人的にとても満足!
開発がはかどるなー!

他にもGitには便利なコマンドがたくさん!(log、diff、stash、、、)
こつこつ勉強してもっとGitを使いこなせるようになりたいなー

以上です。

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

個人的にこれに落ち着いた 趣味で使う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/sample

developブランチ(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/sample

goal!

感想

個人的にとても満足!
開発がはかどるなー!

他にもGitには便利なコマンドがたくさん!(log、diff、stash、、、)
こつこつ勉強してもっとGitを使いこなせるようになりたいなー

以上です。

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

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をアップデートするとあるあるネタらしいので、またあったときに慌てないようにしたいです。

参考ページ

https://apple.stackexchange.com/questions/254380/why-am-i-getting-an-invalid-active-developer-path-when-attempting-to-use-git-a

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

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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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から全て消す
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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.bat
Ant 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コマンドに置き換えても同様に動作します。

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