FC2ブログ

[GIT]git bashにgccインストール

https://sakkuntyo.github.io/2020/01/30/git-mingw-gcc/

git bash、7zipは既にインストールされてる前提。

https://sourceforge.net/projects/mingw-w64/files/External%20binary%20packages%20%28Win64%20hosted%29/
以下をダウンロード
MinGW-W64 GCC-8.1.0
x86_64-win32-sjlj

x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z
をゲットできた。

なんとなく、Git bashのCLIで解凍したいので、7zipのパスを通す。
Git bashをひらいて、以下の通り実行。
# cd
# vi .bash_profile

export PATH=$PATH:/c/Program\ Files/7-Zip



Git bashを開きなおすと7zコマンドが効くようになってるので、さっきダウンロードした7zファイルを解凍する。
# 7z.exe x x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive for archives:
1 file, 52858187 bytes (51 MiB)

Extracting archive: x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z
--
Path = x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z
Type = 7z
Physical Size = 52858187
Headers Size = 111254
Method = LZMA2:26 LZMA:20 BCJ2
Solid = +
Blocks = 2

Everything is Ok

Folders: 340
Files: 13669
Size: 528362848
Compressed: 52858187



管理者権限でGit bashを開きなおして、さっき解凍した以下へ移動。
# cd mingw64/bin
# tar -cvf - . | tar -xvf - --keep-newer-files -C /c/Program\ Files/Git/mingw64/bin/

./
./addr2line.exe
./
./addr2line.exe
./ar.exe
./ar.exe
./as.exe
./as.exe
./c++.exe
./c++.exe
./c++filt.exe
./c++filt.exe
./cpp.exe
./cpp.exe
./dlltool.exe
./dlltool.exe
./dllwrap.exe
./dwp.exe
./dllwrap.exe
./dwp.exe
./elfedit.exe
./g++.exe
./elfedit.exe
./g++.exe
./gcc-ar.exe
./gcc-nm.exe
./gcc-ar.exe
./gcc-ranlib.exe
./gcc-nm.exe
./gcc.exe
./gcc-ranlib.exe
./gcc.exe
./gcov-dump.exe
./gcov-dump.exe
./gcov-tool.exe
./gcov-tool.exe
./gcov.exe
./gcov.exe
./gdb.exe
./gdborig.exe
./gdb.exe
./gdborig.exe
./gdbserver.exe
./gdbserver.exe
./gendef.exe
./genidl.exe
./gendef.exe
./genpeimg.exe
./genidl.exe
./gfortran.exe
./genpeimg.exe
./gfortran.exe
./gprof.exe
./gprof.exe
./ld.bfd.exe
./ld.bfd.exe
./ld.exe
./ld.exe
./ld.gold.exe
./ld.gold.exe
./libatomic-1.dll
./libgcc_s_sjlj-1.dll
./libatomic-1.dll
tar: Current ‘./libatomic-1.dll’ is newer or same age
./libgcc_s_sjlj-1.dll
./libgomp-1.dll
./libgomp-1.dll
tar: Current ‘./libgomp-1.dll’ is newer or same age
./libquadmath-0.dll
./libquadmath-0.dll
./libssp-0.dll
./libstdc++-6.dll
./libssp-0.dll
tar: Current ‘./libssp-0.dll’ is newer or same age
./libstdc++-6.dll
tar: Current ‘./libstdc++-6.dll’ is newer or same age
./libwinpthread-1.dll
./libwinpthread-1.dll
tar: Current ‘./libwinpthread-1.dll’ is newer or same age
./mingw32-make.exe
./mingw32-make.exe
./nm.exe
./nm.exe
./objcopy.exe
./objcopy.exe
./objdump.exe
./objdump.exe
./ranlib.exe
./ranlib.exe
./readelf.exe
./readelf.exe
./size.exe
./size.exe
./strings.exe
./strings.exe
./strip.exe
./strip.exe
./widl.exe
./widl.exe
./windmc.exe
./windmc.exe
./windres.exe
./windres.exe
./x86_64-w64-mingw32-c++.exe
./x86_64-w64-mingw32-c++.exe
./x86_64-w64-mingw32-g++.exe
./x86_64-w64-mingw32-g++.exe
./x86_64-w64-mingw32-gcc-8.1.0.exe
./x86_64-w64-mingw32-gcc-8.1.0.exe
./x86_64-w64-mingw32-gcc-ar.exe
./x86_64-w64-mingw32-gcc-nm.exe
./x86_64-w64-mingw32-gcc-ar.exe
./x86_64-w64-mingw32-gcc-ranlib.exe
./x86_64-w64-mingw32-gcc-nm.exe
./x86_64-w64-mingw32-gcc.exe
./x86_64-w64-mingw32-gcc-ranlib.exe
./x86_64-w64-mingw32-gcc.exe
./x86_64-w64-mingw32-gfortran.exe
./x86_64-w64-mingw32-gfortran.exe



