Git 理论
首先需要知道 Git 的几个区(工作区、暂存区和本地仓库)和几个状态(Untracked、Unmodify、Modified、Staged),如果连上 GitHub 则加上远程仓库。
工作区(WorkSpace):需要通过Git进行版本控制的目录和文件。
暂存区(Index/Stage):或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
本地仓库(Local Repository):一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)
远程仓库(Remote):GitHub 远程保存的仓库
未跟踪(Untracked):未被 git 进行跟踪的文件,可以通过 git add 命令加入暂存区
未修改(Unmodified):未修改,版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为 Modified. 如果使用 git rm 移出版本库, 则成为 Untracked 文件
被修改(Modified):文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改
暂存态(Staged):执行git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
配置相关
# 配置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
# 设置 http/https 代理
git config --global http.proxy http://127.0.0.1:8080
git config --global https.proxy https://127.0.0.1:8080
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# 查看系统 config
git config --system --list
# 查看当前用户(global)配置
git config --global --list
# 查看当前仓库配置信息
git config --local --list
分支
# 新建本地分支
git branch 本地分支名
# 推送本地分支内容到指定远程分支,远程分支不存在则新建
git push origin 本地分支名:远程分支名
# 上一条命令特例,默认远程分支名为本地分支名
git push origin 本地分支名
# 本地切换分支
git checkout 本地分支名
# 查看本地分支
git branch
# 查看本地和远程分支
git branch -a
# 本地分支和远程分支建立联系,push 时便可以直接 push 到指定的分支
git push --set-upstream origin 本地分支名:远程分支名
# 上一条特例,默认和本地分支同名的远程分支建立联系
git push --set-upstream origin 本地分支名
# 查看本地分支和远程分支的对应关系
git branch -vv
# 分支合并:将指定分支合并到当前分支(发生冲突手动解决)
git merge 分支名
# 拉取本地不存在的远程分支,并在本地创建一个新的分支【本地和远程分支自动关联】
git checkout -b 本地分支名 origin/远程分支名
# 拉取远程分支到本地
git fetch origin 远程分支名
# 删除本地分支
git branch -d 本地分支名
# 删除远程分支
git push origin --delete 远程分支名
1. git fetch
git fetch 取回远程分支内容之后,可以通过 git checkout 命令切换到对应的远程分支,查看分支的内容。如果需要将远程分支和本地分支进行合并,在对应的本地分支上使用 git merge origin/远程分支名 进行合并即可。
优点
- 防止污染代码。刚接触项目的人员可能不熟悉项目规范,如果直接在主分支上进行操作,项目将很难进行维护。因此一般都是新建一个分支,后续开发在自己的分支上进行操作,开发完成后由项目代码审核人员审核之后并入主分支。
- 方便实现并行开发。如果多个功能可以并行开发,且都在主分支上进行操作,那么当一个功能开发完成需要提交测试文件的时候,需要人工判断哪些文件需要提交。
操作流程
- 新建本地分支
- 推送本地分支到远程
- 将本地分支和远程分支建立联系
- 在本地分支上进行开发(流程和在主分支上一样)
- 开发完成审核通过之后将开发分支合并到主分支并提交