Git合作开发 fork
theme: condensed-night-purple
Git
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情
提交版本 commit
通过执行 commit 操作,将暂存区中托管的文件数据存储到本地仓库保存。
commit 操作执行完毕后,暂存区数据会被清空。每次 commit 操作前都应执行 add 操作。
git commit -m "Your commit" # 提交文件,放入 git 仓库保存
git diff --staged # 查看当前分支暂存区更新(相对于提交版本)
git status # 查看文件是否被暂存或提交Copy to clipboardErrorCopied
执行 commit 操作后(版本号 A)并尝试 push 到远程仓库,如果远程仓库已经被更新就会遭到拒绝。此时必须通过 pull 获取更新到本地然后合并(版本号 B)才能 push 代码,但是会提交两个版本更新。
此时可以改用 stash 操作对本地更改进行缓存,但不会产生新的提交对象(无论是否 add 默认情况下都会被缓存)。再执行 pull 操作时会直接读取远程仓库的版本,然后通过 stash pop 操作读取缓存并合并(版本号 B)。之后再进行 commit 和 push 操作,就只会提交一个版本更新。
git stash # 将更改放入堆栈缓存
git stash save "save message" # 将更改放入堆栈缓存并命名
git stash apply # 应用堆栈缓存中的更改但不清除
git stash pop # 读取堆栈缓存中的更改
git stash list # 查看堆栈缓存
git stash show "save message" # 查看指定堆栈缓存
git stash clear # 清空堆栈缓存Copy to clipboardErrorCopied
管理分支 branch
在创建仓库的时候,会默认创建主分支 master。HEAD 则始终指向当前分支。
在开发功能、修复 BUG 时,我们通常都会创建分支来进行操作,直到完成开发后再合并到主分支上。
git branch # 列出本地分支(HEAD 指向当前分支)
git branch -r # 列出远程分支
git branch test # 创建 test 分支(但不切换)
git checkout test # 切换到 test 分支
git checkout -b test # 创建并切换到 test 分支
# 当前分支未被修改时,merge 和 rebase 无区别
git merge test # test 分支合并到当前分支(将两个分支合并,新建一个 commit)
git merge origin/master # origin/master 合并到当前分支
git rebase master # master 分支合并到当前分支(当前分支重新执行另一个分支的全部 commit)
git branch -D test # 删除分支Copy to clipboardErrorCopied
当合并分支或者导入远程仓库分支时,常常会出现同一个文件被多个分支修改的情况。这个时候工作区文件会同时记录多个版本的代码,需要开发者通过编辑器解决冲突。
git status # 查看工作区和缓存区差异
git log -p master..origin/master # 查看两分支提交版本之间差异
git log # 查看提交历史(会显示 commit ID)
git log README.txt # 查看指定文件提交历史(会显示 commit ID)
git reset --hard f687a6de307a598d375bc1b6433dfe667c551f87 # 版本回退(根据 commit ID)
git reset f687a6de307a598d375bc1b6433dfe667c551f87 README.txt # 对指定文件版本回退(根据 commit ID)Copy to clipboardErrorCopied
远程同步 push / pull
本地仓库和远程仓库链接后,且本地 Git 绑定的 GitHub 账户具备对远程仓库的操作权限,用户就可以通过以下指令同步远程代码。
git push -u origin master # master 分支上传到远程仓库 origin(上传新分支会在远程仓库也创建新分支)
git push -f origin master # master 分支强制上传到远程仓库 origin(适用于版本回退后远程同步)
git pull origin master # 从远端仓库 origin 获取代码并自动合并到主分支
git status # 导入后工作区更新,查看和之前版本的差异
git fetch origin master # 从远端仓库 origin 获取 origin/master 分支
git log -p master..origin/master # 查看分支差异
git merge origin/master # 合并分支Copy to clipboardErrorCopied
合作开发 fork
Github 等远程仓库支持多人对同一项目进行协同开发,主要有以下两种形式。
-
collaborators 模式
适用于小组合作开发。
- 仓库所有者进入仓库设置,在 Collaborators 选项添加合作者。
- 合作者有权限对直接对指定的远程仓库进行修改。
-
fork 模式
适用于开源或大型项目。
- 开发者选择 Fork 原仓库,复制得到自己持有的镜像仓库。
- 开发者对镜像仓库进行修改后,可以发送 Pull Request 询问原仓库拥有者是否想要该修改。
- 原仓库拥有者同意后,镜像仓库的修改会合并到原仓库中。
协助开发者可以在本地仓库同时链接两个远程仓库:如 origin 自己持有的镜像仓库 & upstream 原始仓库。本地仓库从 upstream 获取代码,更新后上传到 origin 并发送 Pull Request 请求。
- 点赞
- 收藏
- 关注作者
评论(0)