@runzhliu
2018-09-13T05:25:26.000000Z
字数 1728
阅读 2981
git fork
git helpman gitgit xxx --help
worktree = workspace = 工作区 = 工作目录
index = stage = git 索引 = 暂存区
.git = repository = 本地 repo = 本地仓库
remote = remote repo = 远程仓库

Git 基本工作方式,修改/添加/删除文件,然后 git add,把文件内容加入 git 索引,接着 git commit 把内容存入 repo。
Git 仓库中的文件按照是否被 Git 仓库管理,分为三种状态 tracked/ignored/untracked。
请在 /tmp 目录下进行以下操作。
# .git 文件夹就是 repogit init# tmp 目录下载远程仓库git clone git@gitlab.dxy.net:runzhliu/git-sharing.git# 切出工作分支/开发分支git checkout -b dev_{邮箱地址}git checkout -b dev_lrz@dxy.cn# 增加文件touch testvim test# 查看 Git 文件系统的情况git status# 提交到 git 索引git add -A# 提交到 repo,并撰写 commit messagegit commit# 查看提交记录git log# 修改文件内容vim test# 再次提交到 git 索引并且提交到 repogit add -Agit commit# 推向远程git push -u orgin dev_{邮箱地址}# 切换分支到 mastergit checkout master# 拉取远程仓库,可以看到有很多分支生成了# orgin 代表远程仓库git fetch orgin# 切回自己的分支,删除文件,提交到索引和仓库rm testgit add -Agit commit# 回滚找到之前的文件# 确定文件在哪个 commit_id 上git log# 回滚的几种方式 soft/mixed/hardgit reset --soft commit_idgit reset --hard commit_id# 合并操作 merge,本地分支的代码 merge 进去 mastergit merge dev_{邮箱}# 另一种合并操作git rebase master# 合并是有可能会有冲突的# master 和 dev_{邮箱} 同时修改 test 的最后一行git rebase master# 远程合并提交 pull request/merge request,本地 master 拉取远程 mastergit pull
首先介绍一下 Fork 的流程和特点。
- Fork 工作流与其它工作流截然不同。与其使用唯一的服务端仓库作为「中央」代码库,它给予每个开发者一个服务端仓库。也就是说每个贡献者都有两个 Git 仓库,而不是一个,一个私有的本地仓库和一个公开的服务端仓库。
- Fork 工作流的主要优点在于贡献可以轻易地整合进项目,而不需要每个人都推送到单一的中央仓库。开发者推送到他们自己的服务端仓库,只有项目管理者可以推送到官方仓库。这使得管理者可以接受任何开发者的提交,却不需要给他们中央仓库的权限。
- 结论是,这种分布式的工作流为大型、组织性强的团队(包括不可信的第三方)提供了安全的协作方式。它同时也是开源项目理想的工作流。namespace 不同了,权限都在自己手里,成为 Fork 项目的 Maintainer。
# 查看远程仓库git remote -v# 配置官方仓库的地址git remote add upstream git@gitlab.dxy.net:data-dev/recommend-system.git# 拉取官方仓库的分支到本地git fetch upstream master:master-dev# 合并远程仓库的代码git rebase upstream/master# 在本地 master 提交更新并且向远程仓库发起 pull request/merge requesttouch abcgit add .git commitgit push
