sourceTree 重度依赖者,习惯摆脱这种依赖,所以写下来。
git 常用命令
git pull 和 git fetch 的区别
-
git fetch 只是将远程仓库的变化下载下来,并没有和本地分支合并。
-
git pull 会将远程仓库的变化下载下来,并和当前分支合并。
git rebase 和 git merge 的区别
git merge 和 git rebase 都是用于分支合并,关键在 commit 记录 的处理上不同:
- git merge 会新建一个新的 commit 对象,然后两个分支以前的 commit 记录都指向这个新 commit 记录。这种方法会保留之前每个 分支的 commit 历史。
- git rebase 会先找到两个分支的第一个共同的 commit 祖先记录, 然后将提取当前分支这之后的所有 commit 记录,然后将这个 commit 记录添加到目标分支的最新提交后面。经过这个合并后,两个分支合并后的 commit 记录就变为了线性的记录了。
代码仓库
常见的 github、gitee、gitlab 等,这里我们讲讲 GitHub。
如何提交一个 pr?
pr(Pull Request)是GitHub中一种重要的协作机制,它允许开发者向开源项目的维护者提交代码更改请求,以便其他人可以审查和讨论这些更改,最终决定是否将它们合并到主项目中。
第一步是 fork 目标仓库,相当于一个目标仓库的快照,相当于备份了一份,通过修改我们备份的代码,提交到我们 fork 的仓库后,再进行对目标仓库的 PR。
主要步骤如下:
-
Fork 主仓库并克隆到本地。
-
添加主仓库作为上游远程仓库。
-
创建新的分支进行开发并提交更改。
-
获取上游仓库的最新更改并合并到本地主分支。
-
将最新更改合并到你的功能分支,解决冲突。
-
推送功能分支到你 fork 的远程仓库。
-
在 GitHub 上提交 Pull Request。
如何保持本地的代码与远端目标仓库的代码一致?
-
克隆仓库(forked repository) : 你首先会从某个仓库克隆出自己的副本,例如从 GitHub 上 fork 一个项目,然后克隆到本地:
git clone https://github.com/your-username/your-forked-repo.git cd your-forked-repo -
添加上游远程仓库: 使用
git remote add upstream命令,将原始项目(上游仓库)添加为远程仓库。这里的xxx是上游仓库的 URL。例如:git remote add upstream https://github.com/original-owner/original-repo.git -
验证远程仓库: 你可以使用
git remote -v命令来验证远程仓库是否添加成功:git remote -v输出应类似于:
origin https://github.com/your-username/your-forked-repo.git (fetch) origin https://github.com/your-username/your-forked-repo.git (push) upstream https://github.com/original-owner/original-repo.git (fetch) upstream https://github.com/original-owner/original-repo.git (push)
之后的常用操作:
-
获取上游仓库的更新: 每当上游仓库有更新时,你可以将这些更新合并到你的分支中:
git fetch upstream -
合并更新到本地分支: 将上游仓库的更新合并到你正在工作的分支(例如
main分支):git checkout main git merge upstream/main -
解决合并冲突: 如果在合并过程中发生冲突,你需要手动解决冲突,然后提交合并结果。
-
推送更新到你的远程仓库: 最后,将合并后的代码推送到你自己的远程仓库:
git push origin main