20200116のGitに関する記事は16件です。

Githubでレポジトリの書き込み権限があるか調べる最も簡単な方法

TL; DR

Github上で任意のテキストファイルを直接編集する。
書き込み権限がない場合は注意書きが表示される。

詳細

詳細といってもこれ以上書きようがないので、分かりやすいように画像を添付しておきます。
BitbucketやGitLabの場合は知りません。他にいい方法があればコメントで教えて下さい。

  1. Github上で任意のテキストファイルを直接編集する。
    Github.png

  2. 書き込み権限がない場合は注意書きが表示される。
    以下のNoticeが表示されます。

You’re editing a file in a project you don’t have write access to. We’ve created a fork of this project for you to commit your proposed changes to. Submitting a change to this file will write it to a new branch in your fork, so you can send a pull request.

Github2.png

検索用

1. 書き込み権限がないときのエラー

ERROR: Permission to hogehoge.git denied to hayashi-ay.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

2. 検索ワード対応
Git Repository, Write Permission, ライト権限

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

【RStudio】Gitに恋してバージョン管理 ~ 基礎篇 〜

1. 趣旨

最近になって、Rのスクリプトやプロジェクトの管理をGitで始めました。

いや~~~~~非常に便利。
僕の中ではイノベーション。
これはスクリプト書くのが楽しくなる。

ということで、「Gitって何?食べられるの?」という過去の僕に向けた超入門。
GitとRStudioとの連携については、意外と超初心者向けのサイトが少なかったので、需要あるといいなぁ~~~。

留意点

  • この記事は、RStudioでプロジェクト管理を行うための超最低限のこと しか書いてません。Python等その他の環境での利用については全く考慮していません。
  • 肌感覚での理解で書いてます。厳密・正確な文言や使用法ではないかもです。
  • この記事は 僕のようなマジの初心者向け なので、Gitがある程度分かるという人は、この記事よりもコチラの記事のほうが参考になります。
    RStudioではじめるGitによるバージョン管理 - Qiita

環境

  • Windows 10 x64
  • R 3.6.2
  • RStudio 1.2.1335

2. Git × RStudioでできること

多分この記事を開いてる時点で、多少Gitやプロジェクト管理に興味がある状態のはずですが、改めて。
RStudioとGitを連携させて何ができるかと問われれば、 ずばり!バージョン管理です。具体的には、こんなことができます。

  • スクリプトの変更履歴の保存
  • プロジェクトのバックアップ・復元
  • パソコン間(ノート・デスクトップ)でのプロジェクトの同期

ね?なかなか魅力的でしょ? かくいう僕も院生フレンズに教えてもらったのですが、慣れるとプロジェクト全体のバックアップにもなるし、スクリプトを書くのがすごーく楽しくなる。

しかーし! 「Gitって何だ?」という僕にとっては中々難しく、用語も沢山出てくるので、最初は全く訳のわからないままブランチ(ほらね出てきたよ、、、)を大量に切ってしまったり、いつの間にかmaster(まーた知らないコトバが出てきたよ、、、)が消えたり、それはもう散々な目に遭いました。

「愚者は経験に学び、賢者は歴史に学ぶ」なんて言いますが、愚者たる僕の経験を歴史として笑って、皆さんは賢者になってください。

Git導入前のぼく

今まではスクリプトを書き直すたびにファイル名を変更してバックアップを取ってましたが、こんな問題点がありました。

  • どれが最終版?
  • 他人が作成したコードって自分のに反映したっけ?
  • このファイル、消して良いのか?
  • そもそも何を修正したんだっけ?
  • 前のバージョンに戻りたいんだけど、バックアップしてない・・・。

こういう問題が発生すると、僕の研究へのモチベーションが一気に下がるので、どうしてもモチベーションの維持のためにラーメン二郎を食い、結果として財布は痩せて身体は太ります。
スクリプトの管理もできない奴が、モチベーションと身体と金銭まで管理できるわけがない。

Git導入後のぼく

sugee.PNG

どうですよ。このデキるオトコ感。

  • 最終版がどれか分かる。
  • 変更の概要をメモできる。
  • 変更者・日付などは自動で記録される。
  • スクリプトのどこに変更が加えられたかという変更履歴が一目でわかる。
  • コードの修正等を別プロジェクトとして管理し、反映させることができる。
    それを視覚的にも把握できる。
  • いちいちファイル名を変更していくつもファイル作ったり消したりして管理する必要もない。
  • 必要であれば、過去のバージョンに遡れる。
  • スタバで開くとカッコいい。(検証済)
  • モテる。(要検証)

さあ、僕と一緒にGitを習得する気になりましたか?

3. Gitとは何なのか

Git自体については僕が説明するより、とても分かりやすい説明を引用させていただきます。

Gitはテキストファイルなどのバージョン管理を行うためのソフトウェアであるとよく言われます。バージョン管理は、ファイルの変更内容や変更履歴を保持しておいて、あとから古い状態に切り戻したりできるようにするためのものです。
つまり、「あぁ……この文章、変える前の方が良かったなぁ……前の状態に戻したいなぁ……」となった時に、前の状態まで(変更がコミットされていれば)復元できるようにするためのものです。
- 君には1時間でGitについて知ってもらう(with VSCode) - Qiita

Git自体はRやRStudio専用というわけではなく、むしろプログラミング全般で使われる管理ソフトです。
もっと活用すると共同作業の管理なども可能ですが、今回はわかりやすさ重視のため想定利用者は自分自身だけとします。

あと細かい説明は省きますが、GitとGitHubは別モノです!
連動させることも出来ますが、設定しない限りは関係ないです。

4. Gitのインストール

こちらからダウンロード。
https://git-scm.com/

基本的に指示に従っておけばOKです。
途中、PATHに関するオプションを聞かれますので、真ん中のUse Git from the Windows Command Promptを選択してください。
git-install06.png
画像:https://zero-config.com/windows/install-git-win-001.html より拝借。

何かオプションなどで困ったら、こちらを参考にしてみてください。
【初心者向け】Gitのインストール方法をわかり易く解説(画面付き)

ユーザー情報の登録

! ATTENTION !
この作業は省略できません!必ずやっておいてください!
省略してしまうと、ファイルのバージョン管理ができません!

インストールが完了したら、コマンドプロンプトを起動 して、次のように入力してください。
これらの情報はネット上ではなくローカルに保存されるので、GitとGitHub等と連動させない限りユーザー名もメアドも公開されないので安心してください

ユーザー名は本名以外でもOKです。

git config --global user.name "ユーザー名"
git config --global user.email メールアドレス

なお、後々GitHub等との連携を考えている場合は、ユーザー名については公開されることがある点に留意してください。
メアドについては、公開 / 非公開の選択が可能ですが、デフォルトでは公開されます。
どうしても気になる方は、捨てアドを作って登録するという選択肢もあります。

また、GitHubと連動させていることが前提ですが、メアドの非公開化については、以下を参考にしてください。
GitHubのメールアドレスを非公開に設定する - kina's tech memo

これで準備OKです。

5. RStudioと連携させよう

さあ、インストールとユーザー情報の登録が完了したらRStudioとGitを繋げましょう!
初めての方は理解のために、まずは新規プロジェクトのパターンから始めることをおすすめします。

新規プロジェクトの場合

File > New Pojectで新規プロジェクトを作成します。

一番上のNew Directoryを押すとProject Typeを聞かれるので、New Projectを選択します。

Directory nameには管理するディレクトリの名前を入力し、その親ディレクトリ(作業フォルダをどこに作成するか)を選択します。好きなように入力・選択してください。
そして、Create a git repositoryのチェックを忘れずに!

Create Projectを押して、黄色い丸のようになってればOKです!

complete.PNG

6. 「Commit」=変更を記録する

何でもいいので、スクリプトを作成して保存しましょう。
何でもいいと言われちゃうと困っちゃう可愛い子には、スーを差し上げます雑なコードを差し上げます。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)

保存まで終わったら、右上のGitタブを開いてみましょう。こんな風になっていると思います。
5.PNG

この二つ並んだのアイコンはStatusと言います。左側がGitの状態、右側がディレクトリの状態を表します。
アイコンが2つ並んでいると、そのファイルがGitによる管理の対象になっていないことを意味します。
なので、Gitに「このファイルの変更を追ってください!」とお願いしましょう。

GitでいうCommitとは、簡単に言うと、Gitにファイルの変更を記録すること をいいます。
近くにCommitというボタンがあるので押してみましょう。Review Changesウィンドウが立ち上がります。

キャプチャ.PNG
こんな画面が出てきたら、Stagedにチェックを入れましょう。
すると、先ほどまでだったアイコンがAになりました。
AAddedの略で、変更の追跡対象を追加することを意味します。

右上のCommit messageには、変更の記録の概要などをメモできます。
とりあえず何でもいいので書いておきましょう。日本語もOKです。

ここまで出来たら、Commitボタンを押しましょう。
コマンドプロンプトっぽいのを閉じると、先ほどまで左上にあったファイルたちが消えていれば完了です。

Statusのアイコンの詳細な意味はコチラを参照してください。

