Git合作指南
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
2git checkout main
git merge upstream/main -
这样可以确保你的本地仓库包含最新的代码,避免冲突。
创建新分支
-
不要在
main
分支上直接进行改动,建议为每个功能或修复创建一个新的分支。 -
创建并切换到新分支:
1
git checkout -b feature-branch-name
-
给分支起一个描述性的名字,比如
fix-typo
或add-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
场景一:将指定提交后的所有提交合并到该提交。
-
找到目标提交的哈希值:首先,使用以下命令查看提交历史,找到要保留的提交(即你希望将后续更改合并到的提交)。
git log --oneline
-
重置到指定提交:使用 git reset 将分支回退到指定提交。这样会取消指定提交后的所有提交,但保留文件改动在工作区中。
git reset --soft <commit-hash>
其中是目标提交的哈希值,例如 abc1234。
–soft 参数确保保留所有更改在暂存区,以便进行下一步的合并提交。hard 就会删除,请不要使用! -
重新提交所有更改:现在,所有更改都在暂存区中,你可以将它们合并为一个新的提交。
git commit -m "将所有更改合并为一次提交"
场景二:将未提交的更改合并到上一次提交。
如果在最近的提交之后还有未提交的更改,并希望将它们合并到该提交中,可以使用 git commit --amend。
- 暂存未提交的更改:首先,将所有未提交的更改添加到暂存区。
git add .
- 使用 --amend 更新上一个提交:将这些暂存的更改添加到上一个提交中。
git commit --amend -m "更新上一个提交的信息"
- 这将打开编辑器,允许你修改上一次提交的信息。如果你希望保留原始信息,只需保存并关闭编辑器即可。
要复原某个文件或者上次提交
场景一:将文件从暂存区移除,但保留在工作区中,改动还存在,但是 git 不记录。git reset <filename>
场景二:直接复原文件到上次提交。git checkout -- <filename>
场景三:直接复原整个项目到上次提交。git reset --hard HEAD
合并修改,建议在 IDE 里进行,很方便。更多的遇到的时候再学习吧。