- 投稿日:2019-07-07T22:14:32+09:00
【初心者】gitについてのあれこれ
未来電子テクノロジー株式会社でインターンをしている大学一回生です。
gitについて学習したのでアウトプットします。Gitとは
Gitは、ファイルのバージョン管理を行うために、多くのプロジェクトで使われているツールです。
ファイルの変更をバージョンとして記録し、記録した地点へいつでも戻れる仕組みを提供しています。
そのため、作業者が複数人いても、ファイルの最新状態や変更の履歴を分かりやすく保てます。
このようにGitは、大規模プロジェクトを高速に、そして複数人で並行して扱えるような仕組みを持っていることが大きな特徴です。Gitのコマンド
1.ローカルで作成したファイルを、ローカルのリポジトリのステージングエリアに登録する。
$ git add <ローカルで作成したファイル>2.ローカルで作成したファイルの全てを、ローカルのリポジトリのステージングエリアに登録する。
$ git add .3.ローカルで作成したファイルを、リモートにプッシュ可能な状態にする。
$ git commit -m “this is a commit comment”4.コミット状態にあるファイルを、リモートのリポジトリにプッシュする
$ git push <プッシュ先のリモートリポジトリの名前> <プッシュするブランチ名>マージとリベースについて
マージ
トピックブランチに加えた全てのコミットをベースブランチに保持します。
その際、マージコミットという、マージを記録する新たなコミットも作成されます。リベース
トピックブランチで作業をしている間に、ベースブランチで新たなコミットが作成された場合に行います。
最新のコミットが追加された状態のベースブランチからトピックブランチを作成したかのように、トピックブランチの履歴を書き換えます。
このことにより、ベースブランチのコミット履歴を一直線にできます。
- 投稿日:2019-07-07T20:43:23+09:00
Visual Studio Codeの拡張機能をバージョン管理したい
拡張機能のアンインストールで痛い目を見たので、同じことを繰り返さないようにメモします。
経緯
Visual Studio Codeの拡張機能って便利ですよね。ただ、新しい機能を追加した後、それまで動いていた他の機能が動かなくなることがあります。
久しぶりにMarkdown Preview Enhanced でフローチャートを描いたのですが、全然表示されませんでした。
どの拡張機能を追加したり削除したりしたかをバージョン管理できれば、原因の特定に役立つのではないでしょうか注意
Gitとbatchは全然慣れていないので間違ってたらごめんなさい。
やりたいこと
- インストールしてある拡張機能の一覧をテキストファイル(以下、拡張機能一覧と呼びます)として出力する
- 拡張機能一覧をバージョン管理する
- Visual Studio Codeを拡張機能一覧の通りに構成しなおす
環境
- Windows10 1803
- Visual Studio Code 1.36.0
方法
拡張機能一覧の出力
まず、拡張機能一覧を出力します。
コマンドプロンプトを開き、拡張機能一覧を保存したい場所にカレントディレクトリを変えてから以下のコマンドを実行します。ファイル名は好きに変えてください。
code --list-extensions > extension_list.txt拡張機能一覧をバージョン管理
最初の一度だけgitにレポジトリを追加
git init (拡張機能一覧を保存するディレクトリ)後は拡張機能を追加/削除するたびに先ほどの拡張機能一覧の出力とgit addとgit commitを繰り返すだけです。「なんか改行変だよ」ってgitに言われますが、無視して大丈夫そうです(多分)
git add extension_list.txt git commit extension_list.txtいちいちコマンド叩くのがめんどくさいので、バッチにまとめてスタートアップに置きことにしました。
@echo off REM 拡張機能一覧を置いてあるディレクトリ cd "C:\Users\hoge\vs_extension" code --list-extensions > extension_list.txt REM 拡張機能一覧を更新するのを待つ timeout /t 15 REM 前回のコミットとの差分を取得 REM 変数は毎回初期化しないと、次にバッチを実行したときに前回の値が残ってしまう set diff= FOR /F %%i in ('git diff') do set diff=%%i REM 差分が出ていればコミット REM コミットメッセージには差分をそのまま使用 REM 複数個の拡張機能に変更を加えていても一つしかコミットメッセージに表示されないので注意 if not "%diff%" == "" ( git add extension_list.txt git commit extension_list.txt -m %diff% )これで自動化できる...あれ?できてないぞ
code --list-extensions > extension_list.txtこれ以降のコマンドが全く実行されません。
原因が分からなかったので、このコマンドだけ別のバッチに分けて
スタートアップに入れました。
詳しい人、どうしてなのか教えてください。Visual Studio Codeを拡張機能一覧の通りに構成しなおす(力尽きた)
これもバッチでできるようにしたかったのですが力尽きました。ここからは手動です。
まず入っているものをアンインストール
最終的に同じ形になっていれば、どう入力しても同じです。
一行ずつ入力するのがめんどくさいので、以下のような入力方法ででやりました。拡張機能一覧をコピー
先頭に「code 」と入力。(スクショだと抜けていますが、スペースが必要です。)
2行目から最後まで「Ctrl+Alt+↓」でカーソルを広げる
「--uninstall-extension 」をコピー&ペースト
コマンドプロンプトに貼り付けて実行
再インストール
gitで拡張機能一覧を戻したいバージョンにしてから、ほぼ同じことをします。コピー&ペーストするのが「--uninstall-extension 」の代わりに「--install-extension 」になるだけです。
やってみた感想
バッチみたいな、いかにも「私めはSIerで働かせていただいております!」って感じの技術じゃなくて、シャレオツな言語でスクリプト組めるようになりたい。
- 投稿日:2019-07-07T18:14:32+09:00
「origin」って何ぞ?
fatal: remote origin already exists.というエラーが出た時に調べていたら
originが既に存在しているので消してから再度登録してくださいとの解決策がありました。この
originって何ぞ?となったので深掘りも込めて調べてみました。参考
https://reasonable-code.com/git-origin/originとは
リモートリポジトリのアクセス先に対してGitがデフォルトでつける名前です。
$ git push origin master
$ git pull origin master
masterはデフォルトのブランチ。メインのブランチ。つまり
$ git push origin ブランチ名
$ git pull origin ブランチ名上記のようになります。
一度
originを設定すると更新はできない?のか、
削除してから再登録するのが、今のところ自分の解決策となっています。
- 投稿日:2019-07-07T13:57:02+09:00
Git ブランチ チェックアウト コマンド
Gitコマンドの解説
$git checkout -b ローカルブランチ名前 リポジトリ名/ブランチ名
↓ ↓ ↓
$git checkout -b develop upstream/developこのコマンドで役割3つ。
1つ目
$git branch ブランチ名ブランチの作成
2つ目$git checkout ブランチ名ブランチの移動
3つ目mergeもしています
$git fetch upstreamの後に上のコマンド使っています〜以上メモでした。
- 投稿日:2019-07-07T00:59:41+09:00
[初心者]Gitで過去の履歴(コミット)に戻る方法
最近、Gitを勉強しています。その過程で分かっていなかったことを理解できた?ので残しておきます。今回は、Block_Game.pyというファイルを例にしています。
Gitで過去の履歴に戻りたい
まず、任意のブランチ上で、git logコマンドを入力します。
すると、現在のブランチ上でのコミットの履歴が出てきます。
commitの後に続く cebb7・・・みたいな英数字の文字列がアドレス(履歴)になります。
今回は過去の履歴に戻りたいのでコミット1のアドレスをコピーします。(範囲選択して[Ctrl]+Cでコピーできる)。この時点での最新のファイルの中身は以下のようになっています。(コメントアウトでコミット2と記述した)
そして先ほどコピーした過去のコミット(コミット1時点)のアドレスをgit checkout [アドレス] [ファイル名]と叩くことで過去の履歴に戻ることができます。[ファイル名]は指定した場合はそのファイルのみが過去の履歴に戻ります。また、指定しない場合はコミットした時のファイル全てが対象になります。
(アドレスはwindowsでは[Shift]+Insと打つと貼り付けができます。)
その結果、ローカルリポジトリから過去の履歴を現在の作業ディレクトリにコピーできます。
最後に、作業ディレクトリのファイルを開くとちゃんと過去の履歴に戻れていることが確認できました。最後に
調べてみると、checkoutをブランチを移動するものとして紹介しているサイトだったりが多く、過去の履歴に戻る方法として初心者向けに説明しているものが少なったので、自分の復習も兼ねてこの記事を書きました。
*私も最近Gitを使い始めた初心者ですので理解が少しずれているかもしれません。
- 投稿日:2019-07-07T00:02:30+09:00
よく使うGitコマンド一覧
個人的に覚えておいた方が良い、よく使うGitコマンドを記載してます。
$ git add ファイル名
ファイル名を指定して対象ファイルをステージングエリアに追加。
$ git add *. ファイル形式
指定した形式のファイルだけをステージングエリアに追加。
$ git add -A
git管理下にあるディレクトリの全ての「追加、変更、削除」をステージングエリアに追加。
$ git status
ローカルリポジトリ内のgitの対象ファイルのステータスを表示する。
$ git status --short -branch
表示結果を短縮して結果の一番上にbranch名を表示できる。
$ git commit
変更したファイルをすべてコミットする。
$ git commit -m "コミットメッセージ"
メッセージをつけてコミットする。
$ git diff
インデックスとワーキングツリーの差分を表示する。
$ git diff -name-only
差分があるファイルの名前だけを表示する。
$ git diff -cached
git addした内容と最新のコミットとの差分を表示する。
$ git diff --word-diff
文字レベルで差分を表示する。
$ git push リモートリポジトリのパス ローカルのブランチ名 :リモートのブランチ名
ローカルリポジトリの内容をリモートリポジトリにpushする。
$ git push -f origin master
コンフリクトが発生する場合でも強制的にプッシュを行い、
リモートリポジトリの内容を上書きする。
$ git push --force-with-lease origin master
ローカルの履歴がリモートよりも新しい時だけpushを行う。
$ git push origin --delete ブランチ名
指定したブランチを削除する。
$ git push --all origin
全てのブランチをpushする。
$ git push --tags origin
全てのタグをpushする。
$ git clone クローンしたいリポジトリのアドレス
指定したリポジトリを現在のディレクトリの直下に複製する。
$ git clone クローンしたいリポジトリのアドレス ディレクトリ
現在いるディレクトリ内のディレクトリを指定してリポジトリをクローンする。
指定したディレクトリが存在しない場合は、
指定した名前のディレクトリを作成してリポジトリをクローンする。
$ git clone -b ブランチ名 --single-branch リモートディレクトリ名
リモートの特定のブランチを指定してクローンする。
$ git fetch --all
設定されているすべてのリモートから全履歴を取得する。
$ git merge ブランチ名
指定したブランチを現在のブランチにマージする。
$ git merge --about
コンフリクトが発生し、まだコミットが行われていない状態でマージを中止し、
git merge実行前の状態に戻します。
$ git merge --continue
コンフリクトが発生し、コードを編集して競合を解決した後にマージを完了するように指示する。
$ git pull origin master
リモートリポジトリのorigin masterから内容を取り込んで、ローカルの
masterブランチにマージを行う。
$ git log
過去のコミットログを表示する。
$ git log ファイル名
特定のファイルのログのみを表示する。
$ git log ブランチ名
特定のブランチのログを表示する。
$ git log --numstat
ファイル毎の削除、追加行数を表示する。
$ git log --oneline
ログを1行で表示する
$ git log -3
最新のログを任意の件数を指定して表示する(上記の場合は最新のコミット数を3表示する)
$ git branch
ローカルブランチの一覧を表示。
$ git branch -a
登録されているリモートブランチを含むすべてのブランチを表示する。
$ git branch ブランチ名
ブランチを新規作成する。
$ git branch -d ブランチ名
指定したブランチを削除する。糸冬