スクリプトを書き換えて変更を記録してみる

先ほど作成・保存したスクリプトを、何でもいいので一部を適当に変えて上書き保存してみてください。
僕の作った例の雑コードは、線形回帰の関数lm()の説明変数と目的変数を入れ替えてみました。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Width ~ Sepal.Length, data = iris)
summary(result)

上書き保存すると、Statusの右側(ディレクトリ側)にMアイコンが灯りました。MModifiedの略、つまり変更が加えられたということを意味します。
6.PNG

では、この変更をGitに記録させましょう。
先ほどのようにCommitを押してReview Changesウィンドウを開いてみましょう。
Review Changesウィンドウでは、どこに変更が加えられたか、一発でわかるようになっています。赤色が変更前、緑色が変更後です。

そして同じように、チェックを入れて変更の概要を記述します。
チェックを入れると、Mが右から左に移るのが確認できると思います。これは、「Commitする(変更を記録する)とGit側で管理しているファイルをModified(変更)しますよー」ということを意味します。チェックを入れただけの段階ではまだGit側には変更は記録されず、Commitボタンを押すことで初めて変更がGit側に記録されます。

ちなみに、さっきからチェックを入れているStagedとは、対象を変更の記録をGitに反映させることを意味します。「まだこのファイルの変更はGitに記録したくないんだよなー」というときは、チェックを入れなければ記録されません。チェックしたファイルの変更だけがGitに反映されます。

ではでは、押してみましょう。
先ほどのようにファイル欄がクリアになったら成功です。

7. 変更履歴を確認したい

  • いつ、どのような変更を加えたか
  • 過去のバージョンを見たい・保存したい

などを知るために、Historyを確認しましょう。
先ほど開いていたReview Changesウィンドウの左上にあるHistoryをクリックするか、RStudioのGitタブにある時計マークをクリックします。
8.PNG
7.PNG

Historyでは、

  • ファイルの過去バージョンの参照
  • 変更履歴のメタデータ(日付・作成者など)の確認
  • Commit messageの閲覧
  • 前バージョンからの変更点の確認

などが出来ます。

ウィンドウの下半分には、選択したバージョンの、ひとつ前のバージョンからの変更点が記載されます。前バージョンから変更点がない場合は載らないので留意してください。

9.PNG

もしファイル数が膨大だったり内容の変更が多い場合など、スクロールして探すのが面倒な場合は、見たいファイルをクリックするとジャンプできます。iris.Rの変更点が見たい場合は、下の画像の赤丸部分をクリックです。
13.png

8. バージョンを戻してみよう

バージョン戻しはざっくり以下の2つあります。

  • Commitを押しちゃったけど、それ以前の作業履歴まで遡りたい場合。
  • まだCommitを押してなくて、作業前の状態(直近のCommitを押した時点)まで遡りたい場合。

直近のCommitより過去まで遡りたい場合

Commitを押しちゃったけど、やっぱりCommit押す前のほうが良かった!という場合、Gitを使ってると簡単に過去のバージョンに参照できます。

戻し方は色々ありますが、ここは一番ベーシックなやり方でやってみましょう。
今回は、スクリプトファイル(iris.R)をinitial commit(最初のコミット時点)まで復元しましょう。

1. Historyで戻したいポイントを参照する

今回はinitial commitまで遡るので、その時点の履歴を参照しましょう。

10.PNG

2. 戻したいファイルのView fileをクリック

下の画像のように、過去のバージョンを閲覧できるリンクがあるのでクリックして開きましょう。

12.PNG

すると、過去の状態のものが表示されます。これを上書き保存しましょう。

14.PNG

RStudioに戻ると、スクリプトに変更が加わったことによるMが表示されたことを確認できます。あとは、これを再度Commitさせれば完了です。

15.PNG

Commit押す前で、直近まで遡りたい場合

例えば、今日の作業、失敗だったなーーー。今日の作業はなかったことにしたいなーーー。という場合。
かつ、まだ失敗した作業内容をGitに記録させてない(Commitを押していない)場合

この場合は、とても簡単で手軽です。
先ほどのスクリプトを、今度はこうしてみましょう。書いたら ファイルは上書き保存しますが、Commitはしないでください。右列にMと表示されていればOKです。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)
# いらないメモ

この# いらないメモを書く前の状態に戻したい場合、つまり、以下のような直近でCommitした時点のバージョンに戻したいということです。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)

例のごとく、Review Changesウィンドウを開きましょう。

今回はCommitではなくRevertというボタンを押してみると、「選択したファイルの変更が失われるけどいい?(超意訳)」とお尋ねが来るので、元気よくYesを押しましょう。

16.PNG

するとあら不思議。元通りに戻りましたとさ。めでたし。

17.PNG

9. まとめ

ここまでが僕的エッセンスです。

とりあえず一人で作業をする分にはここまででも十分かなーーーと思います。
これ以降はQiitaで検索するかググればなんとかなるかも。
活用しよう、集合知。

とりあえずブランチとかプルとかブッシュとか、そういう概念を知らなくても、RStudio上でプロジェクト管理ができましたね。
かくいう僕は、GitHubとも同期させて、自宅のデスクトップとノートPCで変更を共有させてます。
そういう使い方まで書きたかったのですが、それは機会があればまた書きます。

Enjoy!

おしまい。

今後追加したいコンテンツ

余力があれば、今後この辺のコンテンツを追加したいと思います。
別記事にするかもしれません。

  • 既存のRプロジェクトをGitで管理する
  • ブランチとは何ぞ
  • GitHubとの連携
  • Push・Pullとは何ぞ

なお、この辺について知りたい方は、他の方の記事にあると思いますので、是非調べてみてください。

10. 参考文献

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

【RStudio】Gitに恋してプロジェクト管理

1. 趣旨

最近になって、Rのスクリプトやプロジェクトの管理をGitで始めました。

いや~~~~~非常に便利。
僕の中ではイノベーション。
これはスクリプト書くのが楽しくなる。

ということで、「Gitって何?食べられるの?」という過去の僕に向けた超入門。
GitとRStudioとの連携については、意外と超初心者向けのサイトが少なかったので、需要あるといいなぁ~~~。

留意点

  • この記事は、RStudioでプロジェクト管理を行うための超最低限のこと しか書いてません。Python等その他の環境での利用については全く考慮していません。
  • 肌感覚での理解で書いてます。厳密・正確な文言や使用法ではないかもです。
  • この記事は 僕のようなマジの初心者向け なので、Gitがある程度分かるという人は、この記事よりもコチラの記事のほうが参考になります。
    RStudioではじめるGitによるバージョン管理 - Qiita

環境

  • Windows 10 x64
  • R 3.6.2
  • RStudio 1.2.1335

2. Git × RStudioでできること

多分この記事を開いてる時点で、多少Gitやプロジェクト管理に興味がある状態のはずですが、改めて。
RStudioとGitを連携させて何ができるかと問われれば、 ずばり!バージョン管理です。具体的には、こんなことができます。

  • スクリプトの変更履歴の保存
  • プロジェクトのバックアップ・復元
  • パソコン間(ノート・デスクトップ)でのプロジェクトの同期

ね?なかなか魅力的でしょ? かくいう僕も院生フレンズに教えてもらったのですが、慣れるとプロジェクト全体のバックアップにもなるし、スクリプトを書くのがすごーく楽しくなる。

しかーし! 「Gitって何だ?」という僕にとっては中々難しく、用語も沢山出てくるので、最初は全く訳のわからないままブランチ(ほらね出てきたよ、、、)を大量に切ってしまったり、いつの間にかmaster(まーた知らないコトバが出てきたよ、、、)が消えたり、それはもう散々な目に遭いました。

「愚者は経験に学び、賢者は歴史に学ぶ」なんて言いますが、愚者たる僕の経験を歴史として笑って、皆さんは賢者になってください。

Git導入前のぼく

今まではスクリプトを書き直すたびにファイル名を変更してバックアップを取ってましたが、こんな問題点が出てきます。

  • どれが最終版?
  • 他人が作成したコードって自分のに反映したっけ?
  • このファイル、消して良いのか?
  • そもそも何を修正したんだっけ?
  • 前のバージョンに戻りたいんだけど、バックアップしてない・・・。

こういう問題が発生すると、僕の研究へのモチベーションが一気に下がるので、どうしてもモチベーションの維持のためにラーメン二郎を食い、結果として財布は痩せて身体は太ります。
スクリプトの管理もできない奴が、モチベーションと身体と金銭まで管理できるわけがない。

Git導入後のぼく

sugee.PNG

どうですよ。このデキるオトコ感。

  • 最終版がどれか分かる。
  • 変更の概要をメモできる。
  • 変更者・日付などは自動で記録される。
  • スクリプトのどこに変更が加えられたかという変更履歴が一目でわかる。
  • コードの修正等を別プロジェクトとして管理し、反映させることができる。
    それを視覚的にも把握できる。
  • いちいちファイル名を変更していくつもファイル作ったり消したりして管理する必要もない。
  • 必要であれば、過去のバージョンに遡れる。
  • スタバで開くとカッコいい。(検証済)
  • モテる。(要検証)

