- 1 名前:デフォルトの名無しさん mailto:sage [2011/07/12(火) 01:53:58.45 ]
- ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。
Git - Fast Version Control System git-scm.com/ ◆前スレ Git 2 hibari.2ch.net/test/read.cgi/tech/1284467898/ ◆関連サイト Pro Git - Table of Contents progit.org/book/ja/ Git入門 www8.atwiki.jp/git_jp/
- 243 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 07:39:12.71 ]
- git branch a
git checkout a でコード修正作業用のブランチに移動する。 このブランチ内で、各ソースファイルを修正して、適当に数行〜数十行修正する度に git commit -a -m"適当な名前" でコミットしてしまう。 この段階は試行錯誤の段階なので、数手前に戻りたい場合も出てくる、 その場合は git log 修正してたファイル名 // 修正してたファイルの関連してるコミットの一覧を表示する git diff 12345678 修正してたファイル名 > p // 戻りたい位置との差分パッチを得る。 12345678 はコミットIDの例 patch -R < p // パッチを充てて、ファイル状態を修正前に戻す ひと通り、コード修正が終わったとして、そのコミットログはコメントも適当だし、試行錯誤の後も残ってて汚れてるので、 master との比較で最終結果を一つのパッチにまとめる。 git diff master > p このパッチをmasterに充てる。 git checkout master patch < p git commit -a -m"正式なコミットコメント" 作業中の試行錯誤をgitを活用しながら進めることができ、最終的な修正結果は一つのパッチにまとめてコミットを綺麗な状態で行える。 もちろんパッチを綺麗にしようとしなければ、汚いログのままコミットしてもいいし、作業中の手戻りにgitを使わず古典的なバックアップファイルで行ってもいい。 ステージは、パッチを意味のあるまとまり毎に分けてコミットするためのもの。全部ひとまとめにコミットしてもいい場合は必要ない作業。 gitだと、修正範囲の狭いシンプルな複数のパッチが好まれる。様々な修正が含まれたごった煮パッチ1個にまとめてコミットすると嫌がられる。
- 244 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 08:14:21.35 ]
- >>まちがえたpushで中央の履歴がカオス
そうなる前との差分をコミットして、その段階までリセットしてやりなおせばいい。 >>push忘れで反映されない 普通はコード修正が完了したら、まっさきにpushしたいと思うはず。 もたもたしてると他人の修正とのバッティングで面倒に成りかねない。 >>何週間もローカルで秘密的に作業する奴 作業量が増えて損をするだけ。 他の人は、この人の秘密作業の修正コードを知らずに、各自が勝手に作業を進めて、中央(的な役割と決められた場所)へとコミットしてしまう。 中央との差は、中央に公開してしまえば、他の人も、その差を無くすように作業してコミットするが、 中央に公開しないままならば、他の人は、その差を考慮せずにコミットしてしまう。 秘密的に非公開で作業し続ければ、この差を修正する作業を、(本来各自に任せられてた作業をわざわざ)一人で請け負うことになる。 これは明らかに損。 ローカルで秘密的に作業する時間が長ければ長いほど、中央との差は広がり、差を埋める作業という労力が増す。
|

|