Git / GitHub
Git / GitHub
git remote
git remote
追跡しているブランチを表示する
$ git remote
origin
hoge
git remote -v
追跡しているブランチとそのURLを表示する
$ git remote -v
origin https://github.com/name/git_tutorial.git (fetch)
origin https://github.com/name/git_tutorial.git (push)
hoge https://github.com/name/git_tutorial.git (fetch)
hoge https://github.com/name/git_tutorial.git (push)
git remote add
git remote add [名前] [URL] の形式でリポジトリをどんな名前で扱うか定義する
詳細
一旦表示。今はoriginという名前でname/git_tutorialのみ登録していることがわかる
$ git remote -v
origin https://github.com/name/git_tutorial.git (fetch)
origin https://github.com/name/git_tutorial.git (push)
今回はrepository_bakというリポジトリを新規作成した。追加とプッシュまで確認する
git remote add bak https://github.com/name/git_tutorial_bak.git
表示してみる
git remote -v
bak https://github.com/name/git_tutorial_bak.git (fetch)
bak https://github.com/name/git_tutorial_bak.git (push)
origin https://github.com/name/git_tutorial.git (fetch)
origin https://github.com/name/git_tutorial.git (push)
bakという名前でname/repository_bakが登録された
プッシュする
$ git push -u bak main
~~~
* [new branch] main -> main
branch 'main' set up to track 'bak/main'.
bakのmainブランチにプッシュできた
Git
git switch
まだEXPERIMENTALなのでgitバージョンごとに確認すること
$ git branch
a
* main
$ git switch a
Switched to branch 'a'
$ git branch
* a
main
mainからaに切り替わった
git switch -
直前のブランチに切り替える
$ git branch
* a
main
$ git switch -
Switched to branch 'main'
$ git branch
a
* main
$ git switch -
Switched to branch 'a'
$ git branch
* a
main
a -> main -> aと切り替わることがわかる
git switch -c
ブランチの作成と切り替えを行う
$ git branch
* a
main
$ git switch -c b
Switched to a new branch 'b'
$ git branch
a
* b
main
git switch --detach
HEAD detached状態に切り替える
$ git branch
a
* b
main
$ git switch --detach HEAD^1
HEAD is now at cd91500 Merge pull request #1 from name/repository
$ git branch
* (HEAD detached at commit_ID)
a
b
main
以前のバージョンの内容を確認したいときなどに使う
mainに戻す
$ git switch main
$ git branch
a
b
* main
以上です
Git / GitHub
プルリクエストの流れ
リモートリポジトリの追加は既にされているという状況
$ git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/main
プルリクエストは以下の流れに沿って行われる
- mainブランチを最新に更新する
- ブランチを切る
- ファイルを変更
- コミット・プッシュをする
- プルリクエストを送る
1. mainブランチを最新に更新する
$ git fetch
$ git merge origin/main
Already up to date.
2. ブランチを切る
$ git switch -c pull_request
Switched to a new branch 'pull_request'
3. ファイルを変更
ファイル作成の想定
$ echo pull_request test>>req.txt
4. コミット・プッシュをする
$ git add req.txt
$ git commit
$ git push origin pull_request
~~~
To https://github.com/name/repository_name
* [new branch] pull_request -> pull_request
5. プルリクエストを送る
対象のリポジトリのページにてPull requests
を選択
New pull request
を選択
compair: main
となっているところを選択、4でプッシュしたブランチを選択
画面が切り替わる↓
Create pull request
を選択
タイトルと詳細を記載する
Reviewers
からユーザーを選択するとレビュー依頼が出せる
Create pull request
を選択
以上です
Git
git init 時のデフォルトブランチ名をmainに変更する
git config --global init.defaultBranch main
git stash
作業ディレクトリとインデックスの状態を一時的に記録し、作業ディレクトリをHEADコミットに合わせて元に戻す
作業中に割り込みなどが発生し、現在までの変更内容がコミットするまでに至らなかった場合などに一時退避するような使い方をする
git stash
変更されたファイルをスタックに格納する
1. 現在の状態
$ git status
On branch main
nothing to commit, working tree clean
2. ファイルに変更を加え、状態を確認する
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working
directory)
modified: _scrap/git_github/stash.md
no changes added to commit (use "git add" and/or "git commit
-a")
3. 作業を隠す
$ git stash
Saved working directory and index state WIP on main: 1094ea1
add test
4. 隠したあとの状態の確認
作業ディレクトリの状態がきれいになっている
$ git status
On branch main
nothing to commit, working tree clean
git stash list
隠したファイルの一覧を取得する
$ git stash list
stash@{0}: WIP on main: 1094ea1 add test
git stash apply
隠したファイルの復元を行う
git stash apply
をそのまま使うと最新を復元する
git stash apply [スタッシュ名]
とすると指定したスタッシュを復元
1. 状態の確認
$ git status
On branch main
nothing to commit, working tree clean
2. 復元
git statusしたときと同じ表示がされる
$ git stash apply
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working
directory)
modified: _scrap/git_github/stash.md
no changes added to commit (use "git add" and/or "git commit
-a")
git stash apply [スタッシュ名]
スタッシュ名を指定すると特定のスタッシュを復元する
1. 状態の確認
$ git status
On branch main
nothing to commit, working tree clean
2. スタッシュの確認
$ git stash list
stash@{0}: WIP on main: 1094ea1 add test
stash@{1}: WIP on main: 1094ea1 add test
3. スタッシュの復元(名前指定)
$ git stash apply stash@{1}
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working
directory)
modified: stash.md
no changes added to commit (use "git add" and/or "git commit
-a")
なお、ステージの状態も復元したい場合は git stash apply --index
とする
Gitの追跡対象から外す
$ git ls-files
.gitignore
README.md
_scrap/git_github/stash.md
_scrap/not_tracked/not_traked_file
articles/.keep
articles/09b55b4eb177a3.md
books/.keep
package-lock.json
package.json
git ls-files
はGitで追跡中のファイルを表示する
今回は_scrap/not_tracked/not_traked_file
におけるnot_tracked_file
を追跡から外し、not_tracked
を以降の追跡対象外とする
- ファイルもしくはディレクトリ内のファイルをunstageにする
ファイルのとき
$ git rm _scrap/not_tracked/not_traked_file
rm '_scrap/not_tracked/not_traked_file'
$ git ls-files
.gitignore
README.md
_scrap/git_github/stash.md
articles/.keep
articles/09b55b4eb177a3.md
books/.keep
package-lock.json
package.json
_scrap/not_tracked/not_traked_file
が追跡対象から外れた(unstaged)
ディレクトリのとき(-R
オプションを付けるだけ)
$ git rm --cached -r _scrap/not_tracked
rm '_scrap/not_tracked/not_traked_file'
$ git ls-files
.gitignore
README.md
_scrap/git_github/stash.md
articles/.keep
articles/09b55b4eb177a3.md
books/.keep
package-lock.json
package.json
- ファイルもしくはディレクトリ内のファイルをuntrackedにする
.gitignore
に追加する
.gitignoreはルートに配置することが多いが、複数のサブディレクトリに配置することもできる