さあ、僕と一緒にGitを習得する気になりましたか?

3. Gitとは何なのか

Git自体については僕が説明するより、とても分かりやすい説明を引用させていただきます。

Gitはテキストファイルなどのバージョン管理を行うためのソフトウェアであるとよく言われます。バージョン管理は、ファイルの変更内容や変更履歴を保持しておいて、あとから古い状態に切り戻したりできるようにするためのものです。
つまり、「あぁ……この文章、変える前の方が良かったなぁ……前の状態に戻したいなぁ……」となった時に、前の状態まで(変更がコミットされていれば)復元できるようにするためのものです。
- 君には1時間でGitについて知ってもらう(with VSCode) - Qiita

Git自体はRやRStudio専用というわけではなく、むしろプログラミング全般で使われる管理ソフトです。
もっと活用すると共同作業の管理なども可能ですが、今回はわかりやすさ重視のため想定利用者は自分自身だけとします。

あと細かい説明は省きますが、GitとGitHubは別モノです!
連動させることも出来ますが、設定しない限りは関係ないです。

4. Gitのインストール

こちらからダウンロード。
https://git-scm.com/

基本的に指示に従っておけばOKです。
途中、PATHに関するオプションを聞かれますので、真ん中のUse Git from the Windows Command Promptを選択してください。
git-install06.png
画像:https://zero-config.com/windows/install-git-win-001.html より拝借。

何かオプションなどで困ったら、こちらを参考にしてみてください。
【初心者向け】Gitのインストール方法をわかり易く解説(画面付き)

ユーザー情報の登録

! ATTENTION !
この作業は省略できません!必ずやっておいてください!
省略してしまうと、ファイルのバージョン管理ができません!

インストールが完了したら、コマンドプロンプトを起動 して、次のように入力してください。
これらの情報はネット上ではなくローカルに保存されるので、GitとGitHub等と連動させない限りユーザー名もメアドも公開されないので安心してください

なお、後々GitHub等との連携を考えている場合は、ユーザー名については公開される点に留意してください。
メアドについては、公開 / 非公開の選択が可能ですが、デフォルトでは公開されます。
どうしても気になる方は、捨てアドを作って登録するという選択肢もあります。

また、GitHubと連動させていることが前提ですが、メアドの非公開化については、以下を参考にしてください。
GitHubのメールアドレスを非公開に設定する - kina's tech memo

ユーザー名は本名以外でもOKです。

git config --global user.name "ユーザー名"
git config --global user.email メールアドレス

これで準備OKです。

5. RStudioと連携させよう

さあ、インストールとユーザー情報の登録が完了したらRStudioとGitを繋げましょう!
初めての方は理解のために、まずは新規プロジェクトのパターンから始めることをおすすめします。

新規プロジェクトの場合

File > New Pojectで新規プロジェクトを作成します。

一番上のNew Directoryを押すとProject Typeを聞かれるので、New Projectを選択します。

Directory nameには管理するディレクトリの名前を入力し、その親ディレクトリ(作業フォルダをどこに作成するか)を選択します。好きなように入力・選択してください。
そして、Create a git repositoryのチェックを忘れずに!

Create Projectを押して、黄色い丸のようになってればOKです!

complete.PNG

6. 「Commit」=変更を記録する

何でもいいので、スクリプトを作成して保存しましょう。
何でもいいと言われちゃうと困っちゃう可愛い子には、スーを差し上げます雑なコードを差し上げます。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)

保存まで終わったら、右上のGitタブを開いてみましょう。こんな風になっていると思います。
5.PNG

この二つ並んだのアイコンはStatusと言います。左側がGitの状態、右側がディレクトリの状態を表します。
アイコンが2つ並んでいると、そのファイルがGitによる管理の対象になっていないことを意味します。
なので、Gitに「このファイルの変更を追ってください!」とお願いしましょう。

GitでいうCommitとは、簡単に言うと、Gitにファイルの変更を記録すること をいいます。
近くにCommitというボタンがあるので押してみましょう。Review Changesウィンドウが立ち上がります。

キャプチャ.PNG
こんな画面が出てきたら、Stagedにチェックを入れましょう。
すると、先ほどまでだったアイコンがAになりました。
AAddedの略で、変更の追跡対象を追加することを意味します。

右上のCommit messageには、変更の記録の概要などをメモできます。
とりあえず何でもいいので書いておきましょう。日本語もOKです。

ここまで出来たら、Commitボタンを押しましょう。
コマンドプロンプトっぽいのを閉じると、先ほどまで左上にあったファイルたちが消えていれば完了です。

Statusのアイコンの詳細な意味はコチラを参照してください。

スクリプトを書き換えて変更を記録してみる

先ほど作成・保存したスクリプトを、何でもいいので一部を適当に変えて上書き保存してみてください。
僕の作った例の雑コードは、線形回帰の関数lm()の説明変数と目的変数を入れ替えてみました。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Width ~ Sepal.Length, data = iris)
summary(result)

上書き保存すると、Statusの右側(ディレクトリ側)にMアイコンが灯りました。MModifiedの略、つまり変更が加えられたということを意味します。
6.PNG

では、この変更をGitに記録させましょう。
先ほどのようにCommitを押してReview Changesウィンドウを開いてみましょう。
Review Changesウィンドウでは、どこに変更が加えられたか、一発でわかるようになっています。赤色が変更前、緑色が変更後です。

そして同じように、チェックを入れて変更の概要を記述します。
チェックを入れると、Mが右から左に移るのが確認できると思います。これは、「Commitする(変更を記録する)とGit側で管理しているファイルをModified(変更)しますよー」ということを意味します。チェックを入れただけの段階ではまだGit側には変更は記録されず、Commitボタンを押すことで初めて変更がGit側に記録されます。

ちなみに、さっきからチェックを入れているStagedとは、対象を変更の記録をGitに反映させることを意味します。「まだこのファイルの変更はGitに記録したくないんだよなー」というときは、チェックを入れなければ記録されません。チェックしたファイルの変更だけがGitに反映されます。

ではでは、押してみましょう。
先ほどのようにファイル欄がクリアになったら成功です。

7. 変更履歴を確認したい

  • いつ、どのような変更を加えたか
  • 過去のバージョンを見たい・保存したい

などを知るために、Historyを確認しましょう。
先ほど開いていたReview Changesウィンドウの左上にあるHistoryをクリックするか、RStudioのGitタブにある時計マークをクリックします。
8.PNG
7.PNG

Historyでは、

  • ファイルの過去バージョンの参照
  • 変更履歴のメタデータ(日付・作成者など)の確認
  • Commit messageの閲覧
  • 前バージョンからの変更点の確認

などが出来ます。

ウィンドウの下半分には、選択したバージョンの、ひとつ前のバージョンからの変更点が記載されます。前バージョンから変更点がない場合は載らないので留意してください。

9.PNG

もしファイル数が膨大だったり内容の変更が多い場合など、スクロールして探すのが面倒な場合は、見たいファイルをクリックするとジャンプできます。iris.Rの変更点が見たい場合は、下の画像の赤丸部分をクリックです。
13.png

8. バージョンを戻してみよう

バージョン戻しはざっくり以下の2つあります。

  • Commitを押しちゃったけど、それ以前の作業履歴まで遡りたい場合。
  • まだCommitを押してなくて、作業前の状態(直近のCommitを押した時点)まで遡りたい場合。

直近のCommitより過去まで遡りたい場合

Commitを押しちゃったけど、やっぱりCommit押す前のほうが良かった!という場合、Gitを使ってると簡単に過去のバージョンに参照できます。

戻し方は色々ありますが、ここは一番ベーシックなやり方でやってみましょう。
今回は、スクリプトファイル(iris.R)をinitial commit(最初のコミット時点)まで復元しましょう。

1. Historyで戻したいポイントを参照する

今回はinitial commitまで遡るので、その時点の履歴を参照しましょう。

10.PNG

2. 戻したいファイルのView fileをクリック

下の画像のように、過去のバージョンを閲覧できるリンクがあるのでクリックして開きましょう。

12.PNG

すると、過去の状態のものが表示されます。これを上書き保存しましょう。

14.PNG

RStudioに戻ると、スクリプトに変更が加わったことによるMが表示されたことを確認できます。あとは、これを再度Commitさせれば完了です。

15.PNG

Commit押す前で、直近まで遡りたい場合

例えば、今日の作業、失敗だったなーーー。今日の作業はなかったことにしたいなーーー。という場合。
かつ、まだ失敗した作業内容をGitに記録させてない(Commitを押していない)場合

この場合は、とても簡単で手軽です。
先ほどのスクリプトを、今度はこうしてみましょう。書いたら ファイルは上書き保存しますが、Commitはしないでください。右列にMと表示されていればOKです。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)
# いらないメモ

この# いらないメモを書く前の状態に戻したい場合、つまり、以下のような直近でCommitした時点のバージョンに戻したいということです。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)

例のごとく、Review Changesウィンドウを開きましょう。

