オープンソース:Gitリモコンとマージ


こんにちは!🙋
先週、私は問題を作成し、要求を引く練習しました.今週、私はGITについてもっと学び、4回目の課題でパートナーと練習しました.私は私のパートナーの静的サイトジェネレータ(SSG)に新しい機能を追加し、プル要求(PR)を行った.また、別のパートナーが私のSSGを更新したので、私は変更を検討し、それらをマージしました.
私はその内容をパート1とパート2に分けました.第1部は、私が問題を掲示するための手続きであった.パート2は、私がPRを受け取った後の手順をまとめました.

新機能は何ですか?

I updated my partner's SSG to support config with Config File.
For example, the SSG generates HTML files from text files with $node textToHTML --input <filename/foldername> --stylesheet <stylesheet url or path>. This time, if users enter ssg --c ./ssg-config.json on the command line, the JSON formatted configuration file instead of having to pass them all as command line arguments.

Example: ssg-config.json file


{ "input": "./site",
  "output": "./build",
  "stylesheet": 
  "https://cdn.jsdelivr.net/npm/water.css@2/out/water.css",
  "lang": "fr" }

Inside the site folder, you can store your text files, and they will be generated to HTML file and stored in the build folder.



✅1 :問題の作成とプルの要求
私は私のパートナーアンドレのrepoの上でフォークをして、それを私のローカルファイルにクローニングして、それを先週のような要件に基づいて更新しました.しかし、今回は少し異なりました.私はそれがレビューの準備ができているときにコメントを更新することができますので、ドラフトプル要求をする必要がありました.

新しい機能を実装するには、次のコードを追加します.
//add a new yarg option
option('c', {
    alias: 'config',
    demandOption: false,
    describe: 'Accept a file path to a JSON config file.',
  }
//add config
if(argv.c){
  const configJson = fs.readFileSync(path.normalize(argv.c));
  const con = JSON.parse(configJson);
  argv.input = con.input;
  argv.stylesheet = con.stylesheet;
  argv.lang = con.lang;
  argv.output = con.output || "./dist";
}else{
  console.log("Error: Could not read config.json file");
  process.exitCode = -1;
} 
私がコミットして、押して、合併を求めたあと、私のパートナーは私に機能に基づいて彼のREADMEを修正するように要求しました.私はそれを修正し、再びそれを押した.
  • リンクMy partner's SSG , Issue-14 , Pull Request

  • ✅Remoteによるレビューとテスト
    私の他のパートナー、Gustavoは、私のSSGに機能を追加したので、私は検討し、合併.私は彼のフォークレポの名前と彼が働いていた支店の名前を得た.
  • 彼のフォークレポhttps://github.com/GMOTGIT/pajama-ssg
  • ブランチの名前
  • 1 .ローカルリポジトリ( REPO )にリモートで追加しました.$git remote add Gu https://github.com/GMOTGIT/pajama-ssg.git私は地元のレポ「GU」と名付けました、そして、URLは彼がフォークした私のSSGレポです.
    2 .彼の作品を地元のレポに取り込んだ.$git fetch Guこれは私のローカルレポにリモートrepoのすべてのコミットと枝をダウンロードしますが、マージはありません.彼が彼のリモートレポで持っているすべては、現在私のGitレポにコピーされます.
    3 .ローカルレポで「トラッキングブランチ」を作りました.$git checkout -b issue-19-check Gu/issue-19 ( $git checkout -b <branch-name> <name-of-student>/<branch-name> )
    それで、私は支店で彼の仕事を追跡することができて、私が作成した新しい支店「発行- 19 -チェック」に変わりました.
    Switched to a new branch 'issue-19-check'
    D       dist/The Red Headed League.html
    D       doc/test.md
    M       test.txt
    Branch 'issue-19-check' set up to track remote branch 'issue-19' from 'Gu'.
    
    4 .テスト新機能!
    私のSSGは正常に新しい機能なしで働いた.
    5 .テスト中に動作しているか確認してください.$git pull Gu issue-19
    From https://github.com/GMOTGIT/pajama-ssg
     * branch            issue-19   -> FETCH_HEAD
    Already up to date.
    
    最終チェック$git log 私が頭にいるならば:
    PS C:\Users\Mizuho\Desktop\OSD600\pajama-ssg> git log
    commit 04a71d577754ed4996ed5cd52182e6b3da6f4434 (HEAD, origin/main, origin/HEAD, Gu/issue-19, main, issue-19-check)
    Author: Gustavo Tavares <email>
    Date:   Tue Oct 5 22:42:22 2021 -0300
        Updating the README.md
    commit 7fc385385c9d6fc9fa7f3991c6bf57c85e0979de
    Author: Gustavo Tavares <email>
    Date:   Tue Oct 5 21:08:21 2021 -0300
        Adding Config File Feature
    
    マージする準備完了!$git checkout main $git merge Gu/issue-19 $git push origin main
    メインブランチへのマージとプッシュは自動的にプル要求とGutthubのグスタボからの問題を閉じた!

    問題
    この研究室を通して、私は問題を起こしました.
  • 私は新しい支店を作ることなくプロジェクトを更新していました$git restore . , そして、分岐を作成して、それから私の更新されたコードをペーストします.
  • 私は偶然、同じ名前としてトラッキングブランチを作成できませんでした.私は何を私が作成したチェックする必要がありますgit remote コマンド.
  • PART 2 STEP 3では、トラッキングブランチを作成しましたが、以前の変更をコミットしなかったのでエラーが発生しました.
  • error: Your local changes to the following files would be overwritten by checkout:
            README.md
    Please commit your changes or stash them before you switch branches.
    Aborting
    
    したがって、私は詳細をチェックして、最初にそれを犯さなければなりませんでした.
    PS C:\Users\Mizuho\Desktop\OSD600\pajama-ssg> git status
    On branch issue-19-review
    Changes not staged for commit
            modified:   README.md
            deleted:    doc/test.md
            modified:   test.txt
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            dist/test.html
            test.md
    

    結論
    私のパートナーはまた、私はそれを理解しやすくするだろうと思う私のSSGのJavaScriptを使用したが、それは彼らのコードを理解するためにいくつかの余分な時間を要した.幸運にも、私たちはよくコミュニケーションを行いました.
    この課題に取り組む前に、ブランチとリモコンを使うときは混乱しました.私はgitを使用して快適になっていますが、私は簡単にいくつかのことを忘れて、このブログは良い場所に戻ってくることです!
    (Pexelsからのshahid tanweerによる写真)