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?

ハッカソン初挑戦!初心者のためのGitコマンドまとめ

Posted at

今回、ハッカソンで初めてのアプリ開発を経験しました。その中で理解したgitコマンドについてアウトプットします。GitHubについて、勉強はしたけど実際に使ったことはないといった方が、少しでもスムーズにチーム開発に取り組めることを目標にしています。
IT未経験のため間違っている点がありましたらご指摘いただけますと幸いです。

まず、ゼロからの開発の場合、リモートリポジトリとローカルリポジトリのどちらにも何もない状態からスタートするかと思います。大まかな流れを箇条書きにしてみます。
<リモートリポジトリ>
・リモートリポジトリを作成する(例: GitHub上でmainブランチとdevelopブランチを作成)
<ローカルリポジトリ>
・ローカルリポジトリにクローンする(git clone)
・新しいブランチを作成して切り替える(git switch -c <ブランチ名>)
・作業内容をステージング(git add)し、コミットする(git commit)
・リモートリポジトリにプッシュする(git push)
<リモートリポジトリ>
・developブランチでマージ
<ローカルリポジトリ>
・git pullでローカルを最新化
<リモートリポジトリ>
・最終的にdevelop→mainへマージして完成

<基本的な操作>

1. リモートリポジトリ→ローカルリポジトリに情報を反映させる

git clone <リモートリポジトリのURL>

リモートリポジトリのURLは、SSH接続の設定をしている場合はSSHのURLを、設定をしていなければHTTPSのURLをコピペします。この際、リモートリポジトリの名前がoriginに設定されるので、以降のコマンドではURLの部分をoriginに置き換えることができます。
これでリモートリポジトリの情報が全てローカルリポジトリに反映されます。開発スタートです。
注意したいのが、git cloneをすると、ローカルリポジトリではデフォルトでmainブランチにチェックアウトされます。このブランチで作業をしてしまうと、完成形を作りたいmainブランチがグチャグチャになってしまうので、ブランチを切り替える必要があります。

2. 新しくブランチを作成、切り替える

git switch -c <ブランチ名>

ローカルリポジトリに新しくブランチを作成し、そのブランチに切り替えます。実装予定の機能ごとに開発を進めていくことが多いと思いますので、ブランチの名前は<feature/機能名>といった命名にすると把握しやすいと思います。また、一つのブランチで複数のメンバーが作業をするのは避けたほうが良いです。コンフリクトの原因になります。
この時点では、作成したブランチはローカルリポジトリにのみ存在し、リモートリポジトリにはありません。

3. 実装した内容をステージングエリアにあげる

git add .

作業した内容を全て反映させたい場合のコマンドです。

git add <ファイル名>

作業した内容のうち、一部のファイルのみ反映させたい場合はこちらのコマンドになります。
ステージングエリアって?となりますが、commitをするための準備と理解すると良いと思います。このコマンドがないと、作業内容の一部だけをcommitしたいという時に困りますよね。

4. 作業内容をローカルリポジトリに確定させる

git commit -m "コメント"

3でステージングエリアにあげたものを確定させます。これで、ローカルリポジトリで滞在しているブランチに点として記録されます。以降になにか問題があった時に、このcommitした地点に戻ってくることができたり、いつ何をしたのかを振り返ることができるようになります。
この時点でも、まだローカルリポジトリでの話であり、リモートリポジトリには何も変化はありません。
git commitは一つの作業が完了した際に行い、その作業内容をコメントに記載します。

5. リモートリポジトリに作業内容を反映させる

git push origin <ブランチ名>

この段階で、ようやくリモートリポジトリに作業内容が反映されます。

6. developブランチにmergeする

GitHubアカウントで確認すると、先ほどpushしたブランチが反映されていると思います。これをdevelopブランチにmergeします。

7. リモートのdevelopブランチの内容をローカルに反映させる

git pull origin develop

これでローカルリポジトリのdevelopブランチが最新の状態に保たれます。
最初はgit cloneでしたが、二回目以降はgit pullで一部の情報を反映させます。(ここでエラーが出る場合は、コンフリクトが発生している可能性が考えられます。)
以降、2~7を繰り返していくことで、だんだんdevelopブランチが完成に近づいていきます。最終的にリモートリポジトリでdevelop→mainにmergeすることで開発完了です。

<備考>

<備考1>ローカルでブランチを切り替えるには?

git switch <ブランチ名>

<備考2>ブランチを確認するには?

git branch

ローカルリポジトリにあるブランチ一覧を表示します。

git branch -r

リモートリポジトリにあるブランチ一覧を表示します。

<備考3>チェックインしているブランチの履歴を確認するには?

git log

チェックインしているブランチの過去のcommitの履歴を参照できます。「なぜかgit pushできない!?」なんて時に確認します。

<困った時の対応>

<困った時1>間違ってgit addしてしまった!

git restore --staged .

ステージングエリアにあげた変更を取り消します。それまでの作業内容は消されないので、git addという行為のみを取り消すコマンドになります。

<困った時2>間違ってgit commitしてしまった!

git reset --soft HEAD~

最新のcommitを取り消し、git addをした段階に戻ります。

git reset HEAD~

最新のcommitを取り消し、git addする前の段階に戻ります。それまでの作業内容は消えません。

git reset --hard HEAD~

最新のcommitを取り消し、それまでの作業内容も消去します。一つ前のcommitの段階に戻ります。

<困った時3>間違ってmain/developブランチで作業してしまい、git pullできない!

git add .
git commit -m "コメント"
git pull origin <ブランチ名>

とりあえずローカルリポジトリでの変更内容をコミットしてしまい、その上でリモートリポジトリのmain/developブランチをmergeします。

git stash
git pull origin <ブランチ名>

ローカルリポジトリで加えてしまった変更内容をなかったことにして、リモートリポジトリのmain/developブランチをmergeします。

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?