今回はCommitではなくRevertというボタンを押してみると、「選択したファイルの変更が失われるけどいい?(超意訳)」とお尋ねが来るので、元気よくYesを押しましょう。

16.PNG

するとあら不思議。元通りに戻りましたとさ。めでたし。

17.PNG

9. まとめ

ここまでが僕的エッセンスです。

とりあえず一人で作業をする分にはここまででも十分かなーーーと思います。
これ以降はQiitaで検索するかググればなんとかなるかも。
活用しよう、集合知。

とりあえずブランチとかプルとかブッシュとか、そういう概念を知らなくても、RStudio上でプロジェクト管理ができましたね。
かくいう僕は、GitHubとも同期させて、自宅のデスクトップとノートPCで変更を共有させてます。
そういう使い方まで書きたかったのですが、それは機会があればまた書きます。

Enjoy!

おしまい。

今後追加したいコンテンツ

余力があれば、今後この辺のコンテンツを追加したいと思います。
別記事にするかもしれません。

  • 既存のRプロジェクトをGitで管理する
  • ブランチとは何ぞ
  • GitHubとの連携
  • Push・Pullとは何ぞ

なお、この辺について知りたい方は、他の方の記事にあると思いますので、是非調べてみてください。

10. 参考文献

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

【RStudio】Gitに恋してプロジェクト管理 ~ 基礎篇

1. 趣旨

最近になって、Rのスクリプトやプロジェクトの管理をGitで始めました。

いや~~~~~非常に便利。
僕の中ではイノベーション。
これはスクリプト書くのが楽しくなる。

ということで、「Gitって何?食べられるの?」という過去の僕に向けた超入門。
GitとRStudioとの連携については、意外と超初心者向けのサイトが少なかったので、需要あるといいなぁ~~~。

留意点

  • この記事は、RStudioでプロジェクト管理を行うための超最低限のこと しか書いてません。Python等その他の環境での利用については全く考慮していません。
  • 肌感覚での理解で書いてます。厳密・正確な文言や使用法ではないかもです。
  • この記事は 僕のようなマジの初心者向け なので、Gitがある程度分かるという人は、この記事よりもコチラの記事のほうが参考になります。
    RStudioではじめるGitによるバージョン管理 - Qiita

環境

  • Windows 10 x64
  • R 3.6.2
  • RStudio 1.2.1335

2. Git × RStudioでできること

多分この記事を開いてる時点で、多少Gitやプロジェクト管理に興味がある状態のはずですが、改めて。
RStudioとGitを連携させて何ができるかと問われれば、 ずばり!バージョン管理です。具体的には、こんなことができます。

  • スクリプトの変更履歴の保存
  • プロジェクトのバックアップ・復元
  • パソコン間(ノート・デスクトップ)でのプロジェクトの同期

ね?なかなか魅力的でしょ? かくいう僕も院生フレンズに教えてもらったのですが、慣れるとプロジェクト全体のバックアップにもなるし、スクリプトを書くのがすごーく楽しくなる。

しかーし! 「Gitって何だ?」という僕にとっては中々難しく、用語も沢山出てくるので、最初は全く訳のわからないままブランチ(ほらね出てきたよ、、、)を大量に切ってしまったり、いつの間にかmaster(まーた知らないコトバが出てきたよ、、、)が消えたり、それはもう散々な目に遭いました。

「愚者は経験に学び、賢者は歴史に学ぶ」なんて言いますが、愚者たる僕の経験を歴史として笑って、皆さんは賢者になってください。

Git導入前のぼく

今まではスクリプトを書き直すたびにファイル名を変更してバックアップを取ってましたが、こんな問題点がありました。

  • どれが最終版?
  • 他人が作成したコードって自分のに反映したっけ?
  • このファイル、消して良いのか?
  • そもそも何を修正したんだっけ?
  • 前のバージョンに戻りたいんだけど、バックアップしてない・・・。

こういう問題が発生すると、僕の研究へのモチベーションが一気に下がるので、どうしてもモチベーションの維持のためにラーメン二郎を食い、結果として財布は痩せて身体は太ります。
スクリプトの管理もできない奴が、モチベーションと身体と金銭まで管理できるわけがない。

Git導入後のぼく

sugee.PNG

どうですよ。このデキるオトコ感。

  • 最終版がどれか分かる。
  • 変更の概要をメモできる。
  • 変更者・日付などは自動で記録される。
  • スクリプトのどこに変更が加えられたかという変更履歴が一目でわかる。
  • コードの修正等を別プロジェクトとして管理し、反映させることができる。
    それを視覚的にも把握できる。
  • いちいちファイル名を変更していくつもファイル作ったり消したりして管理する必要もない。
  • 必要であれば、過去のバージョンに遡れる。
  • スタバで開くとカッコいい。(検証済)
  • モテる。(要検証)

さあ、僕と一緒にGitを習得する気になりましたか?

3. Gitとは何なのか

Git自体については僕が説明するより、とても分かりやすい説明を引用させていただきます。

Gitはテキストファイルなどのバージョン管理を行うためのソフトウェアであるとよく言われます。バージョン管理は、ファイルの変更内容や変更履歴を保持しておいて、あとから古い状態に切り戻したりできるようにするためのものです。
つまり、「あぁ……この文章、変える前の方が良かったなぁ……前の状態に戻したいなぁ……」となった時に、前の状態まで(変更がコミットされていれば)復元できるようにするためのものです。
- 君には1時間でGitについて知ってもらう(with VSCode) - Qiita

Git自体はRやRStudio専用というわけではなく、むしろプログラミング全般で使われる管理ソフトです。
もっと活用すると共同作業の管理なども可能ですが、今回はわかりやすさ重視のため想定利用者は自分自身だけとします。

あと細かい説明は省きますが、GitとGitHubは別モノです!
連動させることも出来ますが、設定しない限りは関係ないです。

4. Gitのインストール

こちらからダウンロード。
https://git-scm.com/

基本的に指示に従っておけばOKです。
途中、PATHに関するオプションを聞かれますので、真ん中のUse Git from the Windows Command Promptを選択してください。
git-install06.png
画像:https://zero-config.com/windows/install-git-win-001.html より拝借。

何かオプションなどで困ったら、こちらを参考にしてみてください。
【初心者向け】Gitのインストール方法をわかり易く解説(画面付き)

ユーザー情報の登録

! ATTENTION !
この作業は省略できません!必ずやっておいてください!
省略してしまうと、ファイルのバージョン管理ができません!

インストールが完了したら、コマンドプロンプトを起動 して、次のように入力してください。
これらの情報はネット上ではなくローカルに保存されるので、GitとGitHub等と連動させない限りユーザー名もメアドも公開されないので安心してください

なお、後々GitHub等との連携を考えている場合は、ユーザー名については公開される点に留意してください。
メアドについては、公開 / 非公開の選択が可能ですが、デフォルトでは公開されます。
どうしても気になる方は、捨てアドを作って登録するという選択肢もあります。

また、GitHubと連動させていることが前提ですが、メアドの非公開化については、以下を参考にしてください。
GitHubのメールアドレスを非公開に設定する - kina's tech memo

ユーザー名は本名以外でもOKです。

git config --global user.name "ユーザー名"
git config --global user.email メールアドレス

これで準備OKです。

5. RStudioと連携させよう

さあ、インストールとユーザー情報の登録が完了したらRStudioとGitを繋げましょう!
初めての方は理解のために、まずは新規プロジェクトのパターンから始めることをおすすめします。

新規プロジェクトの場合

File > New Pojectで新規プロジェクトを作成します。

一番上のNew Directoryを押すとProject Typeを聞かれるので、New Projectを選択します。

Directory nameには管理するディレクトリの名前を入力し、その親ディレクトリ(作業フォルダをどこに作成するか)を選択します。好きなように入力・選択してください。
そして、Create a git repositoryのチェックを忘れずに!

Create Projectを押して、黄色い丸のようになってればOKです!

complete.PNG

6. 「Commit」=変更を記録する

何でもいいので、スクリプトを作成して保存しましょう。
何でもいいと言われちゃうと困っちゃう可愛い子には、スーを差し上げます雑なコードを差し上げます。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)

保存まで終わったら、右上のGitタブを開いてみましょう。こんな風になっていると思います。
5.PNG

この二つ並んだのアイコンはStatusと言います。左側がGitの状態、右側がディレクトリの状態を表します。
アイコンが2つ並んでいると、そのファイルがGitによる管理の対象になっていないことを意味します。
なので、Gitに「このファイルの変更を追ってください!」とお願いしましょう。

GitでいうCommitとは、簡単に言うと、Gitにファイルの変更を記録すること をいいます。
近くにCommitというボタンがあるので押してみましょう。Review Changesウィンドウが立ち上がります。

キャプチャ.PNG
こんな画面が出てきたら、Stagedにチェックを入れましょう。
すると、先ほどまでだったアイコンがAになりました。
AAddedの略で、変更の追跡対象を追加することを意味します。

右上のCommit messageには、変更の記録の概要などをメモできます。
とりあえず何でもいいので書いておきましょう。日本語もOKです。

