2015年2月26日木曜日

サルでも分かるgit入門がわからない

有名サイト、サルでも分かるGit入門

これ、なんか微妙にわかりにくい!というわけで、まとめます!

Xcodeについてと、コマンドについて!絡めながら行きます。Xcodeのgitは直感的で楽ですが、エラーに対処しにくいので、2つあったほうがいいかと思います。

git cloneとかはおいといて、とりあえず、pushすることを考えて、pushできるように、書きます。内容的には不十分ですが、とりあえずpushできるようになることを目標に・・・


<用語説明>
リポジトリ=履歴を管理する、プロジェクトのうち変化する部分

ブランチ=枝。とりあえずmasterしか考えなくてよい!mergeとかはおいておこう!

ワークツリー=ローカルでの作業ファイル全体

ローカルリポジトリ=PCにあるリポジトリ
リモートリポジトリ=サーバー上にあるリポジトリ。GitHubが有名。

コミット=コメントとともに、インデックスに追加されたファイルの変更履歴を保存します。(ここまではローカルで実行できる)

インデックス=gitの監視下したいファイル群

プッシュ=リモートリポジトリに今までのコミットをすべて送信すること(同期みたいな)
プル=リモートリポジトリからコミット内容をダウンロードすること

<gitの目的>
まず、ファイルの変更履歴を管理できます。どこを書き換えて動かなくなったのか、みたいなことを調べることができます。

また、複数人で同じプロジェクトについて作業するのに使います。

ローカルリポジトリは適宜コミットし、いざというときにプッシュします。プッシュすると、ローカルで溜まっていたコミット履歴が一気にリモートリポジトリへ送られます。

最近はそれだけでなく、自分の能力のアピールにも、つまり、今までどんなプログラムを書いてきたかの紹介に使われていることが多い気がします。

とりあえず、リモートにファイルを置くときの大まかな流れは、
空のリモートリポジトリ作成する
ローカルでリポジトリ作成する→リモートリポジトリを登録する。
→ファイルをインデックスに追加→コミット→↓→プッシュ→↓
↑←←←←←←←←←←←←←←←←←←←←←←←←←←←←

です!


<ローカルでのGitリポジトリ〜Xcodeを絡めながら〜>
gitリポジトリを作成するコマンドは、
git init
です。
Xcode 6以降で新規プロジェクトを作成し、ファイルの保存場所を指定するとき、"Create git repository on MyMac"にチェックを入れておくと、自動的にgitのrepositoryを作成してくれます。


次に、XcodeのSource Control→Commitを押した時の画面について!
git add file.swift
これでfile.swiftというファイルがインデックスに登録されます。つまり、次のCommitからは、gitの監視下に含まれるようになります。複数ファイルを追加したい場合、
git add file.swift file2.swift file3.swift
のようにかけます。これはXcodeでいうチェックを入れる操作に当たります。
そして
git commit
これでコミット!変更履歴がgit repositoryに保存されます。

git add -u
git commit
上のコマンドは、直前のコミットから変更があったファイルをaddする命令です。コミットに必要なファイルが追加されていない場合、こればかり実行していればよいです。

Xcodeでも、ここまではCommitボタン押すだけなので、難なくクリアできます。

※Commitの時に、必ずメッセージを添える必要があります。Xcodeでれば、下のボックスに入れます。コマンドからの時は、vimが起動するので、iでinsertモードに→適当に入力→Escでコマンドモード→:wq(保存して終了のコマンド)を入力してEnter、これでOKです。

補足
git rm file.swift
ファイルを削除するとき、普通に削除だけすると、gitの監視下に置かれたファイルがないという状況になり、よくないです。そこで、git rmコマンドが存在します。これを使うと、rmoveすることができます。後ろに--cachedオプションをつけると、ファイルを残したまま、インデックスからのみ削除することができます。
git mvコマンドも同様に使うことができます。



<Remoteにも拡張しよう>
まずは、GitHubのアカウントを取りましょう!特に苦労せず取れます!

リモートリポジトリを作成するときは、GitHubのサイト上で作成します。
作成した後は、何もさわらないでおきます。SSHの方のURLをコピーしておきます。

これに対して、
git remote add origin git@github.com:***/*****.git
を実行します。後ろの部分は先ほどコピーしたURLを使います。
これで、remoteリポジトリとして上のアドレスに示されるリポジトリが登録されます。
Xcodeの場合は、Source Control→(ファイル名)-master→Configure (ファイル名)
からRemotesを選び、左下の+ボタンから追加する操作に当たります。
ここでのoriginは名前なので、なんでもいいです。

git remote
これでリモートリポジトリに登録されたものの一覧を取得できます。Xcodeの先ほどのRemotesの画面と同様です。

最後は
git pull origin master
でプッシュ

エラーがなければ、Gitのページを見に行ってみましょう!ファイルが入ってれば成功です!

※先にリポジトリを編集していると、pushの時にこういうエラーが出ます。
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:***/****.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

もしくは、
Working copy out of date.
(別の方法/人からのプッシュがあったために、競合が発生している状態です)

この場合、競合を解決する必要があります。そのため、まずプル。そしてマージ(プログラムを合わせる)
git pull origin master
を実行します。これで、リモートリポジトリoriginのmasterブランチをプルできます。
競合のあった場合は、慎重にマージしましょう。自分一人しか変更してない場合は、たいてい気にしなくて大丈夫です
その後pushすれば問題なく成功するかと思います。

画像がなすぎるのであとで追加します・・・

少しはわかるでしょうか・・・

ちなみに、僕のGitHubのアカウントです。
https://github.com/ha1fha1f
大したコード上げてないというか、混沌としていますが、もっと整理して、たまにはコード上げたいと思っています
(APIキーなどをいちいち消したファイルをつくるのが億劫で、上げないことが多い……)

0 件のコメント:

コメントを投稿