Git合作开发 fork

举报
武师叔 发表于 2022/09/29 16:39:44 2022/09/29
【摘要】 theme: condensed-night-purple Git携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情 提交版本 commit通过执行 commit 操作,将暂存区中托管的文件数据存储到本地仓库保存。commit 操作执行完毕后,暂存区数据会被清空。每次 commit 操作前都应执行 add 操作。git commit -m "Yo...

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 模式

    适用于小组合作开发。

    1. 仓库所有者进入仓库设置,在 Collaborators 选项添加合作者。
    2. 合作者有权限对直接对指定的远程仓库进行修改。
  • fork 模式

    适用于开源或大型项目。

    1. 开发者选择 Fork 原仓库,复制得到自己持有的镜像仓库。
    2. 开发者对镜像仓库进行修改后,可以发送 Pull Request 询问原仓库拥有者是否想要该修改。
    3. 原仓库拥有者同意后,镜像仓库的修改会合并到原仓库中。

协助开发者可以在本地仓库同时链接两个远程仓库:如 origin 自己持有的镜像仓库 & upstream 原始仓库。本地仓库从 upstream 获取代码,更新后上传到 origin 并发送 Pull Request 请求。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。