https://try.github.io/levels/1/challenges/1
git init
git clone http://example.com/hoge/git.git [hoge以外の名前を付けたい場合]
git clone http://ID:[email protected]/git
イメージ的には以下構成となる。
DIR/hoge/.git →http://example.com/hoge/git.git DIR/fuga/.git →http://example.com/fuga/git.git
cd xxx git branch -r
git branch 対象ブランチ git checkout 対象ブランチ #一度にやる場合は下記 git checkout -b 対象ブランチ
git remote -v
origin: レポジトリの場所(URL)の別名 master: ブランチの名前
デフォルトの対象はorigin/masterだ。
git config --list
上記コマンドで今どこを示しているかを確認せよ。
git remote add NEW_REMOTE [email protected]:xxxx/foo.git
ローカルリポジトリ、index、リモートリポジトリと構成要素が複雑怪奇。ブランチがSVNより増える傾向がある。
add | コミット準備領域であるindexに追加する |
commit | あくまでローカルリポジトリに対してのコミット。-aオプションをつけないと変更してもコミット対象にはならない |
PUSH | リモートリポジトリへのコミット。SVNでいうところのコミットと同義。リモートリポジトリがすっからかんの場合は git push -u origin master |
FETCH | SVNでいうところのアップデート(ローカルへのマージは行わない?) |
PULL | SVNでいうところのアップデート(ローカルへのマージまで行うFETCH+MERGE) |
clone | チェックアウトだが、gitではブランチの切替に利用する |
fork | githubの機能。cloneと似ているが、分散開発用に元の所有者に通知がいく。forkするという行為はオリジナルへの貢献を前提とする。 |
アップストリーム ブランチ | ローカルに対して上流にあるブランチ。cloneした場合はclone元だが、指定もできる |
branch -a | リモート含むブランチ一覧の表示 |
branch -d | ブランチの削除。すっからかんじゃないと削除不可能 |
ブランチ指定してPUSH | git push --set-upstream origin testing |
実際には実行しない(dry-run) | git push -n |
git checkout merged
git merge マージ元のブランチ
masterブランチを統合ブランチとして、リリース向けに運用する。トピックブランチは機能追加、バグ修正のタイミングで作成され、リリース前に統合ブランチにマージされる。 branch -aでリモート含むブランチ状況を確認しながら作業する。
git branch testing | testingブランチ追加 |
git checkout testing | testingブランチに切替 |
分岐以降統合ブランチに変更がない場合、統合ブランチのコミット履歴はトピックブランチのコミット履歴とイコールになる。シンプルなので早送りマージと呼ばれる。ただしトピックブランチの履歴は残らないので、たとえfirst-forwardが可能であってもやらないほうがよい。
通常のマージ。統合とトピックブランチをマージしたというコミットが作成される。
ブランチの履歴を消してマージ。トピックブランチが小さいものが多く、頻発するのであればこちらの運用が良いかもしれぬ。
$ git status On branch MyBranche Your branch is up-to-date with 'origin/NewBranch'. nothing to commit, working directory clean
$ git status On branch development Your branch is behind 'origin/Develop' by 6 commits, and can be fast-forwarded. (use "git pull" to update your local branch) nothing to commit, working directory clean
It's easy to install from source! just configure and make and make install!
git-http-backendがソースコンパイルだとないため、下記はバイナリーインストールのときのみ可能。
http://www.proton.jp/main/programming/git/smart-http.html
SetEnv GIT_PROJECT_ROOT /usr/local/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/local/libexec/git-core/git-http-backend/ <locationMatch "/git"> AuthType Basic AuthName "Git Area" AuthUserFile /usr/local/apache2/htdocs/.htpasswd require valid-user Order allow,deny Allow from all </locationMatch>