読者です 読者をやめる 読者になる 読者になる

karashi39とはいったい

夢と希望と明日と正義を讃える

プルリクを送った後の流れ

IT

なんか息をするようにgitを使っている人には当然のことっぽいけど、このワードでググってもよくわからんかった初心者な私はメモっておいて、あと、間違ってたりもっといい方法があったら教えて欲しいです。

プルリクを送る前の作業

ブランチを新しく作って、新しいブランチに移動して、今のブランチを表示する <branch_name>はテキトー*1な名前をつける。 git branchだけのコマンドを打つと、今どのブランチにいるか確認できます。

  • git branch <branch_name>
  • git checkout <branch_name>
  • git branch
$ git branch
* master
$ git branch test
$ git checkout test
Switched to branch 'test'
$ git branch
  master
* test

ここでおもむろにコーディングなどの作業を行う。 作業が終わったら次のことをしていく

  • git add <file_name>
  • git status
  • git commit -m ""
  • git push origin <branch_name>

git addは、.gitignoreを書いて、全部addしていくのがいいけど、 ファイル名で指定する場合は、変更を加えたファイルを毎回git addしていく。 その後、git statusで確認を行い、変なファイルが追加されていないかを確認後、git commit git pushはリモートへの送信みたいな感じですかね。

$ git add .
$ git status
On branch test
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   xxxx.py

$ git commit -m "commit message"
[setup 99a35ee] commit message
 Committer: XXXXXX XXXXX <XXX@XXXXXXX>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

    git config --global --edit

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

 1 file changed, 2 insertions(+), 2 deletions(-)

$ git push origin setup
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 331 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/karashi39/XXXXX.git
   5450621..99a35ee  setup -> setup

プルリクを送る

なんかGitHubクローンによっては名称が違うけど、結局みんなプルリクって呼ぶので統一したら?って思ってる。
方法はGitHubクローンによって違うのでググるGUIで操作しないといけないの、個人的には嫌いです。
そしてプルリクを送った後は、もう作業はやめて心静かに待つ。 プルリクで送った更新対象とは違う、別のファイルについては作業して大丈夫です。

プルリクが承認された後の作業

ここがググってすぐにでないので、要領を得なかったんだけど、つまりはこういうことっぽい。
自分の作業がマージされたら次のことをしていく

  • git checkout master
  • git pull origin master

これで自分のリポジトリのmasterがリモートの最新、つまりみんなで作った友情のリポジトリの最新と一緒になる。
そして、作ったブランチは消してしまう。-Dオプションは強制削除のようです。

  • git branch -D <branch_name>

この状態になったらまた次の作業を始められるので、最初に戻る。

消さないで続けていくパターンもある。 しかし、リモート側ではブランチは削除されてしまうことが多い気がする。気のせいかも。 削除されたからといって、手順が変わるわけではないです。

  • git checkout <branch_name>
  • git branch
  • git merge master <branch_name>

2016/10/11 追記

上記の手順は、権限もらってるリポジトリに対しforkとか無しでいきなりgit cloneして、 直接そいつにPRを送るときという前提で書いたんですけど、(書いた時点ではforkというものをやっていなかった。)
forkして作業したときは、本家の最新に、forkした自分のmasterを追いつかせる必要がある。 それはもうプルリク後、前とかにかかわらず、常にやるべきなんだけど、とにかくコレをやる。

2016/10/20 更新

手順とかがわかってきたのでいろいろ書き直した。

本当にこれでいいんですか?よくわからん

gitのことを体系的に理解していけば使い方は自明なんだろうけど、急激にgitを使うことを求められた初心者にはつらいです。
ググレカスみたいな風潮は、長期的には良いのかもしれない、しかし短期的には不幸*2 という雰囲気があり、なんとかなりませんか。

この記事は私が成長したら更新していく。

*1:適切ともいう

*2:初心者が何かしらやらかして大変になる