Skip to content
YuuShigetani edited this page Oct 2, 2012 · 2 revisions

git.mkd

= = =

  • date 2012/10/02
  • author [YuuShigetani]
  • tag [git]
  • subtag [バージョン管理]

※わからないことがあれば闇雲にpushしたりする前に人に聞くこと→聞いたことをwikiに追加修正する

まず初めに

チュートリアルをする

以下の2つは絶対にする

事前準備と使い方

事前準備

$ git config --global user.name "名前(英語表記でフルネーム)"
$ git config --global user.email "メールアドレス"
$ git config --global color.ui auto
$ git config --global core.autocrlf false

初回のみ:clone

$ git clone git@github.com:y-d-yamashita/hogehoge.git

作業が完了したら送る

$ git add .
$ git commit -m "コメント"
$ git push

他の人のpushをpullして反映させる

$ git pull

コンフリクトの解消

※他人のコードを勝手に消さない!自分で判断できない場合はコードを書いた人に相談する

<<<<<<< HEAD:templates/myapp/res_list.html
        <dt id="textbody">{{ object.textbody|linebreaks }}</dt> // 自分のコード
=======
        <dt id="textbody">{{ object.textbody|linebreaksbr }}</dt> //リモート側のコード
        <div id="tagblock">
>>>>>>> 656256af16ad5e4da14490a70d25eb4e415fca60:templates/myapp/res_list.html

HEADから===までが自分のコード===から>>>までがリモートのコード

上の例でリモートを取る場合

        <dt id="textbody">{{ object.textbody|linebreaksbr }}</dt> //リモート側のコード
        <div id="tagblock">

HEADから===までと>>>の一行を削除

自分のコードを取る場合


        <dt id="textbody">{{ object.textbody|linebreaks }}</dt> // 自分のコード

HEADと===から>>>までを削除
両方残しても良い。どんな場合でもHEADと===と>>>は削除しなければならない。

ブランチ操作

ブランチを切る前に

必ずissuesを立て、assignedを指定し、指定されたものがブランチを切る。

命名規則

半角英数文字、記号は「.」「-」「_」のみ
機能追加の場合はかならずfeatureとはじめにつける。
issuesの番号をブランチの種類(featureなど)のあとにつける。
例)feature#11-authentication-function

ブランチの使い方

// 現在作られているbranchを見る
$ git branch -a


// localにbranchを作成
$ git checkout -b new_branch

 
// branch間の移動
$ git checkout branch_name


// localのbranchにサーバ上のbranchからのデータをpull
$ git pull origin branch_name

// localのbranchからサーバ上のbranchにデータをpush
$ git push origin branch_name
 

// branchのbranchのデータを別のbranchにマージ
// * merge先のbranchに移動した後,
$ git merge   merge元


// localのbranchを削除
$ git branch -d branch_name

 
 // サーバ上のbranchを削除(*注意)
$ git push origin :branch_name

 
// branch作成、削除のlogを見る
$ git show-branch 

// 現在いるbranchの変更(commitしてなく、したくない)があるが、branchを移動したいとき
$ git stash              //変更を横にのけておく
$ git checkout master			//master branchに移動
edit ... 			//編集
$ git add
$ git commit
$ git checkout version0.2	//0.2に戻る
$ git stash pop		//横にのけてた変更を戻す


// コミット時点にローカルの状態に戻したいとき
$ git reset --hard sha1	<- ワーキングツリーも戻す
$ git reset --soft  sha1	<- ワーキングツリーはそのまま、HEADだけ戻す
$ git reset --mixed		<- indexの変更を戻す
 
example...
$ git reset --hard ORIG_HEAD 	//直前のマージの取り消し
$ git reset --soft HEAD^		//直前のコミットの一つ前にHEADを戻す
$ git reset --hard @{1}		//直前のrebaseの取り消し


// ブランチを、指定したブランチの最新コミットへパッチとして適応する
// 結果はほとんどマージと同じだけど、リモートリポジトリの場合はこちらの方がいい
1.$ git checkout topic_branch
2.$ git rebase master			//masterへtopic_branchをパッチとして当てる
途中でコンクリフトした場合
$ git rebase --continue		//コンクリフトを修正して、rebaseを続ける
$ git rebase --abort			//中断
 
コミットを加工して、パッチを当てる
2.$ git rebase -i master
すると、編修画面が出てくる
pick		-> パッチを当てる
reword 	-> コミットメッセージの編修
edit		-> コミットの編修
squash	-> 直前のコミットにまとめる
fixup		-> 直前のコミットにまとめて、メッセージを削除
行ごと削除-> そのコミットを適応しない
 
// local branchを特定のorigin branchを追跡させる
$ git branch --set-upstream branchname origin/branchname