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

【初心者】gitについてのあれこれ

未来電子テクノロジー株式会社でインターンをしている大学一回生です。
gitについて学習したのでアウトプットします。

Gitとは

Gitは、ファイルのバージョン管理を行うために、多くのプロジェクトで使われているツールです。
ファイルの変更をバージョンとして記録し、記録した地点へいつでも戻れる仕組みを提供しています。
そのため、作業者が複数人いても、ファイルの最新状態や変更の履歴を分かりやすく保てます。
このようにGitは、大規模プロジェクトを高速に、そして複数人で並行して扱えるような仕組みを持っていることが大きな特徴です。

Gitのコマンド

1.ローカルで作成したファイルを、ローカルのリポジトリのステージングエリアに登録する。

$ git add <ローカルで作成したファイル>

2.ローカルで作成したファイルの全てを、ローカルのリポジトリのステージングエリアに登録する。

$ git add .

3.ローカルで作成したファイルを、リモートにプッシュ可能な状態にする。

$ git commit -m “this is a commit comment”

4.コミット状態にあるファイルを、リモートのリポジトリにプッシュする

$ git push <プッシュ先のリモートリポジトリの名前> <プッシュするブランチ名>

マージとリベースについて

マージ

トピックブランチに加えた全てのコミットをベースブランチに保持します。
その際、マージコミットという、マージを記録する新たなコミットも作成されます。

リベース

トピックブランチで作業をしている間に、ベースブランチで新たなコミットが作成された場合に行います。
最新のコミットが追加された状態のベースブランチからトピックブランチを作成したかのように、トピックブランチの履歴を書き換えます。
このことにより、ベースブランチのコミット履歴を一直線にできます。

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

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 」と入力。(スクショだと抜けていますが、スペースが必要です。)
スクリーンショット (16).png

2行目から最後まで「Ctrl+Alt+↓」でカーソルを広げる
スクリーンショット (25).png

「--uninstall-extension 」をコピー&ペースト
2019-07-07 (2).png

キーボードの「end」で行末へ移動し、スペースを入力
2019-07-07 (3).png

キーボードの「home」で行の先頭へ移動
スクリーンショット (18).png

BackSpaceで一行にする
スクリーンショット (19).png

コマンドプロンプトに貼り付けて実行

再インストール

gitで拡張機能一覧を戻したいバージョンにしてから、ほぼ同じことをします。コピー&ペーストするのが「--uninstall-extension 」の代わりに「--install-extension 」になるだけです。

やってみた感想

バッチみたいな、いかにも「私めはSIerで働かせていただいております!」って感じの技術じゃなくて、シャレオツな言語でスクリプト組めるようになりたい。

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

「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を設定すると更新はできない?のか、
削除してから再登録するのが、今のところ自分の解決策となっています。

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

Git ブランチ チェックアウト コマンド

Gitコマンドの解説

$git checkout -b ローカルブランチ名前 リポジトリ名/ブランチ名
↓ ↓ ↓
$git checkout -b develop upstream/develop

このコマンドで役割3つ。

1つ目 $git branch ブランチ名 ブランチの作成
2つ目 $git checkout ブランチ名 ブランチの移動
3つ目 mergeもしています

$git fetch upstream の後に上のコマンド使っています〜

以上メモでした。

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

[初心者]Gitで過去の履歴(コミット)に戻る方法

最近、Gitを勉強しています。その過程で分かっていなかったことを理解できた?ので残しておきます。今回は、Block_Game.pyというファイルを例にしています。

Gitで過去の履歴に戻りたい

まず、任意のブランチ上で、git logコマンドを入力します。
image.png
すると、現在のブランチ上でのコミットの履歴が出てきます。
image.png
commitの後に続く cebb7・・・みたいな英数字の文字列がアドレス(履歴)になります。
今回は過去の履歴に戻りたいのでコミット1のアドレスをコピーします。(範囲選択して[Ctrl]+Cでコピーできる)。

この時点での最新のファイルの中身は以下のようになっています。(コメントアウトでコミット2と記述した)
image.png
そして先ほどコピーした過去のコミット(コミット1時点)のアドレスをgit checkout [アドレス] [ファイル名]と叩くことで過去の履歴に戻ることができます。

[ファイル名]は指定した場合はそのファイルのみが過去の履歴に戻ります。また、指定しない場合はコミットした時のファイル全てが対象になります。
(アドレスはwindowsでは[Shift]+Insと打つと貼り付けができます。)
image.png
その結果、ローカルリポジトリから過去の履歴を現在の作業ディレクトリにコピーできます。
image.png
最後に、作業ディレクトリのファイルを開くとちゃんと過去の履歴に戻れていることが確認できました。

最後に

調べてみると、checkoutをブランチを移動するものとして紹介しているサイトだったりが多く、過去の履歴に戻る方法として初心者向けに説明しているものが少なったので、自分の復習も兼ねてこの記事を書きました。
*私も最近Gitを使い始めた初心者ですので理解が少しずれているかもしれません。

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

よく使う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 ブランチ名
指定したブランチを削除する。

糸冬

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