オープンソース: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 enterssg --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を修正するように要求しました.私はそれを修正し、再びそれを押した.✅Remoteによるレビューとテスト
私の他のパートナー、Gustavoは、私のSSGに機能を追加したので、私は検討し、合併.私は彼のフォークレポの名前と彼が働いていた支店の名前を得た.
$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
コマンド.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による写真)
Reference
この問題について(オープンソース:Gitリモコンとマージ), 我々は、より多くの情報をここで見つけました https://dev.to/okimotomizuho/open-source-git-remotes-and-merges-166bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol