subversionのツールCollabNet Subversion Edgeのインストールメモ。
osはwindows7-64bit。
collabNetのダウンロードページ からplatformはwindowsを選択し、Subversion Edge 4.0.2 (Windows 64-bit)のダウンロードボタンを選択。この時ユーザ登録を求められる。
CollabNetSubversionEdge-4.0.2_setup-x86_64.exeをダウンロードし、実行しそのままインストール完了。インストール完了すると、file:///C:/csvn/launch.htmlページが開かれて、そこの http://localhost:3343/csvn/ リンクをクリックすると、ログインページが開く。デフォだと、admin/admin。どうやらウェブサーバが内臓されているみたい。
ウェブページからsubversionを起動したり停止したりできる。
リポジトリの新規作成はリポジトリタブ⇒作成ボタンからプロジェクト名を入力して作成できる。
例えば、hogeProjectを作った場合は・・・
リポジトリペアレント
http://testhostname/svn/
リポジトリブラウズ
http://testhostname/viewvc/
CollabNet Subversion Repository: sampleproject
http://testhostname/svn/sampleproject/
jenkinsのジョブを新規作成して、ソースコード管理でsubversionを設定する場合、リポジトリURLに「http://testhostname/svn/sampleproject/」を
入力する。認証が必要になるので、ユーザー名/パスワード認証でadmin/adminを入力して実行する
ちなみに作成したリポジトリのリポジトリパスはC:\csvn\data\repositories\sampleproject
osはwindows7-64bit。
collabNetのダウンロードページ からplatformはwindowsを選択し、Subversion Edge 4.0.2 (Windows 64-bit)のダウンロードボタンを選択。この時ユーザ登録を求められる。
CollabNetSubversionEdge-4.0.2_setup-x86_64.exeをダウンロードし、実行しそのままインストール完了。インストール完了すると、file:///C:/csvn/launch.htmlページが開かれて、そこの http://localhost:3343/csvn/ リンクをクリックすると、ログインページが開く。デフォだと、admin/admin。どうやらウェブサーバが内臓されているみたい。
ウェブページからsubversionを起動したり停止したりできる。
リポジトリの新規作成はリポジトリタブ⇒作成ボタンからプロジェクト名を入力して作成できる。
例えば、hogeProjectを作った場合は・・・
リポジトリペアレント
http://testhostname/svn/
リポジトリブラウズ
http://testhostname/viewvc/
CollabNet Subversion Repository: sampleproject
http://testhostname/svn/sampleproject/
jenkinsのジョブを新規作成して、ソースコード管理でsubversionを設定する場合、リポジトリURLに「http://testhostname/svn/sampleproject/」を
入力する。認証が必要になるので、ユーザー名/パスワード認証でadmin/adminを入力して実行する
ちなみに作成したリポジトリのリポジトリパスはC:\csvn\data\repositories\sampleproject
mysqlのバックアップについて。標準でついてるmysqldump,xtraBackup,Mydumpなどがある。
■mysqldump
標準でついてる。
・特定のDBのバックアップを取るとき。mysqldumpコマンドを使う。
>mysqldump -uhogeuser -p hogedb > hogedb.dump
hogedbというDBのバックアップをhogedb.dumpというファイルで出力。なか見たらただのsqldump。
テストのために、hogedbをdropする。そして、create database hogedbでdbを新規作成しておく(dumpファイルは、DB自体のバックアップは取ってくれないから)
復元
>mysql -uhogeuser -p hogedb < hogedb.dump
おわり、簡単。
ちなみにmysqlにあるDBすべてのバックアップを取るとき
mysqldump -u root -x --all-databases > dump.sql
参考:MySQLのdump(ダンプ)でデータをバックアップ/復元する MySQL基礎の基礎Add Star
■/var/lib/mysqlディレクトリ毎バックアップ
/var/lib/mysqlディレクトリ毎コピーでバックアップをとる。/var/lib/mysql/mysql.sockという中身が空のソケットファイルがあるから、cpコマンドに arオプションをつける必要がある。
参考:リストアとバックアップ: コピーコマンドによるバックアップ方法
■参考
・MySQLバックアップツール比較 XtraBackup / mysqldump / Mydumper
・Percona XtraBackupの基本的な使い方
・XtraBackupを使ってMySQLをバックアップしよう
・MySQL 5.6のInnoDB memcached pluginを使ってみる
・Percona MySQL をさくらのVPSで使う
■mysqldump
標準でついてる。
・特定のDBのバックアップを取るとき。mysqldumpコマンドを使う。
>mysqldump -uhogeuser -p hogedb > hogedb.dump
hogedbというDBのバックアップをhogedb.dumpというファイルで出力。なか見たらただのsqldump。
テストのために、hogedbをdropする。そして、create database hogedbでdbを新規作成しておく(dumpファイルは、DB自体のバックアップは取ってくれないから)
復元
>mysql -uhogeuser -p hogedb < hogedb.dump
おわり、簡単。
ちなみにmysqlにあるDBすべてのバックアップを取るとき
mysqldump -u root -x --all-databases > dump.sql
参考:MySQLのdump(ダンプ)でデータをバックアップ/復元する MySQL基礎の基礎Add Star
■/var/lib/mysqlディレクトリ毎バックアップ
/var/lib/mysqlディレクトリ毎コピーでバックアップをとる。/var/lib/mysql/mysql.sockという中身が空のソケットファイルがあるから、cpコマンドに arオプションをつける必要がある。
参考:リストアとバックアップ: コピーコマンドによるバックアップ方法
■参考
・MySQLバックアップツール比較 XtraBackup / mysqldump / Mydumper
・Percona XtraBackupの基本的な使い方
・XtraBackupを使ってMySQLをバックアップしよう
・MySQL 5.6のInnoDB memcached pluginを使ってみる
・Percona MySQL をさくらのVPSで使う
プロジェクト管理ツールのmaveについて。環境について。osはwin7。JDK:1.7
■自サイト(バージョンはmaven3)
・Mavenメモ2~eclipseプラグイン,よく使うコマンド,jenkinsと連携
・jarファイル,manifest(マニフェスト)ファイル ~ mavenで生成
■インストール
mavenはバージョン2,3系があるみたいだけど、経験がないので2系を使ってみる。maven公式からapache-maven-2.2.1-bin.zipをダウンロード。zipを解凍して適当なディレクトリに配置。mavenのbinディレクトリをpathに通す。
C:\java>mvn --version
ERROR: JAVA_HOME not found in your environment.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation
mavenは環境変数JAVA_HOMEを設定する必要がある。JAVA_HOMEが設定できているかどうかはsetコマンドで確認できる。
C:\>set JAVA_HOME
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_21
再度、mvnコマンド。mvn -vでもおっけ。
C:\>mvn -v
Apache Maven 2.2.1 (r801777; 2009-08-07 04:16:01+0900)
Java version: 1.7.0_21
Java home: C:\Program Files\Java\jdk1.7.0_21\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 7" version: "6.1" arch: "amd64" Family: "windows"
おっけ。
■コマンド(2系)
だいたい参考のtechscoreを見て試している。
>「mvn --help」「mvn -h」
⇒コマンド一覧が見れる。
>mvn archetype:create -DgroupId=hoge.example -DartifactId=sample
⇒mvnによるjavaプロジェクトの生成
>mvn compile
⇒コンパイル。デフォルトだとtargetディレクトリ下にクラスファイルが生成される。
>mvn test
⇒Unittestの実行。ドフォルトだと、targetディレクトリにtest関連のファイルが生成される。
>mvn package
⇒デフォルトだとtargetディレクトリ下にjarファイル生成。Jarファイル名はpom.xml に記述されている artifactId と version で決まる。
>mvn install
⇒外部jarファイルをローカルリポジトリにインストール。
⇒外部jarをローカルに落としてくるには、maven-dependency-pluginプラグインがpom.xmlに必要。
>mvn deploy
⇒作成したjarファイルをリモートリポジトリに配備する。pom.xmlファイルのprojectタグ下にdistributionManagementタグを書いておく必要がある。
>mvn clean
⇒プロジェクトのクリーン。targetディレクトリが削除される
javadoc生成、サイト生成などもできる。
・maven2系基本コマンドのまとめ
>mvn dependency:tree
⇒pom.xmlファイルがあるディレクトリで実行すると、ライブラリの依存関係を確認できる。
例えば、下はstrutsのコアライブラリstruts-core.jar:1.3.10は、antlr,commons-beanutilsなど7つのライブラリに依存していることがわかる。こういう依存関係が管理されていることで、自動でライブラリを取得してビルドできる。
[INFO] +- org.apache.struts:struts-core:jar:1.3.10:compile
[INFO] | +- antlr:antlr:jar:2.7.2:compile
[INFO] | +- commons-beanutils:commons-beanutils:jar:1.8.0:compile
[INFO] | +- commons-chain:commons-chain:jar:1.2:compile
[INFO] | +- commons-digester:commons-digester:jar:1.8:compile
[INFO] | +- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] | +- commons-validator:commons-validator:jar:1.3.1:compile
[INFO] | \- oro:oro:jar:2.0.8:compile
[INFO] +- org.apache.struts:struts-taglib:jar:1.3.10:compile
[INFO] +- org.apache.tomcat:servlet-api:jar:6.0.20:provided
[INFO] \- com.strutsbook:filter:jar:1.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
■repositroyBrowser、ライブラリの依存性の指定方法。
pom.xmlファイルのdependencyタグの groupId, artifactId, version に指定する値の調べ方 については下。
・The Central Repository(検索)
・一覧
例えば、commons-langとcommons-long3 を検索してみる。commons-lang3のartifactIdはcommons-lang3、LatestVersionは3.1だということがわかる。2013/9/8現在。
この情報を参考にして、依存性の指定をする。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
こっちの方が最新かな?
・MVNRepositories
・MVNRepositories home » org.apache.commons » commons-lang3 » 3.0
・3.1.3.2. pom.xml で依存性の指定を行う
・リモートリポジトリにはないライブラリをローカルリポジトリにインストールとかもできる。sunの提供しているライブラリとか。
■maven初心者、入門者のためのおすすめ本の紹介(2系と3系)
■プラグインの設定
・mvnコマンドでは-Dオプション、pom.xmlでは<project>/<build>/<plugins>以下の<plugin>で指定する。
・プラグインの情報の調べ方は、maven公式のAvairable Pluginsページ あたりか。
例えば、compilerプラグインの場合
・Apache > Maven > Plugins > Maven Compiler plugin > compiler:compile
・Apache > Maven > Plugins > Maven Compiler plugin > Usage
・3.2.3. 実際にプラグインの設定を行う
⇒ソースコードをjdk1.5でコンパイルする
⇒jdkの指定はprojectタグのpropertiesタグで指定できるみたいだけどね
■リモートリポジトリの設定
・リモートリポジトリの種類とリモートリポジトリの設定
⇒pom.xmlのprojectタグ下のrepositories/repositoryあたりで設定できるみたい
ライブラリの依存性の指定方法とプラグインの設定、mavenを使う上で必須。
■マルチモジュールプロジェクトついて
・親プロジェクトと各モジュールをそれぞれのpom.xmlファイルを用意して定義できる。
・親プロジェクトのpom.xmlファイルを各モジュールのpom.xmlファイルが継承しているようなイメージに近いかも。
・親プロジェクトのpom.xmlではmodules,moduleタグ、各モジュールのpom.xmlではparentタグを使う。
■eclipseとの連携
・上の■コマンド(2系)のmvn archetype:createコマンドでjavaプロジェクトを生成と書いたけど、この状態だとeclipse上で扱うことができない。「mvn eclipse:eclipse」コマンドを実行すれば、eclipseプロジェクトに変換してeclipseでも扱うことができる。このコマンドを実行した後に、eclipseのインポート⇒既存プロジェクトをワークスペースへでインポートできる。
・eclipseでmavenのプラグインを導入すれば、eclipse上でmvnコマンドを実行できるみたい。pom.xmlから実行できるってことかな。
■webアプリのmavenプロジェクト
通常のjavaアプリではなく、webアプリのmavenプロジェクトを作る場合、archetypeArtifactId パラメータで「maven-archetype-webapp」を指定する
ref:mavenによる実アプリケーション開発 or 本
>mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
あとは、groupId,ArtifactIdなどを入力していけばプロジェクトのテンプレができる。mvn install でwarを作ってくれる。
■他
ref:MavenTips(techscore)
・pom.xml、setting.xmlの情報を得られる
・mvn ant:antでantのbuildファイルを生成できる。
ref:Maven Ant plugin
・「mvn dependency:copy-dependencies -DoutputDirectory=lib」で依存ライブラリ(外部jarファイル)を指定ディレクトリにコピーできる
・maven-assembly-pluginで配布用のアーカイブを生成できる。
・maven-antrun-pluginでantのタスクを実行できる。
■参考
・maven(techscore)
・今さらかもだけどMaven入門してみた(1) - メリット、環境構築
■題材
ログとか。slf4j 、クワガタ
■自サイト(バージョンはmaven3)
・Mavenメモ2~eclipseプラグイン,よく使うコマンド,jenkinsと連携
・jarファイル,manifest(マニフェスト)ファイル ~ mavenで生成
■インストール
mavenはバージョン2,3系があるみたいだけど、経験がないので2系を使ってみる。maven公式からapache-maven-2.2.1-bin.zipをダウンロード。zipを解凍して適当なディレクトリに配置。mavenのbinディレクトリをpathに通す。
C:\java>mvn --version
ERROR: JAVA_HOME not found in your environment.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation
mavenは環境変数JAVA_HOMEを設定する必要がある。JAVA_HOMEが設定できているかどうかはsetコマンドで確認できる。
C:\>set JAVA_HOME
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_21
再度、mvnコマンド。mvn -vでもおっけ。
C:\>mvn -v
Apache Maven 2.2.1 (r801777; 2009-08-07 04:16:01+0900)
Java version: 1.7.0_21
Java home: C:\Program Files\Java\jdk1.7.0_21\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 7" version: "6.1" arch: "amd64" Family: "windows"
おっけ。
■コマンド(2系)
だいたい参考のtechscoreを見て試している。
>「mvn --help」「mvn -h」
⇒コマンド一覧が見れる。
>mvn archetype:create -DgroupId=hoge.example -DartifactId=sample
⇒mvnによるjavaプロジェクトの生成
>mvn compile
⇒コンパイル。デフォルトだとtargetディレクトリ下にクラスファイルが生成される。
>mvn test
⇒Unittestの実行。ドフォルトだと、targetディレクトリにtest関連のファイルが生成される。
>mvn package
⇒デフォルトだとtargetディレクトリ下にjarファイル生成。Jarファイル名はpom.xml に記述されている artifactId と version で決まる。
>mvn install
⇒外部jarファイルをローカルリポジトリにインストール。
⇒外部jarをローカルに落としてくるには、maven-dependency-pluginプラグインがpom.xmlに必要。
>mvn deploy
⇒作成したjarファイルをリモートリポジトリに配備する。pom.xmlファイルのprojectタグ下にdistributionManagementタグを書いておく必要がある。
>mvn clean
⇒プロジェクトのクリーン。targetディレクトリが削除される
javadoc生成、サイト生成などもできる。
・maven2系基本コマンドのまとめ
>mvn dependency:tree
⇒pom.xmlファイルがあるディレクトリで実行すると、ライブラリの依存関係を確認できる。
例えば、下はstrutsのコアライブラリstruts-core.jar:1.3.10は、antlr,commons-beanutilsなど7つのライブラリに依存していることがわかる。こういう依存関係が管理されていることで、自動でライブラリを取得してビルドできる。
[INFO] +- org.apache.struts:struts-core:jar:1.3.10:compile
[INFO] | +- antlr:antlr:jar:2.7.2:compile
[INFO] | +- commons-beanutils:commons-beanutils:jar:1.8.0:compile
[INFO] | +- commons-chain:commons-chain:jar:1.2:compile
[INFO] | +- commons-digester:commons-digester:jar:1.8:compile
[INFO] | +- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] | +- commons-validator:commons-validator:jar:1.3.1:compile
[INFO] | \- oro:oro:jar:2.0.8:compile
[INFO] +- org.apache.struts:struts-taglib:jar:1.3.10:compile
[INFO] +- org.apache.tomcat:servlet-api:jar:6.0.20:provided
[INFO] \- com.strutsbook:filter:jar:1.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
■repositroyBrowser、ライブラリの依存性の指定方法。
pom.xmlファイルのdependencyタグの groupId, artifactId, version に指定する値の調べ方 については下。
・The Central Repository(検索)
・一覧
例えば、commons-langとcommons-long3 を検索してみる。commons-lang3のartifactIdはcommons-lang3、LatestVersionは3.1だということがわかる。2013/9/8現在。
この情報を参考にして、依存性の指定をする。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
こっちの方が最新かな?
・MVNRepositories
・MVNRepositories home » org.apache.commons » commons-lang3 » 3.0
・3.1.3.2. pom.xml で依存性の指定を行う
・リモートリポジトリにはないライブラリをローカルリポジトリにインストールとかもできる。sunの提供しているライブラリとか。
■maven初心者、入門者のためのおすすめ本の紹介(2系と3系)
- Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集/アスキー・メディアワークス
- ¥2,520
- Amazon.co.jp
- Apache Maven 2.0入門 Java・オープンソース・ビルドツール/技術評論社
- ¥2,499
- Amazon.co.jp
■プラグインの設定
・mvnコマンドでは-Dオプション、pom.xmlでは<project>/<build>/<plugins>以下の<plugin>で指定する。
・プラグインの情報の調べ方は、maven公式のAvairable Pluginsページ あたりか。
例えば、compilerプラグインの場合
・Apache > Maven > Plugins > Maven Compiler plugin > compiler:compile
・Apache > Maven > Plugins > Maven Compiler plugin > Usage
・3.2.3. 実際にプラグインの設定を行う
⇒ソースコードをjdk1.5でコンパイルする
⇒jdkの指定はprojectタグのpropertiesタグで指定できるみたいだけどね
■リモートリポジトリの設定
・リモートリポジトリの種類とリモートリポジトリの設定
⇒pom.xmlのprojectタグ下のrepositories/repositoryあたりで設定できるみたい
ライブラリの依存性の指定方法とプラグインの設定、mavenを使う上で必須。
■マルチモジュールプロジェクトついて
・親プロジェクトと各モジュールをそれぞれのpom.xmlファイルを用意して定義できる。
・親プロジェクトのpom.xmlファイルを各モジュールのpom.xmlファイルが継承しているようなイメージに近いかも。
・親プロジェクトのpom.xmlではmodules,moduleタグ、各モジュールのpom.xmlではparentタグを使う。
■eclipseとの連携
・上の■コマンド(2系)のmvn archetype:createコマンドでjavaプロジェクトを生成と書いたけど、この状態だとeclipse上で扱うことができない。「mvn eclipse:eclipse」コマンドを実行すれば、eclipseプロジェクトに変換してeclipseでも扱うことができる。このコマンドを実行した後に、eclipseのインポート⇒既存プロジェクトをワークスペースへでインポートできる。
・eclipseでmavenのプラグインを導入すれば、eclipse上でmvnコマンドを実行できるみたい。pom.xmlから実行できるってことかな。
■webアプリのmavenプロジェクト
通常のjavaアプリではなく、webアプリのmavenプロジェクトを作る場合、archetypeArtifactId パラメータで「maven-archetype-webapp」を指定する
ref:mavenによる実アプリケーション開発 or 本
>mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
あとは、groupId,ArtifactIdなどを入力していけばプロジェクトのテンプレができる。mvn install でwarを作ってくれる。
■他
ref:MavenTips(techscore)
・pom.xml、setting.xmlの情報を得られる
・mvn ant:antでantのbuildファイルを生成できる。
ref:Maven Ant plugin
・「mvn dependency:copy-dependencies -DoutputDirectory=lib」で依存ライブラリ(外部jarファイル)を指定ディレクトリにコピーできる
・maven-assembly-pluginで配布用のアーカイブを生成できる。
・maven-antrun-pluginでantのタスクを実行できる。
■参考
・maven(techscore)
・今さらかもだけどMaven入門してみた(1) - メリット、環境構築
■題材
ログとか。slf4j 、クワガタ
cui、コマンドを使ってgithubを使うメモ書き。
guiのtortoiseGitについてはこっちを参照(msysgit,gitbashのインストールについても) 。
・よく使うgitコマンド
・さるでもわかるgit入門
・githubメモ
■
・リポジトリをcloneする
⇒git cloneコマンド。参照「githubからcloneする 」
・ゆーざめい、パスワードとか設定を確認する
⇒git config -l
■ブランチ
ブランチには統合ブランチとトピックブランチがあるらしい・・・統合ブランチは俗にいうmaster
refs:ブランチ、ブランチの運用
・ブランチ一覧表示
⇒対象のリポジトリのディレクトリに移動して、git branchコマンド
・ローカルリポジトリのブランチ削除
⇒「git branch -d hogebranch」。強制削除の場合「git branch -D hogebranch」
・リモートリポジトリのブランチ削除
⇒git push origin :hogeremotebranch
空のブランチをpushしている。空のブランチは空文字で指定する。originはリモートリポジトリのこと。
⇒git push --delete origin hogeremotebranch でもおっけ。deleteの前はダブルハイフン。
・リモートブランチにプッシュ
⇒git push origin master
リモートブランチにブランチがない場合、ブランチを新規作成してくれる。origin masterがないと、オプションによって全ブランチをプッシュするようなので注意。
・リモートブランチを作成
git push origin hogebra:hogehogehoge
ローカルリポジトリのhogebraブランチをoriginリポジトリのhogehogehogeブランチを作成してpushする。
リモートにブランチを単体で作るってのは無理か・・
■checkout(チェックアウト)
・git checkout hogebra
hogebraブランチに切り替え
・git checkout -b hogebra
hogebraブランチを作成し、切り替える。ブランチ作るなら、git branchでもおっけ。
refs:git checkoutの使い方
あと、addしてステージング状態にしたファイル(作業ワークツリー)をもとに戻すときにも使われる。
git checkout -- hoge.txt
git checkout .
refs:作業ツリーの変更をもとに戻す
■fetch,merge,pull
refs:git fetchの理解からgti mergeとpullの役割
pull = fetch + merge origin/master
fetchはローカルリポジトリにファイルを持って生きているだけで、実際に使っているファイるには反映されていない。origin/masterが最新の状態に更新され、masterはその分の更新がされていない状況。
ローカルのmasterブランチにmergeするには、git merge origin/master。
git pullはfetch,mergeを一気にする。コンフリクトが発生する可能性がある。
・git pull https://github.com/hogeuser/hogerepo.git hogebra hogebra
リモート(github)のhogerepoリポジトリのhogebraブランチをローカルのhogebraブランチにpullする
httpsじゃなくてもgit pullできる
git pull git@github.com:hogeuser/hogerepo.git hogebra hogebra
ただし、RSA認証鍵が必要?jenkinsのシェルスクリプトとかで使える。
■そのほかよく使うコマンド
○add,commit(ローカルリポジトリ)
・git add .
⇒ピリオドで変更すべてをaddする。addしてステージングエリアへ
・git commit -m"commit comment"
⇒コミットする
・git commit -am"add + commit comment"
addとcommitを同時にする
refs:git入門(どっといんすとーる)
○こんふぃぐ系
git config
git config -l
git config --help
git help config
○初期化からステージングエリア(インデックス)へ、ステージングエリア(インデックス)からコミット
git init
⇒初期化
git add(git add .)
⇒ピリオドの場合、いまのディレクトリより下にあるすべてのファイルが対象
git commit
○
git commitは、ユーザ名とemailを設定しないとできない。ユーザ名とemailは下記で設定できる。
git config --global user.name ”(your name)"
git config --global user.email "(your email)"
○git diff
git diff
⇒ステージング前との差分
git diff --cached
⇒ステージング後、コミット前との差分
■git diffの差分の行が長い行で改行されずに見れないとき
refs : http://d.hatena.ne.jp/sugyan/20100507/1273209155
「git diffした時に、横に長い行の表示がコンソールの右につきぬけてしまって、右のほうが見えなくなってしまうんだけど、どうすれば>コンソールの右で折り返して表示してくれるのか誰か教えてくれませんか。MacのTerminalです。」
git diff --color | less -R
または、~/.gitconfigに以下を書けばいい
[color]
ui = auto
[core]
pager = less -r
○削除したいファイルを一括してgit rm
grep,awkとあわせて使う
$git status | grep deleted: | awk '{print $3}' | xargs git rm
○gitの管理に含めないようにする、ファイルを無視
.gitignoreファイルで指定。そのファイルが存在するディレクトリだけでなくサブディレクトリも対象になる。
○git commit --amend
⇒コミットをひとつにまとめる。git logでしょぼいコミットログがたまることを防げるので結構使える。
○ブランチのマージ
git merge hogebranch
⇒ブランチのマージ。masterにいる状態で上を実行するとhogebranchの変更がmasterにマージされる
git branch -d hogebranch
⇒hogebranchを削除する
○マージしたらコンフリクトが発生
$ git merge hoge
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
こんな感じになる。git statusを実行するとboth modifiedとか出る。
$ git status
# On branch master
#
# both modified: index.html
#
no changes added to commit (use "git add" and/or "git commit -a")
問題のindex.htmlの中身を見ると、一応コンフリクトした箇所を教えてくれるらしい。
<<<<<<< HEAD
master line 3
=======
hogehogehoge
>>>>>>> hoge
ファイルを編集してコンフリクトを解消して、git add / git commitをする
○タグ、コミットIDにタグをつける
git tag
git tag (tag name)
git tag (tag name) (commit id)
git tag -d (tag name)
○えいりあす。例えば、git checkoutをgit coにしたい場合
$ git config --global alias.co checkout
⇒
$ git co hoge
Switched to branch 'hoge'
○共有りぽじとり
共有リポジトリを初期化する時は--bareをつける
git init --bare
git remote add origin (repos location)
git push origin master
git config -lで確認できる
git clone
git push
git pull
○git stash, git stash pop
hogebraというブランチでなにか作業をして、commitせずにmasterブランチにcheckoutしてみたら、下のエラーが出た。
$ git co master
error: Your local changes to the following files would be overwritten by checkout:
~
Please, commit your changes or stash them before you can switch branches.
ブランチを移動するときはgit stashで退避させる必要があるらしい・・・再度hogebraで作業を再開したいときはgit stash pop。
stashは隠すという意味
refs:Chapter7 ブランチを使った開発
まだコミットしていない変更内容や新しく追加したファイルが、インデックスやワークツリーに残ったままで、他のブランチへのチェックアウトを行うと、その変更内容は元のブランチから、移動先のブランチに対して移動します。
refs:ブランチの切り替え
○ローカルでhogebraブランチ、リモートでもhogebraブランチ
ローカルでhogebraブランチを作った後、githubでも同期したかったのでhogebraブランチを作った。その後、git branch -aコマンドを実行してもリモート(github)のhogebraブランチが表示されない。そんな時は「git fetch origin」。これで、remoteのbranch一覧を更新して見れるようになる。originはリモートリポジトリにつけた任意の名称
refs:他人がつくったリモートブランチが見えない時は
refs:githubをremote repoとして、macにインストールしたgitから使ってみる
■github入門、初心者、中級者のためのおすすめ本の紹介
■既に存在するディレクトリをgitで管理する(ローカルリポジトリ)
同じようにgit init すればいいだけ。git init した直後にgit statusを実行すると、ディレクトリに存在するすべてのファイル、ディレクトリがUntracked files状態になっているから、add,commitすればいい。下はscriptコマンドのログ。
^[[?1034hhogedir $ git status^M
# On branch master^M
#^M
# Initial commit^M
#^M
# Untracked files:^M
# (use "git add <file>..." to include in what will be committed)^M
#^M
# ^[[31mscript.log^[[m^M
# ^[[31mtest2.txt^[[m^M
# ^[[31mtest_dir/^[[m^M
# ^[[31mtext.xt^[[m^M
nothing added to commit but untracked files present (use "git add" to track)^M
hogedir $ git log^M
fatal: bad default revision 'HEAD'^M
hogedir $ git branch^M
hogedir $ ls -al^M
■githubのremoteリポジトリを落とす
前提条件としてhogePrj.gitにはmaster,develop,test-remote-branchというブランチがある。
$ git clone https://github.com/hogename/hogePrj.git
cloneで落とす。privateならuser/passが要求される。
カレントディレクトリにhogePrjというディレクトリが作成され、その中にmasterブランチの内容が落とされている。git branchを実行してみると、masterブランチだけができている。git logもそのまま反映されているっぽい。git statusを実行するとuntracked files....git add . / git commitすると、git statusはきれいなるけど、よけいなコミットログが一つ残るからしない方がいいかもね。
今度はdevelopブランチを落としたい。ちなみにリモートのブランチ一覧を見たい場合、git branch -r
$ git branch -r
origin/HEAD -> origin/master
origin/develop
origin/master
origin/test-remoto-branch
本題。git checkoutを使う。hogePrjディレクトリで下を実行。
$ git checkout -b develop origin/develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'
developが作成するローカルリポジトリのブランチ、origin/developがおとしてくるリモートリポジトリのブランチ。git branchで確認したらdevelopが作成されていた。ちなみにgit checkout ブランチ名 でブランチの切り替えができる。
今度はローカルリポジトリのdevelopブランチのファイルをいくつか変更してremoteにpushする。ちなみにリモート側のファイルを一つ変更しておいた(ローカルとは別ファイル。コンフリクトは発生しない)
$ git push origin develop
error: failed to push some refs to
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
エラーが発生した。コンフリクトが発生しなくてもだめか・・・コンフリクトは発生しないことは解っているので、git pullを実行。git logを実行すると、Merge branchのログが一つ追加されている。この後にもう一回git pushを実行。無事remoteにpushできました。
あと、ローカルでは何も変更せずにリモート側の変更をローカルに反映したい場合、git pullを実行し、そのときにmergeのログが一つのこる。ここで、git statusを実行すると、git pushをみないなメッセージがでる。まぁ実行しなくてもいいと思うけど、git pushを実行すると、リモートのこのログのみ?が反映される
今度はローカルにhogerepというリポジトリを作成し、リモート(github)でhogeremotedirというリポジトリを作成して、ローカル側の編集をgithubにpushする。
・ローカル
mkdir hogerep
cd hogerep
git init
適当なファイルを作る
git add / git commit -m""
・github上
webでリポジトリhogeremotedirを作る(readmeも一緒に作成)
・ローカル
git remote add origin https://github.com/hogeuser/hogeremotedir.git
リモートのリポジトリを登録している。originは適当な名前。https://~はリモートの場所。
git config -lでリモートの場所を確認できる。
・ローカル
git push origin master
readmeのせいで、一度git pullしろといわれた。
git pull https://github.com/hogeuser/hogeremotedir.git master
第3引数はリモートリポジトリ、第4匹数はローカルリポジトリのブランチ
この後に再度、git push origin master。こんどはおっけ
■git push
リモートリポジトリのブランチにpushしたり、ブランチを削除したりできる
refs:githubをremote repoとして、macにインストールしたgitから使ってみる
■git remote
リモートリポジトリの操作、githubのリポジトリとかも登録できる
git remote
リモートリポジトリ一覧を表示
git remote add origin https://github.com/hogeuser/hogerep.git
githubのhttps://github.com/hogeuser/hogerep.gitをoriginという名前でリモート追加
git remoteだけでなく、git config -lでリモートリポジトリが確認できる
remote.origin.url=https://github.com/hogeuser/hogerep.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
また、git remote addした後に、git branch -aを実行してもリモートリポジトリのブランチは表示されない。反映させるためにはgit fetch origin。originはリモートリポジトリにつけた任意の名称。
$ git fetch origin
From https://github.com/hogeuser/hogerepo
* [new branch] develop -> origin/develop
* [new branch] master -> origin/master
* [new branch] test-remoto-branch -> origin/test-remoto-branch
$ git remote remove origin
リモートリポジトリの登録削除。originはリモートリポジトリにつけた名称
$ git remote show origin
remoteリポジトリの情報を表示
$git remote -h
git remoteのヘルプ
refs:リモート操作(猿でもわかる)
■git fetch
$ git fetch
更新。なにを?リモートリポジトリ
$ git fetch origin
originリポジトリを更新、ブランチが表示されないときとか
refs :ブランチの管理
■リモートリポジトリのブランチ削除
$ git push origin :hogebra
originという名前をつけたリモートリポジトリのhogebraブランチを削除
■ブランチを指定してリポートリポジトリにpush
$ git push origin develop:develop_r
otihinという名前のリモートリポジトリのdevelop_rブランチにローカルリポジトリのdevelopブランチをpush
refs:git push 使い方
■リモートリポジトリにpush
$git push origin develop
originという名前のリモートリポジトリのdevelopブランチにローカルリポジトリのdevelopブランチをpushする。
リモートのブランチ名を省略した場合、ローカルリポジトリと同じdevelopにpushされた
これでもいい。ローカルリポジトリのブランチ名も省略
$ git push origin
ローカルのdevelopブランチ上で上のコマンドを実行した場合、ローカルのdevelopブランチがリモートのdevelopブランチにpushされた
■過去のバージョンに戻す。git rest --hard コミットid
$git reset --hard 37brew77ad9a3b
タグを指定してもおっけ
$git reset --hard v1.0
■リモートに存在しないブランチが「git branch -a」でまだ表示される
リモートのブランチを削除したのに、git branch -aでまだ表示されるので消したい場合、それは
$ git remote show origin
で、staleという状態で残っている。これを完全に削除したい場合は
$ git remote prune origin
と実行すればいい。ちなみにstaleは新鮮でない、腐りかけという意味らしい・・・
guiのtortoiseGitについてはこっちを参照(msysgit,gitbashのインストールについても) 。
・よく使うgitコマンド
・さるでもわかるgit入門
・githubメモ
■
・リポジトリをcloneする
⇒git cloneコマンド。参照「githubからcloneする 」
・ゆーざめい、パスワードとか設定を確認する
⇒git config -l
■ブランチ
ブランチには統合ブランチとトピックブランチがあるらしい・・・統合ブランチは俗にいうmaster
refs:ブランチ、ブランチの運用
・ブランチ一覧表示
⇒対象のリポジトリのディレクトリに移動して、git branchコマンド
・ローカルリポジトリのブランチ削除
⇒「git branch -d hogebranch」。強制削除の場合「git branch -D hogebranch」
・リモートリポジトリのブランチ削除
⇒git push origin :hogeremotebranch
空のブランチをpushしている。空のブランチは空文字で指定する。originはリモートリポジトリのこと。
⇒git push --delete origin hogeremotebranch でもおっけ。deleteの前はダブルハイフン。
・リモートブランチにプッシュ
⇒git push origin master
リモートブランチにブランチがない場合、ブランチを新規作成してくれる。origin masterがないと、オプションによって全ブランチをプッシュするようなので注意。
・リモートブランチを作成
git push origin hogebra:hogehogehoge
ローカルリポジトリのhogebraブランチをoriginリポジトリのhogehogehogeブランチを作成してpushする。
リモートにブランチを単体で作るってのは無理か・・
■checkout(チェックアウト)
・git checkout hogebra
hogebraブランチに切り替え
・git checkout -b hogebra
hogebraブランチを作成し、切り替える。ブランチ作るなら、git branchでもおっけ。
refs:git checkoutの使い方
あと、addしてステージング状態にしたファイル(作業ワークツリー)をもとに戻すときにも使われる。
git checkout -- hoge.txt
git checkout .
refs:作業ツリーの変更をもとに戻す
■fetch,merge,pull
refs:git fetchの理解からgti mergeとpullの役割
pull = fetch + merge origin/master
fetchはローカルリポジトリにファイルを持って生きているだけで、実際に使っているファイるには反映されていない。origin/masterが最新の状態に更新され、masterはその分の更新がされていない状況。
ローカルのmasterブランチにmergeするには、git merge origin/master。
git pullはfetch,mergeを一気にする。コンフリクトが発生する可能性がある。
・git pull https://github.com/hogeuser/hogerepo.git hogebra hogebra
リモート(github)のhogerepoリポジトリのhogebraブランチをローカルのhogebraブランチにpullする
httpsじゃなくてもgit pullできる
git pull git@github.com:hogeuser/hogerepo.git hogebra hogebra
ただし、RSA認証鍵が必要?jenkinsのシェルスクリプトとかで使える。
■そのほかよく使うコマンド
○add,commit(ローカルリポジトリ)
・git add .
⇒ピリオドで変更すべてをaddする。addしてステージングエリアへ
・git commit -m"commit comment"
⇒コミットする
・git commit -am"add + commit comment"
addとcommitを同時にする
refs:git入門(どっといんすとーる)
○こんふぃぐ系
git config
git config -l
git config --help
git help config
○初期化からステージングエリア(インデックス)へ、ステージングエリア(インデックス)からコミット
git init
⇒初期化
git add(git add .)
⇒ピリオドの場合、いまのディレクトリより下にあるすべてのファイルが対象
git commit
○
git commitは、ユーザ名とemailを設定しないとできない。ユーザ名とemailは下記で設定できる。
git config --global user.name ”(your name)"
git config --global user.email "(your email)"
○git diff
git diff
⇒ステージング前との差分
git diff --cached
⇒ステージング後、コミット前との差分
■git diffの差分の行が長い行で改行されずに見れないとき
refs : http://d.hatena.ne.jp/sugyan/20100507/1273209155
「git diffした時に、横に長い行の表示がコンソールの右につきぬけてしまって、右のほうが見えなくなってしまうんだけど、どうすれば>コンソールの右で折り返して表示してくれるのか誰か教えてくれませんか。MacのTerminalです。」
git diff --color | less -R
または、~/.gitconfigに以下を書けばいい
[color]
ui = auto
[core]
pager = less -r
○削除したいファイルを一括してgit rm
grep,awkとあわせて使う
$git status | grep deleted: | awk '{print $3}' | xargs git rm
○gitの管理に含めないようにする、ファイルを無視
.gitignoreファイルで指定。そのファイルが存在するディレクトリだけでなくサブディレクトリも対象になる。
○git commit --amend
⇒コミットをひとつにまとめる。git logでしょぼいコミットログがたまることを防げるので結構使える。
○ブランチのマージ
git merge hogebranch
⇒ブランチのマージ。masterにいる状態で上を実行するとhogebranchの変更がmasterにマージされる
git branch -d hogebranch
⇒hogebranchを削除する
○マージしたらコンフリクトが発生
$ git merge hoge
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
こんな感じになる。git statusを実行するとboth modifiedとか出る。
$ git status
# On branch master
#
# both modified: index.html
#
no changes added to commit (use "git add" and/or "git commit -a")
問題のindex.htmlの中身を見ると、一応コンフリクトした箇所を教えてくれるらしい。
<<<<<<< HEAD
master line 3
=======
hogehogehoge
>>>>>>> hoge
ファイルを編集してコンフリクトを解消して、git add / git commitをする
○タグ、コミットIDにタグをつける
git tag
git tag (tag name)
git tag (tag name) (commit id)
git tag -d (tag name)
○えいりあす。例えば、git checkoutをgit coにしたい場合
$ git config --global alias.co checkout
⇒
$ git co hoge
Switched to branch 'hoge'
○共有りぽじとり
共有リポジトリを初期化する時は--bareをつける
git init --bare
git remote add origin (repos location)
git push origin master
git config -lで確認できる
git clone
git push
git pull
○git stash, git stash pop
hogebraというブランチでなにか作業をして、commitせずにmasterブランチにcheckoutしてみたら、下のエラーが出た。
$ git co master
error: Your local changes to the following files would be overwritten by checkout:
~
Please, commit your changes or stash them before you can switch branches.
ブランチを移動するときはgit stashで退避させる必要があるらしい・・・再度hogebraで作業を再開したいときはgit stash pop。
stashは隠すという意味
refs:Chapter7 ブランチを使った開発
まだコミットしていない変更内容や新しく追加したファイルが、インデックスやワークツリーに残ったままで、他のブランチへのチェックアウトを行うと、その変更内容は元のブランチから、移動先のブランチに対して移動します。
refs:ブランチの切り替え
○ローカルでhogebraブランチ、リモートでもhogebraブランチ
ローカルでhogebraブランチを作った後、githubでも同期したかったのでhogebraブランチを作った。その後、git branch -aコマンドを実行してもリモート(github)のhogebraブランチが表示されない。そんな時は「git fetch origin」。これで、remoteのbranch一覧を更新して見れるようになる。originはリモートリポジトリにつけた任意の名称
refs:他人がつくったリモートブランチが見えない時は
refs:githubをremote repoとして、macにインストールしたgitから使ってみる
■github入門、初心者、中級者のためのおすすめ本の紹介
- 入門git/オーム社
- ¥2,520
- Amazon.co.jp
- Gitポケットリファレンス/技術評論社
- ¥2,604
- Amazon.co.jp
■既に存在するディレクトリをgitで管理する(ローカルリポジトリ)
同じようにgit init すればいいだけ。git init した直後にgit statusを実行すると、ディレクトリに存在するすべてのファイル、ディレクトリがUntracked files状態になっているから、add,commitすればいい。下はscriptコマンドのログ。
^[[?1034hhogedir $ git status^M
# On branch master^M
#^M
# Initial commit^M
#^M
# Untracked files:^M
# (use "git add <file>..." to include in what will be committed)^M
#^M
# ^[[31mscript.log^[[m^M
# ^[[31mtest2.txt^[[m^M
# ^[[31mtest_dir/^[[m^M
# ^[[31mtext.xt^[[m^M
nothing added to commit but untracked files present (use "git add" to track)^M
hogedir $ git log^M
fatal: bad default revision 'HEAD'^M
hogedir $ git branch^M
hogedir $ ls -al^M
■githubのremoteリポジトリを落とす
前提条件としてhogePrj.gitにはmaster,develop,test-remote-branchというブランチがある。
$ git clone https://github.com/hogename/hogePrj.git
cloneで落とす。privateならuser/passが要求される。
カレントディレクトリにhogePrjというディレクトリが作成され、その中にmasterブランチの内容が落とされている。git branchを実行してみると、masterブランチだけができている。git logもそのまま反映されているっぽい。git statusを実行するとuntracked files....git add . / git commitすると、git statusはきれいなるけど、よけいなコミットログが一つ残るからしない方がいいかもね。
今度はdevelopブランチを落としたい。ちなみにリモートのブランチ一覧を見たい場合、git branch -r
$ git branch -r
origin/HEAD -> origin/master
origin/develop
origin/master
origin/test-remoto-branch
本題。git checkoutを使う。hogePrjディレクトリで下を実行。
$ git checkout -b develop origin/develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'
developが作成するローカルリポジトリのブランチ、origin/developがおとしてくるリモートリポジトリのブランチ。git branchで確認したらdevelopが作成されていた。ちなみにgit checkout ブランチ名 でブランチの切り替えができる。
今度はローカルリポジトリのdevelopブランチのファイルをいくつか変更してremoteにpushする。ちなみにリモート側のファイルを一つ変更しておいた(ローカルとは別ファイル。コンフリクトは発生しない)
$ git push origin develop
error: failed to push some refs to
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
エラーが発生した。コンフリクトが発生しなくてもだめか・・・コンフリクトは発生しないことは解っているので、git pullを実行。git logを実行すると、Merge branchのログが一つ追加されている。この後にもう一回git pushを実行。無事remoteにpushできました。
あと、ローカルでは何も変更せずにリモート側の変更をローカルに反映したい場合、git pullを実行し、そのときにmergeのログが一つのこる。ここで、git statusを実行すると、git pushをみないなメッセージがでる。まぁ実行しなくてもいいと思うけど、git pushを実行すると、リモートのこのログのみ?が反映される
今度はローカルにhogerepというリポジトリを作成し、リモート(github)でhogeremotedirというリポジトリを作成して、ローカル側の編集をgithubにpushする。
・ローカル
mkdir hogerep
cd hogerep
git init
適当なファイルを作る
git add / git commit -m""
・github上
webでリポジトリhogeremotedirを作る(readmeも一緒に作成)
・ローカル
git remote add origin https://github.com/hogeuser/hogeremotedir.git
リモートのリポジトリを登録している。originは適当な名前。https://~はリモートの場所。
git config -lでリモートの場所を確認できる。
・ローカル
git push origin master
readmeのせいで、一度git pullしろといわれた。
git pull https://github.com/hogeuser/hogeremotedir.git master
第3引数はリモートリポジトリ、第4匹数はローカルリポジトリのブランチ
この後に再度、git push origin master。こんどはおっけ
■git push
リモートリポジトリのブランチにpushしたり、ブランチを削除したりできる
refs:githubをremote repoとして、macにインストールしたgitから使ってみる
■git remote
リモートリポジトリの操作、githubのリポジトリとかも登録できる
git remote
リモートリポジトリ一覧を表示
git remote add origin https://github.com/hogeuser/hogerep.git
githubのhttps://github.com/hogeuser/hogerep.gitをoriginという名前でリモート追加
git remoteだけでなく、git config -lでリモートリポジトリが確認できる
remote.origin.url=https://github.com/hogeuser/hogerep.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
また、git remote addした後に、git branch -aを実行してもリモートリポジトリのブランチは表示されない。反映させるためにはgit fetch origin。originはリモートリポジトリにつけた任意の名称。
$ git fetch origin
From https://github.com/hogeuser/hogerepo
* [new branch] develop -> origin/develop
* [new branch] master -> origin/master
* [new branch] test-remoto-branch -> origin/test-remoto-branch
$ git remote remove origin
リモートリポジトリの登録削除。originはリモートリポジトリにつけた名称
$ git remote show origin
remoteリポジトリの情報を表示
$git remote -h
git remoteのヘルプ
refs:リモート操作(猿でもわかる)
■git fetch
$ git fetch
更新。なにを?リモートリポジトリ
$ git fetch origin
originリポジトリを更新、ブランチが表示されないときとか
refs :ブランチの管理
■リモートリポジトリのブランチ削除
$ git push origin :hogebra
originという名前をつけたリモートリポジトリのhogebraブランチを削除
■ブランチを指定してリポートリポジトリにpush
$ git push origin develop:develop_r
otihinという名前のリモートリポジトリのdevelop_rブランチにローカルリポジトリのdevelopブランチをpush
refs:git push 使い方
■リモートリポジトリにpush
$git push origin develop
originという名前のリモートリポジトリのdevelopブランチにローカルリポジトリのdevelopブランチをpushする。
リモートのブランチ名を省略した場合、ローカルリポジトリと同じdevelopにpushされた
これでもいい。ローカルリポジトリのブランチ名も省略
$ git push origin
ローカルのdevelopブランチ上で上のコマンドを実行した場合、ローカルのdevelopブランチがリモートのdevelopブランチにpushされた
■過去のバージョンに戻す。git rest --hard コミットid
$git reset --hard 37brew77ad9a3b
タグを指定してもおっけ
$git reset --hard v1.0
■リモートに存在しないブランチが「git branch -a」でまだ表示される
リモートのブランチを削除したのに、git branch -aでまだ表示されるので消したい場合、それは
$ git remote show origin
で、staleという状態で残っている。これを完全に削除したい場合は
$ git remote prune origin
と実行すればいい。ちなみにstaleは新鮮でない、腐りかけという意味らしい・・・