gitの2038年問題
32bit環境下でgitには、2038年問題が存在するようです
TortoiseGit
シェルの場合
になってしまうようです。
gitは 内部で、unix timeで保存されているのでしょうか?
なんと 2038/01/19 12:14:07 を超える日付は扱えないようです
16ビットOSが消えたように
あと15-20年後には32ビットOSは消滅していると思いますので心配しないで大丈夫です!!
32bit環境下でgitには、2038年問題が存在するようです
TortoiseGit
日時: 2038/01/19 12:14:07
シェルの場合
Date: Thu Jan 1 00:00:00 1970 +0000
になってしまうようです。
gitは 内部で、unix timeで保存されているのでしょうか?
なんと 2038/01/19 12:14:07 を超える日付は扱えないようです
16ビットOSが消えたように
あと15-20年後には32ビットOSは消滅していると思いますので心配しないで大丈夫です!!
カテゴリー: バージョン管理/git
2017.02.04
git rebase --onto 新しい親 比較元 新しい子
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-rebase(1) for details
コマンドに全角スペースが入っているとこのメッセージが出ます
コマンドラインに全角スペースが区切りとして混入していないか確認しましょう
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-rebase(1) for details
コマンドに全角スペースが入っているとこのメッセージが出ます
コマンドラインに全角スペースが区切りとして混入していないか確認しましょう
カテゴリー: バージョン管理/git
2016.05.23
git ファイルタイムスタンプ通りにコミットする方法
方法
(1) 古い順に1個ずつコミットして、日時を更新
git filter-branch --env-filter '
if [ $GIT_COMMIT = "番号" ]; then
export GIT_AUTHOR_DATE="変えたい日付"
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
fi'
日付は
git log
または
php -nr " date_default_timezone_set('japan'); echo date(DateTime::RFC2822,strtotime('2015/1/1 0:0:0'));"
問題がなければ、バックアップを削除する
git show-ref | grep refs/original/refs/heads
git update-ref -d refs/original/refs/heads/master
コメントとして、日時をいれているので、移動してタイムスタンプがおかしくなった時もログからいつのかわかります。
方法 (2) dumpして書き換える
方法
(1) 古い順に1個ずつコミットして、日時を更新
- 自動スクリプトで全部自動的に古い順にコミットを繰り返します
コミット数が少ない場合は、1分で終わります。
コメント欄に日時をいれれば簡単に書き換えできます
スクリプトから日付が参照できる形ならなんでもOK
(1) フォルダを全スキャンし、ファイルリストを作成します
(2) 不要なものを除外します
(3) 日付でリストをソートします
(4) リストをループさせて、gid add , commitを繰り返します
次のリストと日付が同じ場合、commitは次でするので出力しません。
日付をコメントとして登録します
(5) ファイルに書き出します
(6) 問題がないか確認します。追加する行があれば追加します
(7) 空のリポジトリを用意します
(8) スクリプトを実行し、空のリポジトリに登録します - ログを全部書き出します
git log --all - filter-branch 用の スクリプトファイルを用意します
logファイルから、設定を抽出書き出します。 - 日時書き換え自動スクリプトで日時を自動的に書き換えます
chmod +x path/to/script
git filter-branch --env-filter 'source path/to/script'
git filter-branch --env-filter '
if [ $GIT_COMMIT = "番号" ]; then
export GIT_AUTHOR_DATE="変えたい日付"
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
fi'
日付は
git log
または
php -nr " date_default_timezone_set('japan'); echo date(DateTime::RFC2822,strtotime('2015/1/1 0:0:0'));"
問題がなければ、バックアップを削除する
git show-ref | grep refs/original/refs/heads
git update-ref -d refs/original/refs/heads/master
コメントとして、日時をいれているので、移動してタイムスタンプがおかしくなった時もログからいつのかわかります。
方法 (2) dumpして書き換える
» 続きを読む
カテゴリー: バージョン管理/git
2015.11.25
git commit 時
コメントなしでコミットする方法
git commit --allow-empty-message -m ''
コメントなしでコミットする方法
git commit --allow-empty-message -m ''
カテゴリー: バージョン管理/git
2015.11.25
git ローカルHDDのremoteが表示されない(TortoiseGit)
git remote add origin C:/パス/.git
Git gui では、きちんと表示されますが
TortoiseGitでは、
Linuxスタイルのローカル パスを
リポジトリブラウザ、ログなどで
認識しないようです。
/ではなく ¥ を使うと今度は、git コマンドの場合に誤動作しそう。
どちらをとるかですね。
原因は、Windows の VirtualStore 機能でした
git remote add origin C:/パス/.git
Git gui では、きちんと表示されますが
TortoiseGitでは、
Linuxスタイルのローカル パスを
リポジトリブラウザ、ログなどで
認識しないようです。
/ではなく ¥ を使うと今度は、git コマンドの場合に誤動作しそう。
どちらをとるかですね。
原因は、Windows の VirtualStore 機能でした
カテゴリー: バージョン管理/git
2015.04.11