ここまで出来たら、Commitボタンを押しましょう。
コマンドプロンプトっぽいのを閉じると、先ほどまで左上にあったファイルたちが消えていれば完了です。

Statusのアイコンの詳細な意味はコチラを参照してください。

スクリプトを書き換えて変更を記録してみる

先ほど作成・保存したスクリプトを、何でもいいので一部を適当に変えて上書き保存してみてください。
僕の作った例の雑コードは、線形回帰の関数lm()の説明変数と目的変数を入れ替えてみました。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Width ~ Sepal.Length, data = iris)
summary(result)

上書き保存すると、Statusの右側(ディレクトリ側)にMアイコンが灯りました。MModifiedの略、つまり変更が加えられたということを意味します。
6.PNG

では、この変更をGitに記録させましょう。
先ほどのようにCommitを押してReview Changesウィンドウを開いてみましょう。
Review Changesウィンドウでは、どこに変更が加えられたか、一発でわかるようになっています。赤色が変更前、緑色が変更後です。

そして同じように、チェックを入れて変更の概要を記述します。
チェックを入れると、Mが右から左に移るのが確認できると思います。これは、「Commitする(変更を記録する)とGit側で管理しているファイルをModified(変更)しますよー」ということを意味します。チェックを入れただけの段階ではまだGit側には変更は記録されず、Commitボタンを押すことで初めて変更がGit側に記録されます。

ちなみに、さっきからチェックを入れているStagedとは、対象を変更の記録をGitに反映させることを意味します。「まだこのファイルの変更はGitに記録したくないんだよなー」というときは、チェックを入れなければ記録されません。チェックしたファイルの変更だけがGitに反映されます。

ではでは、押してみましょう。
先ほどのようにファイル欄がクリアになったら成功です。

7. 変更履歴を確認したい

  • いつ、どのような変更を加えたか
  • 過去のバージョンを見たい・保存したい

などを知るために、Historyを確認しましょう。
先ほど開いていたReview Changesウィンドウの左上にあるHistoryをクリックするか、RStudioのGitタブにある時計マークをクリックします。
8.PNG
7.PNG

Historyでは、

  • ファイルの過去バージョンの参照
  • 変更履歴のメタデータ(日付・作成者など)の確認
  • Commit messageの閲覧
  • 前バージョンからの変更点の確認

などが出来ます。

ウィンドウの下半分には、選択したバージョンの、ひとつ前のバージョンからの変更点が記載されます。前バージョンから変更点がない場合は載らないので留意してください。

9.PNG

もしファイル数が膨大だったり内容の変更が多い場合など、スクロールして探すのが面倒な場合は、見たいファイルをクリックするとジャンプできます。iris.Rの変更点が見たい場合は、下の画像の赤丸部分をクリックです。
13.png

8. バージョンを戻してみよう

バージョン戻しはざっくり以下の2つあります。

  • Commitを押しちゃったけど、それ以前の作業履歴まで遡りたい場合。
  • まだCommitを押してなくて、作業前の状態(直近のCommitを押した時点)まで遡りたい場合。

直近のCommitより過去まで遡りたい場合

Commitを押しちゃったけど、やっぱりCommit押す前のほうが良かった!という場合、Gitを使ってると簡単に過去のバージョンに参照できます。

戻し方は色々ありますが、ここは一番ベーシックなやり方でやってみましょう。
今回は、スクリプトファイル(iris.R)をinitial commit(最初のコミット時点)まで復元しましょう。

1. Historyで戻したいポイントを参照する

今回はinitial commitまで遡るので、その時点の履歴を参照しましょう。

10.PNG

2. 戻したいファイルのView fileをクリック

下の画像のように、過去のバージョンを閲覧できるリンクがあるのでクリックして開きましょう。

12.PNG

すると、過去の状態のものが表示されます。これを上書き保存しましょう。

14.PNG

RStudioに戻ると、スクリプトに変更が加わったことによるMが表示されたことを確認できます。あとは、これを再度Commitさせれば完了です。

15.PNG

Commit押す前で、直近まで遡りたい場合

例えば、今日の作業、失敗だったなーーー。今日の作業はなかったことにしたいなーーー。という場合。
かつ、まだ失敗した作業内容をGitに記録させてない(Commitを押していない)場合

この場合は、とても簡単で手軽です。
先ほどのスクリプトを、今度はこうしてみましょう。書いたら ファイルは上書き保存しますが、Commitはしないでください。右列にMと表示されていればOKです。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)
# いらないメモ

この# いらないメモを書く前の状態に戻したい場合、つまり、以下のような直近でCommitした時点のバージョンに戻したいということです。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)

例のごとく、Review Changesウィンドウを開きましょう。

今回はCommitではなくRevertというボタンを押してみると、「選択したファイルの変更が失われるけどいい?(超意訳)」とお尋ねが来るので、元気よくYesを押しましょう。

16.PNG

するとあら不思議。元通りに戻りましたとさ。めでたし。

17.PNG

9. まとめ

ここまでが僕的エッセンスです。

とりあえず一人で作業をする分にはここまででも十分かなーーーと思います。
これ以降はQiitaで検索するかググればなんとかなるかも。
活用しよう、集合知。

とりあえずブランチとかプルとかブッシュとか、そういう概念を知らなくても、RStudio上でプロジェクト管理ができましたね。
かくいう僕は、GitHubとも同期させて、自宅のデスクトップとノートPCで変更を共有させてます。
そういう使い方まで書きたかったのですが、それは機会があればまた書きます。

Enjoy!

おしまい。

今後追加したいコンテンツ

余力があれば、今後この辺のコンテンツを追加したいと思います。
別記事にするかもしれません。

  • 既存のRプロジェクトをGitで管理する
  • ブランチとは何ぞ
  • GitHubとの連携
  • Push・Pullとは何ぞ

なお、この辺について知りたい方は、他の方の記事にあると思いますので、是非調べてみてください。

10. 参考文献

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

【RStudio】Gitに恋してプロジェクト管理 ~ 基礎篇 〜

1. 趣旨

最近になって、Rのスクリプトやプロジェクトの管理をGitで始めました。

いや~~~~~非常に便利。
僕の中ではイノベーション。
これはスクリプト書くのが楽しくなる。

ということで、「Gitって何?食べられるの?」という過去の僕に向けた超入門。
GitとRStudioとの連携については、意外と超初心者向けのサイトが少なかったので、需要あるといいなぁ~~~。

留意点

  • この記事は、RStudioでプロジェクト管理を行うための超最低限のこと しか書いてません。Python等その他の環境での利用については全く考慮していません。
  • 肌感覚での理解で書いてます。厳密・正確な文言や使用法ではないかもです。
  • この記事は 僕のようなマジの初心者向け なので、Gitがある程度分かるという人は、この記事よりもコチラの記事のほうが参考になります。
    RStudioではじめるGitによるバージョン管理 - Qiita

環境

  • Windows 10 x64
  • R 3.6.2
  • RStudio 1.2.1335

2. Git × RStudioでできること

多分この記事を開いてる時点で、多少Gitやプロジェクト管理に興味がある状態のはずですが、改めて。
RStudioとGitを連携させて何ができるかと問われれば、 ずばり!バージョン管理です。具体的には、こんなことができます。

  • スクリプトの変更履歴の保存
  • プロジェクトのバックアップ・復元
  • パソコン間(ノート・デスクトップ)でのプロジェクトの同期

ね?なかなか魅力的でしょ? かくいう僕も院生フレンズに教えてもらったのですが、慣れるとプロジェクト全体のバックアップにもなるし、スクリプトを書くのがすごーく楽しくなる。

しかーし! 「Gitって何だ?」という僕にとっては中々難しく、用語も沢山出てくるので、最初は全く訳のわからないままブランチ(ほらね出てきたよ、、、)を大量に切ってしまったり、いつの間にかmaster(まーた知らないコトバが出てきたよ、、、)が消えたり、それはもう散々な目に遭いました。

「愚者は経験に学び、賢者は歴史に学ぶ」なんて言いますが、愚者たる僕の経験を歴史として笑って、皆さんは賢者になってください。

Git導入前のぼく

今まではスクリプトを書き直すたびにファイル名を変更してバックアップを取ってましたが、こんな問題点がありました。

  • どれが最終版?
  • 他人が作成したコードって自分のに反映したっけ?
  • このファイル、消して良いのか?
  • そもそも何を修正したんだっけ?
  • 前のバージョンに戻りたいんだけど、バックアップしてない・・・。

こういう問題が発生すると、僕の研究へのモチベーションが一気に下がるので、どうしてもモチベーションの維持のためにラーメン二郎を食い、結果として財布は痩せて身体は太ります。
スクリプトの管理もできない奴が、モチベーションと身体と金銭まで管理できるわけがない。

Git導入後のぼく

sugee.PNG