再度Git bashを開きなおすと、確かにgccが見つかる。
# which gcc

/mingw64/bin/gcc



しかし、実行してみるとエラー。
# gcc hello_world.c

gcc.exe: error: CreateProcess: No such file or directory



結局、7z解凍でできたmingw64をCドライブ直下において、パスを通したら実行出来た。
# vi .bash_profile

export PATH=/c/mingw64/bin:$PATH



Git bashを開きなおす
# which gcc
/c/mingw64/bin/gcc
# $ gcc hello_world.c
a.exe
コンパイル出来た。
スポンサーサイト



[GIT]git bashでchmodが効かない

https://algorithm.joho.info/programming/git/git-bash-windows10-chmod/
https://cheaparchitec.wordpress.com/2016/04/14/git-bashwindows%E3%81%A7chmod%E3%81%8C%E5%8A%B9%E3%81%8B%E3%81%AA%E3%81%84%E4%BB%B6/

Windows 10ではchmodによる権限変更が出来ないと。
理由は、chmodがNTFSやFATに対応してないから、という事らしい。

仕方ないので、以下のルールを使って対処してみる。

・git bashでは、対象ファイルの中身によって実行権限を自動判別。
・実行権限のあるファイルとして判別する条件は下記。

拡張子がexe/com/lnk
 1行目が「#!」で始まる



スクリプトファイルの1行目に#!を追記したら、確かに、実効権限が自動的に付与された。
なるほど、そういう仕組みなのか。

[GIT]運用

ローカル環境構築 ~ リモートへのpushまで

・githubへアカウントを作る。

・github上でレポジトリを作る。
 > 名前を決める。
 > publicにする(privateはコストかかるから)
 > initialize by READMEのチェックは外す

・ローカルPCでCygwinを起動。

・あるフォルダ以下で
git init
を実行。

・ローカルレポジトリにファイルをaddする。
git add a.txt

・ローカルレポジトリのファイルをcommitする。
git commit -m "hoge"

・登録したgithubレポジトリを、リモートレポジトリとしてoriginに登録する。
git remote add origin https://github.com/xxxx/yyyy.git
※ 最初にこれで登録したレポジトリから別のレポジトリにしようとしたら、
fatal: remote origin already exists.

・この場合は、
git remote rm origin
でoriginの登録を削除してから、再度
git remote add origin https://github.com/xxxx/yyyy.git
とすると成功する。

・そうしたらローカルのファイルをリモートにpushする。
git push origin master
そもそも、さっきのコマンドで登録せずに、以下で直接指定してもOK。でも面倒だよね。
git push https://github.com/xxxx/yyyy.git master




リモートブランチをローカルにクローン

・レポジトリも初期化してない環境で、リモートのレポジトリをコピーして作業始めるには以下コマンド。
git clone https://github.com/xxxx/yyyy.git
これでレポジトリがコピーされたので、作業していけばいい。



ブランチ方針

master
develop
hotfix

[GIT]スタートアップ

スタートアップ

ここを参考にさせて頂いた。
https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000#Git%E3%81%A8GitHub%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98

Cygwin64にgitをインストール > setup.exeからdevel/gitのみ追加。

