git githubをwslで使う 初心者用
gitを使ったことがない初心者がgit環境を整えて,コミット,プッシュ,マージ,コンフリクト解決ができるようになるまでを,具体的なコマンドを実行しながら練習するための覚え書き.
gitの準備
github desktopを使えばatomなどで編集し,guiでコミットやプッシュができるが,コマンドで使用する方法としてWSLのUbuntuでやる方法
WSLでgit連携
$ sudo apt get install git
$ git config --global user.name USERNAME
$ git config --global user.email [email protected]
公開鍵をgithubに登録する
$ssh-keygen -t rsa -C "[email protected]"
$cat ~/.ssh/id_rsa.pub
パスフレーズを任意で入力する.githubのパスワードとは違うもので,空欄でも問題ない. 以下の順に操作
- github.comでマイページに行く
- setting を選択する
- SSH and GPG key を選択する
- New SSH key を選択する
- コピペで公開鍵を張り付けて保存.
- 上記のパスフレーズを入力.
$ ssh -T [email protected]
で確認してみる.
あとは普通にリポジトリクローンしたりプッシュしたりできる.
gitを始める
$mkdir hoge
$cd hoge
$git init
$mkdir hoge
$cd hoge
$git init
これでこのディレクトリに.gitができる.
/hoge/.git/
この.gitが存在している場所/hoge/下がgitの管理下である.
なぜinitが必要?
たんにgit cloneするだけでは,コードをダウンロードしただけに過ぎない.
initコマンドでそのディレクトはgitのローカルのリポジトリ機能がつかえる.
さらにリモートと連携することで,push,pullなどを用いてサーバ上へ変更を反映することができる.
いちいちリモートを切り替えないといけない?
(git管理下になっているディレクトリはストレージ内にいくつか存在でき,それぞれのgitディレクトリはそれぞれのリモートと関連付けらている.ディレクトリに移動するだけでリモートは切り替わる.)
このままではリモートのリポジトリと連携ていないので,Tarouさんのtestというリポジトリと連携してみると,
$git remote add origin [email protected]:Tarou/test.git
上このディレクトリ(リポジトリ)をリモート(URL先)に関連づけるコマンド.
任意のURLを張り付ければよい.このときプライベート設定ならパスフレーズを要求される.
もしくは単に
$git clone [email protected]:Tarou/test.git
とすれば/hoge/test/.git
`ができる.これだとリポジトリ名のディレクトリが作られる_.すでにPCに開発したプログラムがあって,リモートへ送りたいだけならcloneしないほうがよいかも.
$git remote -v
prigin [email protected]:Tarou/test.git (fetch)
prigin [email protected]:Tarou/test.git (push)
と出れば成功.
リモート先のファイルをダウンロードするorローカルのファイルをリモートへ送るには,
$git pull origine
$git add -A
$git status
$git commit -m "first commit"
$git log
$git diff Head
$git push origin master
gitで使うコマンドの説明
$git clone
新規でリモートからリポジトリをコピー
$git pull origine
リモートからリポジトリをコピーしてくる
$git status
編集中なら赤字,ステージング中なら緑字
$git commit -m "coment"
リモートへコミットする
$git add .
ステージングする
$git log
コミットの歴史
--Graph ツリー表示
--oneline 1コミット1行
$git push origin
ローカルへプッシュする
$git pull
リモートからダウンロードしてマージもする
pull=fetch+mergeということ
$git fetch
リモートからダウンロード
名もなきブランチ扱い:FETCH_HEADでチャックアウトできる
$git branch -d develop
ブランチdevellopを削除する
ブランチ
developというブランチ名でブランチしてみる.
$git chekout -b develop
ブランチを切るgit branch develop
とそのブランチに入るgit checkout develop
を一気に行うオプションである.
git branch
でブランチを一覧できる.
ブランチの中で作業してリモートのブランチにプッシュする.
$git add -A
$git commit -m "dev"
ローカルで何度かコミットなどして,ある程度できたらリモートへプッシュする.
$git push origine develop
そうして初めてリモート上でブランチの存在が認知される.
これをマスターへ融合させる.この間にマスターは特に変更されてないなら自動でマージできる.
$git checkout master
$git merge develop
ほかにもブランチがあったとしても先にマージされたブランチが方が正統派となる.
ここでエラーがでるなら,ファイルを開いて編集する.
この編集作業自体がマージにほかならない.作業内容を記録するためにコミットしておく.
$git add -A
$git commit -m "develop merge ok!"
ただし,コンフリクトが起きることがわかっているなら,あらかじめdevelop側で現在のmasterをマージしておいてから,master側でマージをするほうが礼儀正しいはずである(土足で入るようなもの).
気になる場合はリベースでやり直してみる.
$ git reset --hard HEAD~
$ git checkout develop
$ git rebase master
そしてコンフリクトを手動で直す作業...
$ git add A
$ git rebase --continue
この時点で一応commit,pushを残しておいてもいいかも.
このリベースは単にまだmasterにマージするつもりはなくても,masterの最新情報をdevelopに与えておくのに使うときれいに開発できるはず.
$git rebase --abort
でリベースを取り消し.
$ git checkout master
$ git merge develop
これで自動的にマージされる.(というかdevelop側ですでにマージが終わっているものを受け入れてもらっているだけ.)
Author And Source
この問題について(git githubをwslで使う 初心者用), 我々は、より多くの情報をここで見つけました https://qiita.com/TTOM/items/64277258f2dc7a6cb8ac著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .