0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

git githubの復習

Last updated at Posted at 2023-04-27

何者

ITベンチャーでインターンをしている大学生です。

業務中にgitの操作でよく詰まるのでおさらいしてみます

この記事で得られる情報

  • 以下についてふわっとわかる
    • git branch
    • git switch
    • git merge

始めに用意

  1. githubでリポジトリを作成
    1. 僕は名前をgit_testにしました
    2. https://github.com/kajiyai/git_test
  2. ローカルでgit clone
  3. 何かのファイルを作ってadd, commit
    1. 僕は1.txtファイルに”はじめてかいてみた”と書きました
  4. git push
    1. user nameとpasswordが求められる
    2. passwordはプロフィールのsettings>developer toolからpersonal access keyを作成し、入力すると通る

!Untitled.png

現状

リモート、ローカル共に以下

ブランチ

  • master

コミット

  • 1.txt

ローカルでgit logしてみる
Untitled (2).png
Untitled (2).png

Untitled (1).png

git logの読み方

コミット <ハッシュ値>(HEAD - > ローカルブランチ, リモートブランチ )

コミット作成者: メールアドレス

コミット作成時点

HEAD - > は現在自分がいるコミットを指すポインタです

詳しくは以下の記事で紹介されています。

https://qiita.com/ymzkjpx/items/00ff664da60c37458aaa

ケース1: えらいおじさんがリモートでブランチをはやす

はじめに

リモートでgreatman1ブランチをmasterブランチからはやすえらいおじさんがいます。

えらいおじさんに、「このブランチからさらにブランチを切って作業しろ!ブランチ名は分かりやすいように!」と言われました。

作業内容は、”2.txt”ファイルを作成し、「にかいめかいてみた」と書くこと、とメールで言われました。

大まかな流れは、以下のようになります。

  1. えらいおじさん < masterブランチからgreatman1ブランチをはやす
  2. 僕 < greatman1ブランチをローカルに持ってくる
  3. 僕 < greatman1ブランチからtext2ブランチを新しく作成する
  4. 僕 < 「2回目かいてみた」という内容の“2.txt”ファイルを作成する
  5. 僕 < text2ブランチをpushする
  6. 僕 < プルリクエストを立てる
  7. えらいおじさん < チェックして文句を言う
  8. 僕 < 修正する
  9. えらいおじさん < マージする

ステップ1:えらいおじさんがmasterブランチからgreatman1ブランチをはやす

Untitled

この時点でローカルでgit log してみた

Untitled

ステップ2:ローカルにgreatman1ブランチを持ってくる

ここで僕はローカルでgreatman1(リモートと同じ名前の)を切り、そのブランチでリモートの内容をpullする、という事をやってしまいました。gitは、リモートとローカルで完全に履歴が等しくないとpushするときにエラーを出します。履歴が等しいかをどのように判別するかというと、コミットのハッシュ値で判断します(おそらく)。ですので、リモートのブランチをそのままローカルに持ってきたいところです。そこで次のコマンドを打ちます

# ローカルにリモートの状態を反映させます
$ git fetch 

Untitled (4).png

リモートに新しいブランチが出来たことが反映されています
Untitled (5).png

さて、いよいよリモートのgreatman1ブランチをローカルに作ります

参考(https://qiita.com/bitarx/items/ad47c9b91ae9c8272b3f)

(* checkoutコマンドはswitchコマンドとrestoreコマンドに機能分けされたので、なるべくswitchコマンドを使用するようにしています。)

# リモート
git switch -c greatman1

ステップ3:greatman1ブランチからtext2ブランチを新しく作成する

どうやらgitでは、ブランチを作成するタイミングでどこのブランチにいるか、という事が重要らしいのです。ですので、git branch コマンドで今どこにいるのか確認してからブランチを作成します。

Untitled (6).png


# 今いるブランチを確認
git branch 
# text2ブランチを新たに作成
git switch -c text2

ステップ4:テキストファイルの作成

# エディタ(vscodeなど)で2.txtファイルを作成し、保存する

# 一応、今いるブランチを確認
git branch
# text2ブランチにいることを確認し、add,commit
git add 2.txt
git commit -m "にかいめかいてみまし

ステップ5:テキストファイルのpush

ステップ4で2.txtファイルを作成し、コミットを作成しました。このコミットをリモートにpushしていきたいと思います。今作業中のブランチはtext2です。このブランチはリモートには存在しませんが、作成したいリモートのブランチ名を指定することでpushするときに作成されます。現在作業中のブランチ名を流用するのが一般的かと思います。

# git push origin <リモートブランチ名>

git push origin text2

Untitled (7).png

githubのページに行くと、上の画像のようにpushされたぞ、という表示が出ています。

Untitled (8).png

 

これまでリモートになかったtext2ブランチも作られています。

ステップ6:プルリクエストを立てる

プルリクエストは、pullをrequestすることです。自分が書いたコードの正当性をここで主張します。

下の画像(再掲)の緑のボタン(compare &pull request)を押して、修正箇所を書いたりします

Untitled (9).png

下のような画面に映り、タイトルやコメントを残します。

ここでプルリクエストをマージしたいブランチはどこか指定できるので、ここはgreatman1にしておきましょう。プルリクエストとコミットは別の話なので注意しましょう。

Untitled (10).png

ステップ7:えらいおじさんに文句を言われる

えらいおじさんがプルリクエストをみて話しかけてきました。

えらいおじさん < 私は「にかいめかいてみた」と記述して下さいと指示したはずですが、メール確認しました?

僕 < 「2回目かいてみた」と書きました。一生懸命打ちましたが、ダメでしょうか?

えらいおじさん <ふむ、 漢字で書いてあるじゃないか、「2回目」を「にかいめ」に修正しなさい。

僕 < はい(白目)

アカウント一つでえらいおじさん役が出来なかったです。

重大な注**私はいかなるご指摘、コメントも文句だとは思っていません。これは例え話です

ステップ8:修正する

えらいおじさんに言われたとおりに修正します。

# ブランチの確認
git branch

# vscodeで2.txtファイルの修正
git add 2.txt
git commit -m "えらいおじさんのいうとおりにしました"

git push origin text2

Untitled (11).png

ステップ9:えらいおじさんがマージする

えらいおじさんは僕の修正を見て満足そうにうなずき、マージしてくれました。


おまけ

gitのoriginってなんだっけ?

gitがリモートリポジトリにデフォルトでつける名前の事

参考: https://reasonable-code.com/git-origin/

gitでpushするたびにpasswordを聞かれるのが面倒

.envにaccess token コピペすることで対策しました。

リモートのブランチを削除したいとき

この記事を作成する時には使用しました。

通常の開発でも、リリースした機能のリモートブランチを削除するのではないかと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?