どうですよ。このデキるオトコ感。

  • 最終版がどれか分かる。
  • 変更の概要をメモできる。
  • 変更者・日付などは自動で記録される。
  • スクリプトのどこに変更が加えられたかという変更履歴が一目でわかる。
  • コードの修正等を別プロジェクトとして管理し、反映させることができる。
    それを視覚的にも把握できる。
  • いちいちファイル名を変更していくつもファイル作ったり消したりして管理する必要もない。
  • 必要であれば、過去のバージョンに遡れる。
  • スタバで開くとカッコいい。(検証済)
  • モテる。(要検証)

さあ、僕と一緒にGitを習得する気になりましたか?

3. Gitとは何なのか

Git自体については僕が説明するより、とても分かりやすい説明を引用させていただきます。

Gitはテキストファイルなどのバージョン管理を行うためのソフトウェアであるとよく言われます。バージョン管理は、ファイルの変更内容や変更履歴を保持しておいて、あとから古い状態に切り戻したりできるようにするためのものです。
つまり、「あぁ……この文章、変える前の方が良かったなぁ……前の状態に戻したいなぁ……」となった時に、前の状態まで(変更がコミットされていれば)復元できるようにするためのものです。
- 君には1時間でGitについて知ってもらう(with VSCode) - Qiita

Git自体はRやRStudio専用というわけではなく、むしろプログラミング全般で使われる管理ソフトです。
もっと活用すると共同作業の管理なども可能ですが、今回はわかりやすさ重視のため想定利用者は自分自身だけとします。

あと細かい説明は省きますが、GitとGitHubは別モノです!
連動させることも出来ますが、設定しない限りは関係ないです。

4. Gitのインストール

こちらからダウンロード。
https://git-scm.com/

基本的に指示に従っておけばOKです。
途中、PATHに関するオプションを聞かれますので、真ん中のUse Git from the Windows Command Promptを選択してください。
git-install06.png
画像:https://zero-config.com/windows/install-git-win-001.html より拝借。

何かオプションなどで困ったら、こちらを参考にしてみてください。
【初心者向け】Gitのインストール方法をわかり易く解説(画面付き)

ユーザー情報の登録

! ATTENTION !
この作業は省略できません!必ずやっておいてください!
省略してしまうと、ファイルのバージョン管理ができません!

インストールが完了したら、コマンドプロンプトを起動 して、次のように入力してください。
これらの情報はネット上ではなくローカルに保存されるので、GitとGitHub等と連動させない限りユーザー名もメアドも公開されないので安心してください

なお、後々GitHub等との連携を考えている場合は、ユーザー名については公開される点に留意してください。
メアドについては、公開 / 非公開の選択が可能ですが、デフォルトでは公開されます。
どうしても気になる方は、捨てアドを作って登録するという選択肢もあります。

また、GitHubと連動させていることが前提ですが、メアドの非公開化については、以下を参考にしてください。
GitHubのメールアドレスを非公開に設定する - kina's tech memo

ユーザー名は本名以外でもOKです。

git config --global user.name "ユーザー名"
git config --global user.email メールアドレス

これで準備OKです。

5. RStudioと連携させよう

さあ、インストールとユーザー情報の登録が完了したらRStudioとGitを繋げましょう!
初めての方は理解のために、まずは新規プロジェクトのパターンから始めることをおすすめします。

新規プロジェクトの場合

File > New Pojectで新規プロジェクトを作成します。

一番上のNew Directoryを押すとProject Typeを聞かれるので、New Projectを選択します。

Directory nameには管理するディレクトリの名前を入力し、その親ディレクトリ(作業フォルダをどこに作成するか)を選択します。好きなように入力・選択してください。
そして、Create a git repositoryのチェックを忘れずに!

Create Projectを押して、黄色い丸のようになってればOKです!

complete.PNG

6. 「Commit」=変更を記録する

何でもいいので、スクリプトを作成して保存しましょう。
何でもいいと言われちゃうと困っちゃう可愛い子には、スーを差し上げます雑なコードを差し上げます。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)

保存まで終わったら、右上のGitタブを開いてみましょう。こんな風になっていると思います。
5.PNG

この二つ並んだのアイコンはStatusと言います。左側がGitの状態、右側がディレクトリの状態を表します。
アイコンが2つ並んでいると、そのファイルがGitによる管理の対象になっていないことを意味します。
なので、Gitに「このファイルの変更を追ってください!」とお願いしましょう。

GitでいうCommitとは、簡単に言うと、Gitにファイルの変更を記録すること をいいます。
近くにCommitというボタンがあるので押してみましょう。Review Changesウィンドウが立ち上がります。

キャプチャ.PNG
こんな画面が出てきたら、Stagedにチェックを入れましょう。
すると、先ほどまでだったアイコンがAになりました。
AAddedの略で、変更の追跡対象を追加することを意味します。

右上のCommit messageには、変更の記録の概要などをメモできます。
とりあえず何でもいいので書いておきましょう。日本語もOKです。

ここまで出来たら、Commitボタンを押しましょう。
コマンドプロンプトっぽいのを閉じると、先ほどまで左上にあったファイルたちが消えていれば完了です。

Statusのアイコンの詳細な意味はコチラを参照してください。

スクリプトを書き換えて変更を記録してみる

先ほど作成・保存したスクリプトを、何でもいいので一部を適当に変えて上書き保存してみてください。
僕の作った例の雑コードは、線形回帰の関数lm()の説明変数と目的変数を入れ替えてみました。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Width ~ Sepal.Length, data = iris)
summary(result)

上書き保存すると、Statusの右側(ディレクトリ側)にMアイコンが灯りました。MModifiedの略、つまり変更が加えられたということを意味します。
6.PNG

では、この変更をGitに記録させましょう。
先ほどのようにCommitを押してReview Changesウィンドウを開いてみましょう。
Review Changesウィンドウでは、どこに変更が加えられたか、一発でわかるようになっています。赤色が変更前、緑色が変更後です。

そして同じように、チェックを入れて変更の概要を記述します。
チェックを入れると、Mが右から左に移るのが確認できると思います。これは、「Commitする(変更を記録する)とGit側で管理しているファイルをModified(変更)しますよー」ということを意味します。チェックを入れただけの段階ではまだGit側には変更は記録されず、Commitボタンを押すことで初めて変更がGit側に記録されます。

ちなみに、さっきからチェックを入れているStagedとは、対象を変更の記録をGitに反映させることを意味します。「まだこのファイルの変更はGitに記録したくないんだよなー」というときは、チェックを入れなければ記録されません。チェックしたファイルの変更だけがGitに反映されます。

ではでは、押してみましょう。
先ほどのようにファイル欄がクリアになったら成功です。

7. 変更履歴を確認したい

  • いつ、どのような変更を加えたか
  • 過去のバージョンを見たい・保存したい

などを知るために、Historyを確認しましょう。
先ほど開いていたReview Changesウィンドウの左上にあるHistoryをクリックするか、RStudioのGitタブにある時計マークをクリックします。
8.PNG
7.PNG

Historyでは、

  • ファイルの過去バージョンの参照
  • 変更履歴のメタデータ(日付・作成者など)の確認
  • Commit messageの閲覧
  • 前バージョンからの変更点の確認

などが出来ます。

ウィンドウの下半分には、選択したバージョンの、ひとつ前のバージョンからの変更点が記載されます。前バージョンから変更点がない場合は載らないので留意してください。

9.PNG

もしファイル数が膨大だったり内容の変更が多い場合など、スクロールして探すのが面倒な場合は、見たいファイルをクリックするとジャンプできます。iris.Rの変更点が見たい場合は、下の画像の赤丸部分をクリックです。
13.png

8. バージョンを戻してみよう

バージョン戻しはざっくり以下の2つあります。

  • Commitを押しちゃったけど、それ以前の作業履歴まで遡りたい場合。
  • まだCommitを押してなくて、作業前の状態(直近のCommitを押した時点)まで遡りたい場合。

直近のCommitより過去まで遡りたい場合

Commitを押しちゃったけど、やっぱりCommit押す前のほうが良かった!という場合、Gitを使ってると簡単に過去のバージョンに参照できます。

戻し方は色々ありますが、ここは一番ベーシックなやり方でやってみましょう。
今回は、スクリプトファイル(iris.R)をinitial commit(最初のコミット時点)まで復元しましょう。

1. Historyで戻したいポイントを参照する

今回はinitial commitまで遡るので、その時点の履歴を参照しましょう。

10.PNG

2. 戻したいファイルのView fileをクリック

下の画像のように、過去のバージョンを閲覧できるリンクがあるのでクリックして開きましょう。

12.PNG

すると、過去の状態のものが表示されます。これを上書き保存しましょう。

14.PNG

RStudioに戻ると、スクリプトに変更が加わったことによるMが表示されたことを確認できます。あとは、これを再度Commitさせれば完了です。

15.PNG

Commit押す前で、直近まで遡りたい場合

例えば、今日の作業、失敗だったなーーー。今日の作業はなかったことにしたいなーーー。という場合。
かつ、まだ失敗した作業内容をGitに記録させてない(Commitを押していない)場合

この場合は、とても簡単で手軽です。
先ほどのスクリプトを、今度はこうしてみましょう。書いたら ファイルは上書き保存しますが、Commitはしないでください。右列にMと表示されていればOKです。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)
# いらないメモ

この# いらないメモを書く前の状態に戻したい場合、つまり、以下のような直近でCommitした時点のバージョンに戻したいということです。

iris.R
plot(iris$Petal.Length, iris$Petal.Width)
result <- lm(Sepal.Length ~ Sepal.Width, data = iris)
summary(result)

例のごとく、Review Changesウィンドウを開きましょう。

今回はCommitではなくRevertというボタンを押してみると、「選択したファイルの変更が失われるけどいい?(超意訳)」とお尋ねが来るので、元気よくYesを押しましょう。

16.PNG

するとあら不思議。元通りに戻りましたとさ。めでたし。

17.PNG

9. まとめ

ここまでが僕的エッセンスです。

とりあえず一人で作業をする分にはここまででも十分かなーーーと思います。
これ以降はQiitaで検索するかググればなんとかなるかも。
活用しよう、集合知。

とりあえずブランチとかプルとかブッシュとか、そういう概念を知らなくても、RStudio上でプロジェクト管理ができましたね。
かくいう僕は、GitHubとも同期させて、自宅のデスクトップとノートPCで変更を共有させてます。
そういう使い方まで書きたかったのですが、それは機会があればまた書きます。

Enjoy!

おしまい。

今後追加したいコンテンツ

余力があれば、今後この辺のコンテンツを追加したいと思います。
別記事にするかもしれません。

  • 既存のRプロジェクトをGitで管理する
  • ブランチとは何ぞ
  • GitHubとの連携
  • Push・Pullとは何ぞ

なお、この辺について知りたい方は、他の方の記事にあると思いますので、是非調べてみてください。

10. 参考文献

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

git コマンド一覧(簡易版)

git push するまでの一連の流れ

ブランチ一覧

$ git branch

※ ブランチ一覧・現在自分がいるブランチを確認できる。

ブランチ作成

$ git branch { ブランチ名 }  //ブランチを作成
$ git checkout { ブランチ名 }  //作成したブランチに移動
            or
$ git checkout -b { ブランチ名 }  //ブランチ作成・移動(便利!)

※ master or develop ブランチ(親)から、新しいブランチを作成する

作成したブランチで作業開始!

作業が終了したら....

更新までの流れ

$ git add .  //変更を追加
$ git commit "{ コメント }"  //コミット
$ git push origin {自分のブランチ名} //pushして更新

※ git commit のコメントは どのような事をしたか、コメントを記載する(1行で)
※ ローカルの変更をリモートに反映(更新)する為にpushをする

その後は...
・プルリク作成
・レビューをしてもらう
・ファイル修正  などなど。

また、新しい作業を行う時は、
・master or develop(親) ブランチに移動
・git pull して最新の変更を取り込む
・新しいブランチを作成
という流れになる。

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

gitコマンドのエイリアスでも補完したい

前提

git-completion.bash を導入している.

方法

vim ~/path/to/your/.git-completion

こいつにエイリアスを登録してやるだけ.

__git_complete [alias] _git_command

みたいな感じ.
実際には

__git_complete git __git_main
__git_complete gitk  __gitk_main
# 以下にエイリアスに合わせた形式で追加
__git_complete cko _git_checkout
__git_complete br _git_br

こんな感じになる.

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

今日のコミット一覧をシンプルに出力する

$ git log --oneline --branches --since=midnight --format='%ad %s' --date=iso \
| grep --color=none  `date '+%Y-%m-%d'` \
| sed -e 's/2020-[0-9]*-[0-9]* //g' \
| sed -e 's/ +0900//g'

17:52:21 ✨ xxxを作成
14:56:56 ✨ xxxの情報を返すように
12:11:18 ? xxxを調整

--since=midnight で本日のコミットを出力できたりするのだが、前の日のコミットに fixup したりするものも
出力してしまうのが少し気になったので、 grepで絞り込んでいる

あとは日付とオフセットの情報もいらないので、sedで除外

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

gitで間違えてmasterにpushしてしまった時

masterにpush...

常に自身のいるブランチを意識していたはずなのに、うっかりやってしまった・・・個人的には焦る瞬間です。この時にはどうすればいいのか・・・間違った対処と正しい対処の二つを書こうと思います。

間違った対処(あまりよろしくない)

$ git reset --hard
$ git push origin master -f

ログを抹消してなかったことにしようとするのを思いつきそうですが、これは自分の作業内容を完全に吹っ飛ばしますし、masterへのpushを-fつけて強制で行うと、もし、自分のローカルmasterがリモートにあるmasterより古いものだったら、その古いところまで逆戻りさせることになるので、他の人の作業内容も吹っ飛ぶことになります。実際自分は五日分の時間を巻き戻しました。運よく、最新のmasterを大ベテランの方がローカルに持っていてくれたおかげでことなきを得ましたが、本当に心臓に悪いです。私は若干の吐き気を催しました。masterを最新で持っていたとしても、やった内容が吹き飛ぶのでやるのはよくないです。

正しい対処

$ git checkout master
$ git pull
$ git checkout -b 取消用のブランチ名


自分の作業内容を元に戻す


$ git push origin 取消用のブランチ名

github上でmergeする

で、その後に、gitのコミットの差分状から作業内容を復帰させて、作業ブランチ上で、pushする。

もしくは

$ git log

自分の間違えたコミットのIDを見つける

$ git revert 間違えたコミットのID

$ git pull
$ git checkout 本来のpushすべき作業ブランチ
$ git merge master
$ git add .
$ git commit -m "コミットメッセージ"
$ git push origin 本来のpushすべき作業ブランチ

git revertは引数に指定したコミットを取消し、addする前まで戻してくれます。念のため、ローカルのmasterをpullで最新にし、作業ブランチでも最新の状態をmergeで反映させてから、本来自分がpushすべきだった作業ブランチへpushします。

まとめ

revertを使う方法が、gitの方では推奨されているようです。
両者の手法はログを汚すことになりますが、こちらの方が間違いはなく、かつ安心です。そしてすぐに申し訳ありませんと言うということです。

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

毎朝gitでやるプロダクト管理習慣

Gitを理解するために結構アウトプットしてきたのに・・・

今まで、結構gitに関する自分の覚書だったり、仕組みを理解するための記事だったりをアウトプットしてきたのですが、そも、コンフリクトを起こさないようにするためにはどうしたらいいのか・・・など、仕組みを理解しても、実践的に扱うことに特化したアウトプットができていなかったのには問題があった・・・頭でっかちの典型に自分が陥っていたことを踏まえ、反省と習慣化させるために、アウトプットします。

こちらは以前まとめたgitコマンドの記事です。
機能だけで覚える基本的なGitコマンド 〜ほぼほぼ作業順〜 

朝はmasterを頂くことから始める

複数人開発において、gitをいじるのは当然で、きっとリモートのmasterは明日になる頃には、自分が昨日いたところから進んでいる可能性がある。

だから、まず、ローカルのmasterへ移動、リモートのmasterをゲット。

$ git checkout master
$ git pull origin master

加えて、自分の作業ブランチが昨日の段階で切られていた場合、その作業ブランチに対しても、その最新のmasterの内容を反映させてあげてから、自分の今持っている作業に取り掛かることが必要です。

$ git checkout 作業ブランチ名
$ git merge master

これで、安心して自分の作業に戻ることができます。

何で朝?それは私の人間性・・・

作業してから後でmasterを反映させるでも問題ないのですが、私のような人間は忘れたり、取り掛かっている作業を終えた達成感で反映させることを吹っ飛ばすとか平気でやってしまう性格なので、いっちゃん先にやる癖をつけた方がいいと思って、朝まずやろう!という風に自分の中で設定しました。

ミスを無くすために・・・

そもそも、作業ブランチで作業してたらそもそもコンフリクトなんてしないだろ、自分しか触っていないんだから、という視点にだってなれるはず・・・でもなれなかった・・・それはルーティン化にばかり意識していて、仕組みから自身で考察することを疎かにしていたからである。

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

system_specテストにおいて特定のリンクをクリックする方法

テストにおいて特定のリンクをクリックする

スクリーンショット 2020-01-16 16.14.02.jpeg

前提条件

taskアプリを作成してある。(scaffoldでもOK)
gem 'capybara', '>= 2.15'
gem 'rspec-rails'
インストール済

上記画像の黒丸に囲まれた(詳細を確認する)をクリックする

task_spec.rb
#省略
visit tasks_path
tds = page.all('td')
tds[24].click
#省略

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

間違ってアップロードした.ideaを削除する

概要

めちゃくちゃよくやる、間違ってアップロードした.ideaを削除する方法を毎回ググるのがめんどくさいので、覚えるためにメモを残す。

削除

% echo '.idea' >> .gitignore
% git rm -r --cached .idea
% git add .gitignore
% git commit -m "Delete .idea"
% git push
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

master以外のブランチからherokuにpushする方法

railsアプリを作って、herokuをデプロイする(masterブランチ以外からデプロイする方法も同時に載せています。)

1 コミット

$ git add .
$ git commit -m "heroku"
$ git push origin ブランチ名

2 herokuにアプリケーションを新規作成する

$ heroku create