# git config --global user.name "ユーザー名"
# git config --global user.email "メールアドレス"
# git config --list


# ssh-keygen -t rsa -b 4096 -C "hoge@gmail.com"
生成場所デフォルト
パスフレーズあり

/home/bob/.ssh/id_rsa
/home/bob/.ssh/id_rsa.pub
が生成された。


なかったので新規作成する。
# vi /home/bob/.ssh/config

Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa




次にgithubアカウントを登録。
https://github.com/
最後に登録emailへVerify依頼が来るので対応。

githubへログイン > 練習用のtestレポジトリを作成。
 > 右上のプロフィールメニュー > Settings
 > 左側のSSH and GPG keys
 > New SSH Key
 > 枠へ、先程生成した公開鍵(id_rsa.pub)をコピペして登録。

Windows上Cygwin64 > ssh github

The authenticity of host 'github.com (192.30.xxx.xxx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.xxx.xxx' (RSA) to the list of known hosts.
Enter passphrase for key '/home/bob/.ssh/id_rsa':
PTY allocation request failed on channel 0
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.



[GIT]コマンド

最初からブランチ、マージまで

git init
git add a
git commit -m "hoge"
git branch develop > この時点をdevelopブランチに登録
git checkout develop > developブランチに切り替え




よく使うコマンド 2018.5.20

git add file_name
git commit -m "comment"
git log
git log --oneline > 1行で表示
git archive HEAD --output=file_name.tar.gz > .zipも出来るが、実行属性が勝手につくらしい。なのでtar.gzの方を使う。
git rm file_name
git rm -r dir_name
git branch > ブランチ状態を表示
git branch hoge > 新ブランチを作成
git checkout hoge > hogeブランチへ切り替え

git config --global alias.tree 'log --graph --all --format="%x09%an%x09%h %d %s"' > treeとしてalias登録。 git treeで実行。






メモ

git init
git add
git commit -m "hoge"
git log --oneline
git diff
git checkout
git config --global user.name "hoge"
git config --global user.email "hoge@hoge.com"
git commit --amend --reset-author : 直前コミットのAuthorを修正
git rev-parse HEAD : 最新のコミットIDを指すHEADの現在のIDを確認
git add . : カレントDIRに存在する全ファイルをadd
git show : 最新のコミットを表示
git status

git reset --hard HEAD : 最新のコミットを復元。カレントDIRを上書き。(--hardではファイル指定不可)
  ファイル名ありのgit reset= ファイル名のインデックスだけ、コミットIDの状態へ変更。
  ファイル名なしのgit reset= HEADの位置を指定コミットIDへ設定し、git管理のファイル全てをコミットID状態へ変更。

git reset -h : git resetのヘルプ表示
git checkout HEAD sample.txt : ファイル指定してHEADの状態を復元

===========================================================================
 git checkout, git resetをすると、例えファイル保存していても、コミットしてない内容は失われる。
 これはgitを使っていて唯一、ファイル内容を失うケース。
===========================================================================
git commit --amend : HEADのコメント修正(vi起動)

git commit --amend : インデックスの変更も含めたコミット。
  --amendなし= HEADの指すコミットに続く歴史となる。
  --amendあり= HEADの指すコミットを修正した歴史となる。

git rm : ファイル削除
git mv : ファイル名変更(インデックスと作業フォルダ両方に同名ファイルが無いと実行不可)

git add -A : 作業フォルダ以下のファイル全ての追加・変更・削除含めた変化をインデックスに登録

HEAD = 最新のコミットID
HEAD~ = HEADの1つ前
HEAD~~ = HEADの2つ前 = HEAD~2

git rm --cached : 削除対象をインデックスに限定して削除

<git管理対象から除外>
 ・project/.gitignoreに登録 = git add .gitignoreを実行して無視するファイルもVer管理に含める事で、PJメンバー情報共有
 ・project/.git/info/excludeに登録 = Ver管理に含めない。個人に依存する無視ファイルの場合。

本書p61まで ---------------------------------------------------------------

カレンダー
03 | 2021/04 | 05
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード