# task02_git_practice **Repository Path**: kjiskyz/task02_git_practice ## Basic Information - **Project Name**: task02_git_practice - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-19 - **Last Updated**: 2026-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C2 M02 课堂练习:Git基础工作流 ## 1. 最终目录结构 ``` kj@DESKTOP-09TE7OC:~/python-course/task02_git_practice$ find . -maxdepth 2 -type f ./image-6.png ./image-5.png ./conflict.txt ./image-2.png ./image-1.png ./.gitignore ./image-9.png ./image-3.png ./image-7.png ./image-11.png ./readme.md ./README.md ./demo.txt ./image-8.png ./.git/config ./.git/ORIG_HEAD ./.git/description ./.git/AUTO_MERGE ./.git/COMMIT_EDITMSG ./.git/HEAD ./.git/index ./image.png ./notes.md ./image-10.png ./image-4.png ``` ## 2. 成功运行过的核心命令 - git status, git add, git commit, git log, git restore, git switch, git merge, git revert ![alt text](image-1.png)![alt text](image-2.png) ![alt text](image-3.png) ![alt text](image-4.png) ![alt text](image-5.png) ![alt text](image-6.png) ![alt text](image-7.png) ![alt text](image-8.png) ![alt text](image-9.png) ![alt text](image-10.png) ![alt text](image-11.png) ## 3. 我的提交历史 ``` kj@DESKTOP-09TE7OC:~/python-course/task02_git_practice$ git log --oneline --graph --all * 5517391 (HEAD -> master) Revert "feat: bad change" * 0d3ef58 feat: bad change * 7584661 fix: resolve merge conflict |\ | * 2cfb8f1 (feature-conflict) feature: change conflict line * | 84cbe1d main: change conflict line |/ * 36482c8 init: conflict file * 94dab9a (feature-demo) feat: add demo * 0c685a8 docs: update notes * 117c041 docs: add notes * c2529d6 docs: init git practice ``` ## 4. 我完成的一次撤销 - 撤销场景:工作区文件改坏了,需要丢弃未提交的修改。 - 使用命令:git restore notes.md - 我理解的原因:git restore 会直接用暂存区或本地仓库的完好快照覆盖工作区的文件。 ## 5. 我完成的一次分支合并/冲突解决 - 分支名:feature-conflict - 是否出现冲突:是 - 冲突文件:conflict.txt - 最终解决方法:手动编辑冲突文件,确定最终保留的内容后重新 git add 并 git commit。 ## 6. revert与restore 的区别 1. `git revert` 撤销的是某次 Commit 提交的内容;会新增一个反向的 Commit。 2. `git restore` 撤销的是工作区或暂存区中未提交的文件改动;不会新增 Commit。 3. 因为已经 push 到远端的历史不容轻易篡改(比如强推会影响队友),用 `revert` 新增一个提交来纠错是最安全、最符合规范的做法。 4. revert 一个 Revert commit 负负得正,等于把第一次被撤销的改动重新带回来。 ## 7. 自检回答 1. 四区分别是:工作区(Working Tree)、暂存区(Index/Stage)、本地仓库(Repository)、远程仓库(Remote)。 2. `git add` 把内容从工作区送到暂存区。 3. `git commit` 把内容从暂存区送到本地仓库。 4. `git push` 把内容从本地仓库送到远程仓库。 5. `git fetch` 只是拉取远端更新到本地仓库,不自动合并;`git pull` 等于 `git fetch` + `git merge`,拉取后会自动尝试与当前分支合并。 6. `<<<<<<<` 到 `=======` 之间是当前分支(通常是主分支)的内容;`=======` 到 `>>>>>>>` 之间是被合并分支的内容。 7. 当本地有未提交的代码,或者当你在多人协作的公共分支上,且该分支的历史已经被推送到远端时,绝不能随便使用 `git reset --hard`。 8. `git status` 能让你看清当前处于哪个四区状态(有没有漏掉 add 或 commit),`git log` 能让你看清当前在版本树的哪一个位置。