====== ソースコード管理 ======
ソースコード管理には、CVS,SVN,git,VSSなどがあります。\\
今は「git」が主流となっている。
===== git =====
ツールとしては、Gitを視覚的に操作できる「[[https://ja.atlassian.com/software/sourcetree|SourceTree]]」を使用している。
==== gitの使い方 ====
==== コミットメッセージ ====
[[http://qiita.com/itosho/items/9565c6ad2ffc24c09364|Gitのコミットメッセージの書き方]]
以下のフォーマットとします。\\
1行目:変更内容の要約(タイトル、概要)\\
2行目 :空行\\
3行目以降:変更した理由(内容、詳細)\\
1行目の例 \\
[fix]削除フラグが更新されない不具合の修正
* fix:バグ修正
* hotfix:クリティカルなバグ修正
* add:新規(ファイル)機能追加
* update:機能修正(バグではない)
* change:仕様変更
* clean:整理(リファクタリング等)
* disable:無効化(コメントアウト等)
* remove:削除(ファイル)
* upgrade:バージョンアップ
* revert:変更取り消し
最初のコミットは、「initial commit」とする。\\
[[http://sjk38.hateblo.jp/entry/2016/09/20/004053|Gitの最初のコメントは、"Initial commit"なのか、"First commit"なのか?]]
===== MarkDown確認 =====
README.md を書く際にプレビューで内容を確認する。\\
http://tmpvar.com/markdown.html
===== SourceTree =====
==== コミットメッセージの修正 ====
プッシュをしていないことが前提となる。\\
[コミット]をクリックして、[オプションのコミット]で[最新のコミットを修正]を選択する。\\
新たなコミットメッセージを入力し、[コミット]ボタンを押す。\\
[[http://d.hatena.ne.jp/yk5656/20140521/1402233587|SourceTreeでいろいろ取り消してみる]]
==== 使い方 ====
* [[http://celtislab.net/archives/20140527/git-sourcetree/|Git入門(SourceTree の使い方)]]
* [[https://www.eureka-moments-blog.com/entry/2019/01/06/125725|Gitによる複数人でのバージョン管理をSourceTreeを使って体験してみる]]
==== 空フォルダをコミット ====
空フォルダに空ファイル(.gitkeep)を作成してコミット。無視するファイルに「.gitkeep」を指定する。\\
※ファイル名は何でも構わないのですが、慣例的に「.gitkeep」というファイル名が用いられる。\\
[[https://quartet-communications.com/info/topics/13642|Gitで空のディレクトリを管理する方法の復習]]
==== コミットをまとめる ====
プッシュをしていないことが前提となる。\\
編集を行いたい一つ手前のコミットを右クリックし[CommitAの子とインタラクティブなリベースを行う]を選んだ後、「Interactive rebase」画面が表示されます。\\
まとめたいコミットの新しいコミットの方を選択し、[前のコミットとスカッシュ]をクリックします。\\
[メッセージを編集]でメッセージを直しても日本語が文字化けしてしまうので、[[it技術:システム開発:ソースコード管理#コミットメッセージの修正|コミットメッセージの修正]]で日本語を書き直します。\\
※タグを指定すると枝分かれするので、タグ移動してあげれば枝分かれが解消されます。
[[http://seeku.hateblo.jp/entry/2015/10/14/091822|SourceTreeでコミットをまとめる時のメモ]]\\
[[https://ics.media/entry/4969|SourceTreeの使い方 | コミットの再編集・変更方法SourceTreeの使い方 | コミットの再編集・変更方法]]
==== ブランチをマージ ====
[[https://tonari-it.com/git-sourcetree-branch/#SourceTree-3|SourceTreeでバージョン履歴を分岐したりマージしたりする方法]]
==== Gitに含めないファイル ====
gitignoreは、Git の管理に含めないファイルを指定するためのファイル。\\
[[http://cointoss.hatenablog.com/entry/2012/09/12/083432|Visual Studio にて設定すべき .gitignore / .hgignore]]
インストーラーは除外対象外とする。
# Installshield output folder
#[Ee]xpress/
※NuGet パッケージは、復元できるのでコミットに含めない。\\
[[https://blogs.msdn.microsoft.com/chack/2013/02/07/asp-net-nuget/|ASP.NET でソース管理システムへの NuGet パッケージのコミットを不要とする]]
==== Tag付け時の注意 ====
タグでバージョン番号を付けることで、GitBucketでバージョンごとのZIPファイルをダウンロードできるようになる。\\
※コミット漏れで同じタグ番号を付ける際に一旦タグを削除する。その時に「全リモートからタグを削除」にチェックしないと、タグを再作成しても、コミット漏れのファイルがZIPファイルに含まれない。
==== クローンすると落ちる ====
SourceTree 3.4.5以降だとクローンすると落ちる。3.4.6でも完全には直っていない。
対応として、SourceTree 3.4.4にする。