- 投稿日:2020-11-24T17:13:46+09:00
【2021年版】Git入門者が1日目に覚えるべき操作まとめ
はじめに
チーム開発で必要とされる最低レベルのGit操作を少しの説明を交えて解説していきます。
GitHubと連携してチームでソースコードを管理できるのは知ってるけど、それより先は。。。っていうぐらいの理解度の方が対象者です。準備
gitのインストール
説明してくれているサイトが多くあるので、自分でググったり以下のサイトを参考にするといいと思います。
macユーザー:https://tracpath.com/bootcamp/git-install-to-mac.html
windowsユーザー:https://www.kkaneko.jp/tools/win/git.html
パスも通り、以下のコマンドを打ってバージョンが表示されればOKです!$ git --version git version 2.26.1GitHubアカウントの登録
未登録の方は、以下から登録しましょう。
https://github.com/初期設定
gitのインストールとGitHubアカウント取得が完了したら、gitにユーザーを登録します。これを行わないと、GitHubアカウントと連携することができません。
以下のコマンドでユーザー名とメールアドレスを登録しましょう。GitHubアカウントとの連携はメールアドレスで行っているため、同じものを登録しましょう。ユーザー名もわかりやすく同じものを登録しておけば大丈夫です。$ git config --global user.name "<ユーザー名>" $ git config --global user.email "xxxx@example.com"登録が完了したら、確認してみましょう。
こちらのコマンドで、gitに関する設定を一覧化することができます。$ git config --list ~~(略)~~ user.name=username user.email=xxxx@example.com名前とメールアドレスが記載されていればOKです!
~/.gitconfigにも設定内容が書かれているのでこちらを確認してもよいです。GitHubでリポジトリ作成
GitHubにログインしたら左側にレポジトリに関する場所があり、「New」を押すと新しいレポジトリを作成できます。
次に、レポジトリ名や説明を入力して、パブリックかプライベートかを選択します。インターネット上に公開してもよい場合はPublicを選択します。
図にはありませんが、「Create Repository」をクリックすれば作成完了です!
ローカルのフォルダをgitと紐づける
ローカルPCの好きな場所にフォルダを作成します。
フォルダがあるディレクトリに移動し、以下のコマンドを実行します。$ git initこれをすることによりフォルダ直下に、git管理下であることを意味する.gitが作られます。
$ git remote add origin https://github.com/(username)/(reponame).gitローカルとGitHubレポジトリを紐付けます。originとはリモートリポジトリのことで、今回の場合はoriginをhttps://github.com/(username)/(reponame).gitに設定するという意味になります。
変更内容をリモートに反映する
ローカルのファイルを変更した後、GitHubにその内容を反映させる作業を「プッシュする」といいます。ただし、その前に2つほどステップを踏む必要があります。具体的には以下の順序を踏みます。
0.プル → (作業) → 1.ステージング → 2.コミット → 3.プッシュ
0.プル
ローカルで作業するときは事前に環境をリモートの最新状態と同じにしておく必要があります。
$ git pull1.ステージング
作業が終わったら、コミットするファイルを指定し、ステージにあげます。
$ git add (ファイル名)ただし、特に理由がない場合は全て指定するのがいいです。
ファイル名のところをピリオドにすればファイルを全て選択できます。$ git add .2.コミット
変更内容をひとまとめにすることをコミットといいます。基本的に機能単位ごとに行われます。(ボタンを追加した等)
プッシュをしたあとにやっぱり戻したいってなったときには、コミットの単位で切り戻しを行うことになるので、変更内容がわかる範囲でこまめにコミットするのが良いと思います。$ git commit -m "ボタンの追加"コミットする際は、変更内容がわかるようにコメントをつける必要があります。
これで誰が何をどう変更したのかが一目でわかるようになります。3.プッシュ
コミットの内容をリモートに反映させます。
$ git push origin masterこのコマンドはorigin(リモートレポジトリ)のmasterブランチにプッシュするという意味です。
ブランチの説明はあとで出てきますので今はスルーで大丈夫です。これで変更内容がGitHubにも反映されていることが確認できます。
ブランチを切る
gitやGitHubではデフォルトでmasterブランチが作成されます。
本番環境に影響を与えることなく開発環境で作業したい場合や、複数人でお互いに影響を与えずに作業したい場合はmaster(本流)からブランチ(枝、支流)を作成していきます。今回は、masterを本番環境、developを開発環境としてブランチを切るところからマージするところまでやっていきます。イメージとしては以下のような感じです。1.現在いるブランチの確認
$ git branch * master*がついてるのが今いるブランチです。masterからブランチを切るときはまず自分がmasterブランチにいることを確認してください。
2.ブランチを切って、そのブランチに移動
masterブランチ上で以下のコマンドを実行します。
$ git checkout -b develop Switched to a new branch 'develop'developブランチが作成されたと同時にdevelopブランチ上に移動していることがわかります。
$ git branch * develop master3.GitHub(リモートリポジトリ)と同期する
今はローカルにしかdevelopブランチがない状態なので、GitHubに同期します。
$ git push origin develop初回のプッシュ時はGitHub上で新しいブランチが作成されます。
さいごに
お疲れ様でした。
初日でこれぐらいできるようになれば十分です!
- 投稿日:2020-11-24T17:02:18+09:00
Gitのcherry-pickを取り消す
cherry-pickで反映したコミットは「git reset」コマンドで取り消すことができる。
$ git reset --hard HEAD~cherry-pickしたブランチをリモートに上げてしまっている場合、取り消ししたブランチをpushしようとすると以下のようなエラーになってしまう。
$ git push origin master To https://gitlab.com/hoge/hogehoge.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://gitlab.com/hoge/hogehoge.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.これを回避するため、pushする際は「-f」オプションをつける必要がある。
$ git push -f origin master※「git reset」コマンドを使用する場合ログに残らないので、残したい場合は「git revert」コマンドを使用する
- 投稿日:2020-11-24T16:06:24+09:00
PowerLineが使いやすくなってたので試してみた
はじめに
まずPowershellにPowerLineを適用するとどうなるのかですが、
- カレントフォルダ表示がLinux風になる
- コマンド実行時刻が各行表示される
- Gitの情報が常時みれる
過去失敗したけど、今すごく簡単にできたし、
見たい情報がすぐ見れる(=サボれる)のでオススメです。
今日の午後
SSHの設定方法をMS Docsで読んでいたら、
隣のページにPowerLineが載っているではないですか!
以前やろうとして詰んだ記憶がよみがえります。うわ、簡単にできた!
過去の失敗
- 自機がLinuxやUnixのプログラマーは当たり前のように使っているらしい。
- なんかキレイで見やすいらしい
- PowerLineってのだとPowershellにも適用できるらしいぞ?!
こんな感じの理由から半年前くらいに挑戦したのですが、
全然上手く設定できず、何が間違いなのかも分からず終わりました。適用前
Microsoft-Windows-Terminalで表示していますが、
これが通常のpwshですね。素っ気ないです。
適用後
なにが書いてあるの
この画像に書いてあることを日本語訳すると、
カレントユーザー名@ドメイン名 ホームディレクトリ/ドキュメント/Github用のフォルダ/Githubリポジトリ/testモジュール格納フォルダ Git絵文字 ブランチ名 ↑未Push変更総数 +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ前の削除ファイル数 | +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ中の削除ファイル数 [当行表示時刻の時:当行表示時刻の分]長すぎて読みにくいので改行すると、こうなります。
カレントユーザー名@ドメイン名 ホームディレクトリ/ドキュメント/Github用のフォルダ/Githubリポジトリ/testモジュール格納フォルダ Git絵文字 ブランチ名 ↑未Push変更総数 +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ前の削除ファイル数 | +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ中の削除ファイル数 [当行表示時刻の時:当行表示時刻の分]改めて、コンパクトってありがたいですね。
どうやってやるの
Gitを入れておく
やる前に、
git
コマンドが使えるようにPath
環境変数を設定しておいてください。PS Gallery からモジュールをインストール
おもむろに Powershell 7 を開いて、下記2行を実行します。
Install-Module posh-git -Scope CurrentUser Install-Module oh-my-posh -Scope CurrentUserPowershell 7 の場合のみ下記1行を実行します。 Powershell 5.1 以前の Powershell の場合はいりません。
Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck※PSGalleryを信用しますか?とか聞かれます。
Windows-Terminal で使う
下記コマンドで、カレントユーザーのPowershellプロファイルをメモ帳で開きます。
notepad $PROFILEその中に、下記コマンドを書き込みます。
Import-Module posh-git Import-Module oh-my-posh Set-Theme Paradoxここまでで、一応使えるようになっています。
VscodeやWindowsTerminalなどで、このプロファイルを開始時に読み込むため、
上記でimport-module
したモジュールが読み込まれます。テーマを設定できる
また、上記プロファイルでは、Set-Themeでテーマ設定しています。
標準で用意されたテーマを選択することが出来ます。
fishとか、Operatorとかカッコいいですね。
自作テーマも使えるらしいです。文字化けを直すためにCascadia Fontsを入れる
しかし、文字化けするので、Cascadia Fonts を入れます。この時、
Cascadia .* PL
のように、
末尾にPLが付いているものを必要とします。「Powerline Glyph」の有無が違うらしいです。Cascadia Fonts | Github からダウンロードできます。
手動でインストールする場合には、unzipして、TTFファイルを右クリックしてインストールします。面倒なので、Chocolateyコマンドを使い、一発インストールします。
choco install cascadiafontsWindows-Terminalで文字化けを直す
Fontを入れたら、
"fontFace": "Cascadia Code PL",
という文字列をWindows-Terminalの設定ファイルに書き込みます。{ // Make changes here to the powershell.exe profile. "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "powershell.exe", "fontFace": "Cascadia Code PL", "hidden": false },こんな感じで、末尾のカンマ
,
に気を付けて記入しましょう。
間違えるとエラーメッセージがでます。Vscodeで文字化けを直す
Win:「Ctrl」+「,」、Mac:「⌘」+「,」で設定画面を出し、Font Family の先頭に
cascadia code
を追記します。
Powershell単体だと挙動がおかしい
フォント設定には管理者権限が必要
常にフォントを
cascadia code
にするためには、管理者権限で設定してあげるとOKです。
通常は下記のエラーメッセージがでて、設定を保存することができません。
チカチカする
コマンドを入力して、Enterキーを入力するたびに、
一度標準フォントに戻ってからcascadia code
になります。
まるで、3Ⅾホログラムの変装をしている悪役ですね。
うっとうしいですが、もっぱら Windows-Terminal や Vscode 経由でしか使わないので平気です。やっぱり公式
公式にコミットされている人たちに感謝です。
積極的に参考にしていきたいですね。
https://docs.microsoft.com/ja-jp/windows/terminal/tutorials/powerline-setupExcelsior!
- 投稿日:2020-11-24T16:06:24+09:00
PowerLineを久々試してみたら簡単にPowerShellが見やすくなった
はじめに
まずPowershellにPowerLineを適用するとどうなるのかですが、
- カレントフォルダ表示がLinux風になる
- コマンド実行時刻が各行表示される
- Gitの情報が常時みれる
過去失敗したけど、今すごく簡単にできたし、
見たい情報がすぐ見れる(=サボれる)のでオススメです。
今日の午後
SSHの設定方法をMS Docsで読んでいたら、
隣のページにPowerLineが載っているではないですか!
以前やろうとして詰んだ記憶がよみがえります。うわ、簡単にできた!
過去の失敗
- 自機がLinuxやUnixのプログラマーは当たり前のように使っているらしい。
- なんかキレイで見やすいらしい
- PowerLineってのだとPowershellにも適用できるらしいぞ?!
こんな感じの理由から半年前くらいに挑戦したのですが、
全然上手く設定できず、何が間違いなのかも分からず終わりました。適用前
Microsoft-Windows-Terminalで表示していますが、
これが通常のpwshですね。素っ気ないです。
適用後
なにが書いてあるの
この画像に書いてあることを日本語訳すると、
カレントユーザー名@ドメイン名 ホームディレクトリ/ドキュメント/Github用のフォルダ/Githubリポジトリ/testモジュール格納フォルダ Git絵文字 ブランチ名 ↑未Push変更総数 +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ前の削除ファイル数 | +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ中の削除ファイル数 [当行表示時刻の時:当行表示時刻の分]長すぎて読みにくいので改行すると、こうなります。
カレントユーザー名@ドメイン名 ホームディレクトリ/ドキュメント/Github用のフォルダ/Githubリポジトリ/testモジュール格納フォルダ Git絵文字 ブランチ名 ↑未Push変更総数 +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ前の削除ファイル数 | +ステージ前の追加ファイル数 ~ステージ前の変更ファイル数 -ステージ中の削除ファイル数 [当行表示時刻の時:当行表示時刻の分]改めて、コンパクトってありがたいですね。
どうやってやるの
Gitを入れておく
やる前に、
git
コマンドが使えるようにPath
環境変数を設定しておいてください。PS Gallery からモジュールをインストール
おもむろに Powershell 7 を開いて、下記2行を実行します。
Install-Module posh-git -Scope CurrentUser Install-Module oh-my-posh -Scope CurrentUserPowershell 7 の場合のみ下記1行を実行します。 Powershell 5.1 以前の Powershell の場合はいりません。
Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck※PSGalleryを信用しますか?とか聞かれます。
Windows-Terminal で使う
下記コマンドで、カレントユーザーのPowershellプロファイルをメモ帳で開きます。
notepad $PROFILEその中に、下記コマンドを書き込みます。
Import-Module posh-git Import-Module oh-my-posh Set-Theme Paradoxここまでで、一応使えるようになっています。
VscodeやWindowsTerminalなどで、このプロファイルを開始時に読み込むため、
上記でimport-module
したモジュールが読み込まれます。テーマを設定できる
また、上記プロファイルでは、Set-Themeでテーマ設定しています。
標準で用意されたテーマを選択することが出来ます。
fishとか、Operatorとかカッコいいですね。
自作テーマも使えるらしいです。文字化けを直すためにCascadia Fontsを入れる
しかし、文字化けするので、Cascadia Fonts を入れます。この時、
Cascadia .* PL
のように、
末尾にPLが付いているものを必要とします。「Powerline Glyph」の有無が違うらしいです。Cascadia Fonts | Github からダウンロードできます。
手動でインストールする場合には、unzipして、TTFファイルを右クリックしてインストールします。面倒なので、Chocolateyコマンドを使い、一発インストールします。
choco install cascadiafontsWindows-Terminalで文字化けを直す
Fontを入れたら、
"fontFace": "Cascadia Code PL",
という文字列をWindows-Terminalの設定ファイルに書き込みます。{ // Make changes here to the powershell.exe profile. "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "powershell.exe", "fontFace": "Cascadia Code PL", "hidden": false },こんな感じで、末尾のカンマ
,
に気を付けて記入しましょう。
間違えるとエラーメッセージがでます。Vscodeで文字化けを直す
Win:「Ctrl」+「,」、Mac:「⌘」+「,」で設定画面を出し、Font Family の先頭に
cascadia code
を追記します。
Powershell単体だと挙動がおかしい
フォント設定には管理者権限が必要
常にフォントを
cascadia code
にするためには、管理者権限で設定してあげるとOKです。
通常は下記のエラーメッセージがでて、設定を保存することができません。
チカチカする
コマンドを入力して、Enterキーを入力するたびに、
一度標準フォントに戻ってからcascadia code
になります。
まるで、3Ⅾホログラムの変装をしている悪役ですね。
うっとうしいですが、もっぱら Windows-Terminal や Vscode 経由でしか使わないので平気です。やっぱり公式
公式にコミットされている人たちに感謝です。
積極的に参考にしていきたいですね。
https://docs.microsoft.com/ja-jp/windows/terminal/tutorials/powerline-setupExcelsior!
- 投稿日:2020-11-24T14:22:57+09:00
[TouchDesigner]gitでのバージョン管理を支援するtox
この記事はTouchDesigner Advent Calendar 2020の2日目の記事です。
前日(1日目)の記事は @miwa_maroon さんの「[Touchdesigner]新卒でもハンドトラッキングできるんじゃ! leapmotionとともに」です。
翌日(3日目)の記事は〜〜〜(公開されたら追記します)
さてみなさんいきなりですが、toeファイルのバージョン管理、諦めてませんか?
> git log --oneline --name-status f4b6ef7 (HEAD -> main) パラメータをいい感じに変更 M proj/main.toe dfc410b みやすく整理 M proj/main.toe d4425b2 いい感じのフィルタを追加 M proj/main.toe 78f5ca4 テクスチャサイズをちょっと小さくした M proj/main.toeコミットメッセージを細かく書こうにも限界があるし、自動マージ無理だしコンフリクトなんて起きたときはもう、ねえ?
要は変更の差分が見えれば良いわけなので、それができるものを作ってみました。
https://github.com/nariakiiwatani/VersioningTouchDesignerNetwork
使い方
できること
- 監視対象(デフォルト:
/
)とその下層のオペレーターの情報(オペレータータイプ、位置、サイズ、タグ、コメント、各種フラグ、OP間の接続、パラメータ)をJSONファイルにexport- 上記処理をPreSave/PostSaveからフック
上のスクショの状態だと、書き出されるファイル群はこんな感じになります。
オペレーター毎にJSONファイルがあり、COMPに対しては同名のフォルダがくっつき、下層の情報がフォルダ内に書き出されています。
※network_structure
はtoxのパラメータで指定できる書き出しパス
エスケープシーケンスで読み辛いけど書き出しのスクリプトはこんな感じ(ちなみにこれは書き出しスクリプトが書いてあるTextDATのエクスポート結果。TouchDesignerのファイルの中身をこういう形で見せられるの、すごくよくない?)
export_script
module_extractJSONファイルはデータ毎にいちいち改行するフォーマットになっているので、gitでdiffを見るのに向いていると思います。
TextDATやTableDATの内容もちょっと冗長な感じ(JSON string arrayなので……)になってしまいますが一応行ごとに差分が取れる作りになってます。
こういうファイルがオペレーター毎に作られます。execute1.json{ "name": "execute1", "OPType": "executeDAT", "comment": "", "nodeX": 100, "nodeY": 275, "nodeWidth": 130, "nodeHeight": 90, "storage": {}, "tags": [], "replicator": null, "activeViewer": false, "allowCooking": true, "bypass": false, "cloneImmune": false, "render": false, "viewer": true, "inputConnectors": [ {} ], "outputConnectors": [ {} ], "par": [ { "name": "projectpresave", "val": false, "expr": "op('par1')['Exportonpresaving']", "enableExpr": null, "exportOP": null, "exportSource": null, "bindExpr": null, "bindReferences": [], "mode": "EXPRESSION" }, { "name": "projectpostsave", "val": false, "expr": "op('par1')['Exportonpostsaving']", "enableExpr": null, "exportOP": null, "exportSource": null, "bindExpr": null, "bindReferences": [], "mode": "EXPRESSION" } ], "text": [ "# me - this DAT", "# ", "# frame - the current frame", "# state - True if the timeline is paused", "# ", "# Make sure the corresponding toggle is enabled in the Execute DAT.", "", "def onStart():", "\treturn", "", "def onCreate():", "\treturn", "", "def onExit():", "\treturn", "", "def onFrameStart(frame):", "\treturn", "", "def onFrameEnd(frame):", "\treturn", "", "def onPlayStateChange(state):", "\treturn", "", "def onDeviceChange():", "\treturn", "", "def onProjectPreSave():", "\top('export_script').run()", "\treturn", "", "def onProjectPostSave():", "\top('export_script').run()", "\treturn", "", "\t" ] }実際のgit差分は例えばこんなふうに見えます。
※NetworkExporter
という名前のbaseCOMP
の位置を動かして、Watchtarget
という名前のパラメータを変更したコミット
(View this commit on GitHub)
できないこと
- exportした情報のimport
とりあえずunsupportedですが、やりたいところではありますね・・・。
ちなみに公式ツールのtoeexpand
/toecollapse
を使えばできるらしい。
教えていただきました。あまり知られてませんが公式にもこう知った機能があります、、https://t.co/TTgcY1KnT9
— Joe Ohara / じょー (@Joe0hara) November 14, 2020
toeexpand
/toecollapse
についてこれらを使いたい場合はこちらに、
git commit
をフックしてtoeexpand
を叩くスクリプトを作ったのでこれを使うと捗るかもしれません。
https://github.com/nariakiiwatani/toeexpand-git-pre-commit
macのみ対応してますが、toeexpand
のパスを書き換えるだけでWindowsでも動くんじゃないかと思うのでそのうちやるかもしれません。
toeexpand
も、各オペレーターやそれらの構造をテキストファイルに展開してくれるツールなのでgit管理のために使おうと思えば使えると思うんですが、個人的には、あんまりこのツールで書き出した情報が人間に読みやすいかというとそうでもない気がしてるので、やはりやるなら自前でも作っておきたいかな、と思っています。その他
WatchTarget
を/
にして書き出すと、ルートにroot
という名前のbaseCOMPがあるのがわかりました。普通に使ってると目に入りませんがそういう作りになってるんですねえふむふむ。
これもしかして唯一の「名前とネットワークパスとが一致しないオペレーター」なのでは?
https://github.com/nariakiiwatani/VersioningTouchDesignerNetwork/blob/4076f1aa7ce43ac28aeb38f548088212cc576b9f/network_structure/.jsonPro版のSave Privateで保存されたtoxはどう見えるんですかね・・・?
もし興味を持って使ってみたいという方がいらっしゃれば、ベータテスター的な感じで使用感や改善点の感想をもらえると嬉しいです。
もしインポートできるツールを作るなら有料で公開かなと思っているんですが、なんらかフィードバックくださった方には無償で提供します。(結局作らなかったり、気が変わって無料で公開したらすみません・・・!)