オープンソーストレーニングの学習(Gitによるコラボレーション)


前回の授業ではオープンソースの面接に合格し、最初のトレーニングを受けました.
githubをどのように使用してコラボレーションを行い、毎日4時間の計8時間のトレーニングを行い、主に個人プロジェクトに従事している私にとって、疎遠なコマンドがたくさんあります.もう一度復習するために、今度は文章を書きたいです.

個人プロジェクト


個人種目の時.
git add
git commit-m「約」
git push origin master(or main)
上記の3行のみを使用してCOMMITを書き間違えた場合、ほとんどの場合無視して行われます.
しかし、オープンソースプロジェクトを行うと、上記のように殴られます.
ではgithubを使ってコラボレーションするにはどうすればいいのでしょうか.

commit!!


今までどうしてcommitを書くのか、勝手に書けばいいのではないでしょうか.このような考えでGithubにアップロードするのは、非常に間違った考え方です.commitには私のタスクに関するすべての情報が含まれているため、レビュー者やオペレータがmergeを行うと、私の提出を主として意思決定を行うことができ、他の開発者も私の提出を確認して操作することができます.そのため、commitを草で書くと、他の開発者にひどく殴られる可能性があります!
では、commitはどのように書きますか?

吟遊詩人と同じように、単語ごとに意味がある。


通常commitは1行の要約で書きます.そのため、すべての単語に意味があります.たとえば、commitを作成したとします.
README.mdファイル
~~~
Uchan Lee(python) <- 추가
ファイルを追加すると...
git commit -m "update"
上記のように提出してPushとPR(pull&request)をしたら?
レビュー担当者から見れば、どのようにファイルを修正したのか分からないかもしれません.そのため、私がレビュー者やオペレータであれば、私は絶対に合併しません.そこで、より具体的に説明できるように、以下のように修正します.
git commit -m "Add UchanLee in README.md"
前述したように、commitの作成はコードを理解し、参照しやすい.

コミット管理

git log --oneline
次のようにwikermandを入力します.

コミットID、コミット内容
出力は以下のようになり、これによりcommit IDを特定することができる.オプションを追加してログを表示できます
たとえばgit log--oneline|wc-lと入力すると、ログの数が表示されます.
また,wc−lの代わりにhead−10を用いると,上から10個しか出力されない.
ここで重要なのは、上から最近の記録です.つまり、上にあるほど、最近の提出を意味します.したがって、古い順序でlogを表示したい場合は、以下のように入力できます.
git log --oneline --reverse
ここでonelineオプションが気になるかもしれません.
onelineオプションをオフにすると、どのように出力されますか?

前述したように、commitを作成したユーザの情報と日付が出力されます.したがって、コミットに関する情報を使用して、誰が作成したかを知ることができます.コードのいくつかの行を見て疑問がある場合は、commitを追跡して作成者に尋ねることができます(非常に役に立つかもしれません).

commitの削除または変更


git reset--soft head~2をネットで検索して削除すればいいです.この点を分析すると、上から2つ削除し、ファイルを保持し、ソフトウェアではなくhardを入力すると、すべて削除するという意味です.ここで重要なのは上から削除することです.中間コミットレコードを削除したら?

rewind


巻き返しは、ある点を最近の記録とすることを意味する.どうしてこんなことを?前述したように、commitは、最近のレコードの周りで動作することができる.そのため、真ん中から直接近づくことはできません!!(Advancedスキルを使用していれば可能かもしれません).削除したいcommitポイントに戻り、削除します.

このようなロゴがあると仮定します.
こちらです.
git rebase -i --root
打ってすぐ出てきた.

(ちなみにvim editorはdefaultだと思いますのでnanoなどを使う人とは違うかもしれません)
では、3番目のコミットセクションでは、pickをeditに置き換え、wq

衝突が起こったことを示すのは当然だ.コミットの削除中に前のファイルと競合したためです.git diffを打つともっと詳しくなります.

この状態で、README.mdを修復して新しいcommitを追加してpushにしたら?

これはよく遭遇するpushエラーです.これはもちろん起こります.commitを変更したためgit上のファイルとは異なり、競合が発生しました.これにより、以下のコマンドで強制的に実行できます.
git push origin master -f
通常は-fオプションは推奨されません.これは、変更されたコードをプロジェクトにアップロードすると競合するためです.しかし、この過程で衝突は当然であり、アップロードするには-forceオプションを追加しなければならない.fを加えたからといって、決まっているかどうかは考えられない.

以上のように押すことに成功した.また、logは以下の変更を行いました.

この機能を使用すると、再構築を行い、競合が発生しない時点に戻ってファイルを変更できます.
ではcommitを修正する方法は次のとおりです.
過去の時点に戻る->コミットの削除と変更->rewind
つまり.
1.git rebase-i-rootを使用してポイントをeditに設定
2. git reset --soft HEAD~1
3.git commit-m「修正」
4. git rebase --continue
上記のように、修正されたものが見えます.dropやrewordなどは以下の方法で使用できますが、これは省略します.

貢献のために


上ではずっとCOMMITについて話しているので、COMMITの重要性を強調したいと思います.commitは私の作業コードを表すので、これらのコードを慎重に作成し、修正しなければなりません.またopensourceでは多くの人が働いているので、私がしたことと誰かがしたことが衝突する可能性があります.したがって、rebaseコマンドを使用して競合しない時点を返すスキルも必要です.
PRしていたのに他の人のコードを統合していたら、私のコードは統合できないかもしれません.この時はRebaseでこの点を解決します!