Fork 项目仓库

  • 进入项目的 GitHub 页面,点击右上角的 Fork 按钮,将该项目仓库复制到自己的 GitHub 账户下。
  • 这个 Fork 的副本是你对项目的个人副本,你可以在上面进行改动而不会影响原项目。

Clone 项目到本地

  • 在你的 GitHub 账户中找到刚刚 Fork 的仓库,复制仓库的链接。

  • 在本地执行以下命令将仓库克隆到你的电脑:

    1
    git clone <your-forked-repo-url>

添加上游仓库 (Upstream)

  • 为了保持你的 Fork 和原项目的同步,需要添加原项目的仓库地址作为 “上游仓库”。

  • 进入克隆的项目文件夹,运行以下命令:

    1
    git remote add upstream <original-repo-url>

同步上游仓库的更新

  • 在进行更改之前,确保你的分支是最新的。可以通过以下命令拉取上游仓库的更新并合并到本地:

    1
    2
    git checkout main
    git merge upstream/main
  • 这样可以确保你的本地仓库包含最新的代码,避免冲突。

创建新分支

  • 不要在 main 分支上直接进行改动,建议为每个功能或修复创建一个新的分支。

  • 创建并切换到新分支:

    1
    git checkout -b feature-branch-name
  • 给分支起一个描述性的名字,比如 fix-typoadd-new-feature

进行改动并提交

  • 按照项目的规范进行代码更改、添加功能或修复 bug。

  • 完成后,将改动添加并提交:

    1
    git commit -m "描述性的提交信息,如修复了某个问题或添加了某个功能"

一般来说,每个提交应当专注于一个小而清晰的更改。以下情况通常是提交的好时机:

  • 完成一个小的功能或逻辑:例如实现一个函数、方法或模块。

  • 修复一个 Bug:当你修复了一个特定的问题时,可以单独提交,以便追踪问题。

  • 文档更新:当你更新了 README、注释或其他文档文件时。

  • 代码重构:对代码结构进行了调整,但没有改变功能时。

  • 测试用例更新:添加或修改了测试用例。

避免以下情况频繁提交:

  • 过于细碎的改动:比如一行代码的微调,除非是重要的修复。
  • 未经测试的代码:提交前应当确保改动是稳定的,或者明确标注为“临时提交”。

常见的动词包括:

修复 (Fix):修复 Bug 或问题,例如 Fix login error in login page

添加 (Add):添加新功能或模块,例如 Add user authentication module

修改 (Update):改进已有功能或文档,例如 Update README with setup instructions

重构 (Refactor):代码结构调整,例如 Refactor authentication module for clarity

删除 (Remove):删除不需要的代码或文件,例如 Remove deprecated API call

如果项目涉及到的文件比较多,那么可以加入前缀,比如在哪个包内做的修改。

将更改推送到 Fork 的仓库

  • 将改动推送到你自己 Fork 仓库的对应分支:

    1
    git push origin feature-branch-name

创建 Pull Request (PR)

  • 回到你的 GitHub 仓库页面,会看到一个 Compare & Pull Request 的按钮,点击它。
  • 在 Pull Request 页面中,填写你的改动描述,包括做了哪些更改、为什么进行这些更改等。
  • 提交 Pull Request,等待项目维护者的审核。

与项目维护者沟通

  • 项目维护者可能会对你的 Pull Request 提出建议或要求你修改。根据反馈进行调整,并再次提交到你的分支。
  • 更新 PR 时不需要重新创建 PR,直接推送到同一个分支即可。

Git 常用命令

怎么提交

git commit -m:仅提交已在暂存区的文件,不影响未暂存的文件。
git commit -am:将所有已跟踪文件的改动添加到暂存区并提交,但不包含新文件。

合并 Commit

场景一:将指定提交后的所有提交合并到该提交。

  1. 找到目标提交的哈希值:首先,使用以下命令查看提交历史,找到要保留的提交(即你希望将后续更改合并到的提交)。git log --oneline

  2. 重置到指定提交:使用 git reset 将分支回退到指定提交。这样会取消指定提交后的所有提交,但保留文件改动在工作区中。git reset --soft <commit-hash>
    其中 是目标提交的哈希值,例如 abc1234。
    –soft 参数确保保留所有更改在暂存区,以便进行下一步的合并提交。hard 就会删除,请不要使用!

  3. 重新提交所有更改:现在,所有更改都在暂存区中,你可以将它们合并为一个新的提交。git commit -m "将所有更改合并为一次提交"

场景二:将未提交的更改合并到上一次提交。
如果在最近的提交之后还有未提交的更改,并希望将它们合并到该提交中,可以使用 git commit --amend。

  1. 暂存未提交的更改:首先,将所有未提交的更改添加到暂存区。git add .
  2. 使用 --amend 更新上一个提交:将这些暂存的更改添加到上一个提交中。git commit --amend -m "更新上一个提交的信息"
  3. 这将打开编辑器,允许你修改上一次提交的信息。如果你希望保留原始信息,只需保存并关闭编辑器即可。

要复原某个文件或者上次提交

场景一:将文件从暂存区移除,但保留在工作区中,改动还存在,但是 git 不记录。git reset <filename>
场景二:直接复原文件到上次提交。git checkout -- <filename>
场景三:直接复原整个项目到上次提交。git reset --hard HEAD

合并修改,建议在 IDE 里进行,很方便。更多的遇到的时候再学习吧。