3-1 herokuにデプロイする(masterブランチにいる時)

$ git push heroku master

3-2 herokuにデプロイする(master以外のブランチにいる時)

$ git push heroku <現在いるブランチ名>:master

※3-1 or 3-2 どちらかを実行してください

4 herokuにデータベースを作成する

$ heroku run rails db:migrate

5 アプリケーションを開く

$ heroku open

以上で、完成です。

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

SourceTree for Windows の設定を新しいマシンに移行する

SourceTree for Windows の設定を新しいマシンに移行する

以下のファイルをコピーする。

  • C:\Users\<username>\AppData\Local\Atlassian\SourceTree\bookmarks.xml
  • C:\Users\<username>\AppData\Local\Atlassian\SourceTree\opentabs.xml
  • C:\Users\<username>\AppData\Local\Atlassian\SourceTree\userhosts
  • C:\Users\<username>\AppData\Local\Atlassian\SourceTree.exe<random_string>\<version_number>\user.config

SourceTree for Windows 3.3.6 で移行できることを確認.

公式のソースでは How to Wipe SourceTree Preferences が参考になる. (SourceTree の設定をクリアする手順)

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

間違って消してしまった git stash を元に戻す(PowerShell)

前置き

ある時Gitに残ったStashを整理しようとVSCodeのGitLensを使って消していたのですが、うっかり作業中のStashまで消してしまいました。焦ってGoogle先生に助けを求めたところ、以下の記事に助けられました。

git stashをコミットもなしに消してしまった時の対応 - Qiita

コマンドがMac向けでしたので、Windowsユーザの自分用にPowerShell向けに書き直してみました。

環境

  • Windows 10
  • PowerShell 6.2.2
  • git version 2.17.1.windows.2

本題

まず、Git内にある宙ぶらりんのオブジェクトを確認します。
Git - システム管理

powershell
> git fsck --lost-found
Checking object directories: 100% (256/256), done.
Checking objects: 100% (189/189), done.
dangling commit 5bb836c4a1ecfbcca27d87f66a53007380962efb
dangling commit 7c75d438ab033ddafe60833325b216e8b7355636
dangling commit 137af08c3282051d0ea00c62da76af6d5fb9ae3c

ここではcommitだけですが、blobなども出てきたりするのでフィルタをかけます。

powershell
> git fsck --lost-found | ?{ $_ -match "commit" }

?Where-Objectのエイリアスです。(下で出てくる%ForEach-Objectです)
結果は上と同じですね。(サンプルが悪くて申し訳ないです)
こうして残ったコミットから残したいコミットを探し出すのですが、一々git showするのも手間なのでコミットIDを使って一覧にしてしまいます。

powershell
> git fsck --lost-found | ?{ $_ -match "commit"} | %{ ($_ -split ' ')[2] } | %{ git show --no-patch $_ }
Checking object directories: 100% (256/256), done.
Checking objects: 100% (189/189), done.
commit 5bb836c4a1ecfbcca27d87f66a53007380962efb
Merge: 96ff14c ecb531e
Author: *********
Date:   Thu Oct 26 20:52:35 2017 +0900

    comment
commit 7c75d438ab033ddafe60833325b216e8b7355636
Author: *********
Date:   Thu Jan 16 01:35:01 2020 +0900

    test
commit 137af08c3282051d0ea00c62da76af6d5fb9ae3c
Author: *********
Date:   Thu Jan 16 01:35:36 2020 +0900

    test

こうして一覧にされた宙ぶらりんのコミット群の中から該当するコミットをチェリーピックします。

powershell
git cherry-pick -n -m1 <commit id>

これでローカルに復活させることができました。めでたしめでたし。

サンプルに適当なローカルリポジトリでやりましたが、意外と2017年のコミットとか残っていたりするんですね。多少びっくりしました。

参考URL

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

【備忘録】統合開発環境Eclipseでjavaプログラムを実行~gitを使ってみた

【備忘録】統合開発環境Eclipseでjavaプログラムを実行~gitを使ってみた

初めて統合開発環境Eclipseをインストールし、「Hello world!」の出力までできたので、
そのコードをgithubにpushしてみた。

今後Eclipseを使用していくにあたり、備忘録として残しておく。

  1. github上にリモートリポジトリを作成

    1. githubの画面右上部の「+(プラス)」ボタンを押下し、New Repositoryを選択
    2. Repository nameにリポジトリの名前を入力し、Create repositoryを押下
  2. 「新規Javaプロジェクト」の作成

    1. メニューより[ファイル]→[新規]→[その他]を選択。ウィザードが出てきたら[Javaプロジェクト]を選択して次へをクリック。
    2. 「関連付けられたパースペクティブを開きますか?」のウィンドウがでてきたら「はい」を選択。
    3. 「新規Javaプロジェクト」ウィンドウが表示されるので、[プロジェクト名]欄に、任意のプロジェクト名をつけて「完了」ボタンをクリック。
  3. 「新規Javaクラス」の作成

    1. 新規のプロジェクトを作成したら、「Javaパースペクティブ」が表示される。(「ようこそ」の画面が表示されたままの場合は閉じる)
    2. Eclipseのメニューより、[ファイル]→[新規]→[クラス]を選択して「新規Javaクラス」ウィンドウを表示する。
    3. 名前に「クラス名」を入力。Javaではクラス名の頭文字を大文字にするのが慣例となっているので、クラス名は半角の英数字で分かりやすい名前をつける。public static void mail(String[] args)コメントの生成にチェックを入れて「完了」ボタンをクリック。
  4. Javaプログラムの記述 ~ Hello World! ~

    1. (// TODO 自動生成されたメソッド・スタブ)の下に、「System.out.println("Hello World!");」の1行を追加。
    2. ソース・コードを書いたら、Eclipseのメニューから[ファイル]→[保管]を選択してコードを保存。
  5. Javaプログラムの実行

    1. Javaプログラムを実行するには、Eclipseメニュー下の緑色の「実行」アイコンをクリック。(もしくは、メニューより[実行]→[実行]を選択するか、ショートカットキーの[Ctrl+F11]を押下)
    2. プログラムがエラーなく完了すると、下の「 コンソールビュー 」に「Hello World!」と表示される。
  6. Gitリポジトリを作成する(git init)

    1. Eclipseの「パースペクティブを開く」アイコン、もしくはEclipseメニューの[ウィンドウ(W)]→[パースペクティブを開く(R)]→[パースペクティブ(O)]→[その他(O)]をクリック。
    2. 「パースペクティブを開く」ウィンドウから「Git」を選択して「完了」ボタンを押下。
  7. 新規ローカルGitリポジトリの作成(初期化)

    1. 「Gitパースペクティブ」を開いたら、「新規ローカルGitリポジトリの作成」をクリック。
    2. 「新規Gitリポジトリの作成」-「リポジトリー・ディレクトリー」に任意のフォルダーを指定して「完了」ボタンをクリック。
  8. Gitリポジトリを追跡する(git add)

    1. 新規リポジトリを作成をしたら、管理対象のJavaプロジェクトをGitリポジトリと共有する。「Javaパースペクティブ」アイコンをクリックして、先ほど作成したJavaプロジェクトのパースペクティブに戻る。
    2. 「Javaパッケージ・エクスプローラー」ビューで右クリック→メニューから[チーム]→[プロジェクトの共用]を選択。
    3. 「Gitリポジトリーの構成」ウィンドウのリポジトリー欄に、先ほど作成したGitリポジトリを選択して「完了」ボタンをクリック。
    4. 追跡対象のファイル(pushしたいファイル)を選択して、右クリックメニューから[チーム]→[索引に追加]をクリック。Javaのファイルを索引に追加する事で、ファイルの変更履歴を追跡する。
  9. Gitリポジトリをコミットする(git commit)

    1. 追跡対象となったファイルは、「コミット」することでリポジトリの変更履歴として記録される。パッケージ・エクスプローラーで、変更履歴を管理するファイルを選択し、右クリックメニューから「 [チーム]→[コミット]」を選択。
    2. 「Git ステージングビュー」が表示され、先ほど索引に追加したファイルが「ステージされた変更」ボックスにリストされている。「ステージ」とは、Git用語で索引に追加(add)すること。
    3. ファイルの変更履歴を保存(コミット)するには、「コミット・メッセージ」にコメントを記述してから「コミット」ボタンをクリックする。
    4. コミット履歴を確認。パッケージ・エクスプローラーの右クリックメニューから[チーム]→[ヒストリーに表示]を選択。ヒストリーから「コミットID」や「メッセージ」などを確認する事ができる。
  10. pushする

    1. リポジトリと連携しているプロジェクトを右クリックし、「チーム>リモート>プッシュ」を選択。宛先リポジトリ(1.でリモートリポジトリ作成の際に自動生成されたURLのこと)、ソース参照(master)、宛先参照(master)を選択し、完了する。これでリモートリポジトリへのプッシュが完了。

参照

Eclipseのインストールから使い方まで~EclipseでJavaプログラムを実行してみよう!
EclipseでGitを使う(4)プッシュまでの流れをまとめる。

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