Github リポジトリの複製 フォーク
GitHubはリポジトリを複製するフォークという機能があります。 フォークを活用することで、複製元となるオリジナルのリポジトリに影響なく、ファイル変更できます。
一般的には共同開発をしたいリポジトリをフォークし、フォークした先で変更を加えた後、 最終的にフォーク元(オリジナル)にその変更を反映させるという使い方です。
フォークの方法
複製元のリポジトリでフォークする
自分のアカウントにフォークで作成されたリポジトリが生成されている
フォークしたリポジトリをローカルで取得
リモートリポジトリのURLを取得
リモートリポジトリページ > code > SSH > URLをコピー
####ローカルリポジトリを作成したい場所へ移動(ターミナル)
$ cd /Users/xxx/Desktop/
クローンを実行
$ git clone git@github.com:acots715/ichiyasaGitSample.git
Git Hubに公開鍵を設定
SSH Keyを作成
1. SSH Keyを生成する
$ ssh-keygen -t ed25519 -C "メールアドレス"
-t : 鍵の種類を選択。安全面と性能面で最強なEd25519アルゴリズム -c:コメントを指定
実行結果
Generating public/private ed25519 key pair. Enter file in which to save the key (/Users/xxxx/.ssh/id_ed25519): //←これが出たらEnterキーを押す
『/Users/xxxx/.ssh/id_ed25519』はキーの保存先です。
2. パスワード入力
続いて下記の表示がされるのでSSH Keyを管理するためのパスワードを入力します。2回聞かれるので、2回入力。
Enter passphrase (empty for no passphrase): //※パスワードは入力しても画面に何も表示されません。
SSH KeyをGit Hubに登録
1. 生成した公開鍵をクリップボードにコピー
GitHubの設定画面に登録するためにクリップボードにコピーします。 この時のコマンドはOSによって異なります
//MacOCの場合 $ pbcopy < /Users/xxxx/.ssh/id_ed25519.pub
2. Git Hubの設定画面表示
右のMyアイコン > setting > 左メニュー『SSH and GPG keys 』 > SSH Keys『New SSH Key』
3. 公開鍵を貼り付ける
4.sshの鍵の読み込み分け設定 次に~/.ssh/configに読み分けの記載をします。configファイルがまだない場合は作成して保存
Host github HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519 UseKeychain yes AddKeysToAgent yes
正しく設定できたか確認
$ ssh -T git@github.com
実行結果
This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? //yes
実行結果
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts. Enter passphrase for key '/Users/xxxx/.ssh/id_ed25519': //SSH key生成時に設定したパスワード
さらに実行結果
Hi! You've successfully authenticated, but GitHub does not provide shell access.
上記のように出たら成功。 『Permission denied』と表示されたら失敗なので、もう一度手順通りに設定し直します。
今までDreamweaverからgithubに接続できなくなっていたのが、解決できました。
複数githunアカウント作成する場合は、SSH Keyももう一度作成する必要があります。
$ ssh-keygen -t ed25519 -C "メールアドレス" -f "作成したい鍵の名前"
~/.ssh/config
Host github HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519 UseKeychain yes AddKeysToAgent yes Host github.com # 2つ目 HostName github.com User git Port 22 IdentityFile ~/.ssh/id_rsa_github_xxx #2つめの鍵の名前 TCPKeepAlive yes IdentitiesOnly yes
$ pbcopy < /Users/xxxx/.ssh/2つ目の鍵の名前.pub
github登録
正しく設定できたか確認
ssh -T git@github.com
Git 管理しないファイルを設定 .gitignore
Gitで管理すべきでないファイル
- 自動生成されるファイル
ログファイル
パッケージファイル
バックアップファイル
- OSのファイル
Windowsの Thumbs.db
macOSの.DS_Store
Dreamweaverを利用しているとできる_notesフォルダ(生成されたフォルダを削除する方法はこちら)
Dreamweaver_notesフォルダの中にはdwsync.xmlファイル
- パスワードが書かれたファイル
Gitで管理しないファイルを設定
1 .gitignoreファイルを作成
touch .gitignore
2 .gitignoreファイルに記述
subDirectory/file.md. //ファイル指定 target/ //フォルダ指定 *.log //拡張子指定
3 .gitignoreファイルをステージング
git add .gitignore
4 .gitignoreファイルをコミット
$ git commit -m ".gitignoreファイル追加" On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed)
Github社の.gitignoreファイルテンプレートを利用
書き方に迷ったら下記を利用しても良いかと思います。個人的にはWordoress用のは便利そうです。
Git ファイルとステージングリアへの登録の両方を削除するgit rmコマンド
1.ファイル削除する git rm (フォルダ削除は git rm -r フォルダ名)
$ git rm remove.txt rm 'remove.txt'
2.状態を確認 git status
$ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) deleted: remove.txt
3.削除したことをコミットする
$ git commit -m "remove.txtファイルを削除" [master da8242d] remove.txtファイルを削除 1 file changed, 1 deletion(-)
ローカルリポジトリでの操作の取り消し git checkoutとgit reset
ファイルの変更を取り消す(直前のコミットの状態に戻る) git checkout
- ファイルを変更
- git statusで確認するとworking treeにmodified(変更済み) ファイルが出る
- git checkoutコマンドでワークツリーの変更を取り消す(ファイルは直前のコミットの状態に戻る)
$ git checkout -- Git_MEMO.md
git checkout コマンドで取り消しできないケース
新規でファイル作成した時やファイル名を変更した時はgit checkoutが使えないので、手動でファイル削除します。
ステージングエリアへの登録を取り消す git reset HEAD ファイル名(ファイルの変更はしない)
ファイル変更し、ファイルをステージングエリアに登録 ステージングエリアへの登録を取り消す
$ git reset HEAD Git_MEMO.md Unstaged changes after reset: //resetによってunstagedされた M Git_MEMO.md
HEADは最後にコミットした状態を意味しています。
結論
ファイルの内容も変更前に戻したい時はgit checkoutコマンド ファイルの内容はそのままでステージングだけ戻したい時はgit reset HEADコマンド