Git
术语
- git: 一个开源的分布式版本控制系统
- GitHub: 一个托管和协作管理 Git 仓库的平台
- commit 提交: 一个 Git 对象,是你整个仓库的快照的哈希值
- branch 分支: 一个轻型可移动的 commit 指针
- clone: 一个仓库的本地版本,包含所有提交和分支
- remote 远端: 一个 GitHub 上的公共仓库,所有小组成员通过它来交换修改
- fork: 一个属于另一用户的 GitHub 上的仓库的副本
- pull request 拉取请求: 一处用于比较和讨论分支上引入的差异,且具有评审、评论、集成测试等功能的地方
- HEAD: 代表你当前的工作目录。使用
git checkout可移动 HEAD 指针到不同的分支、标记(tags)或提交
Git 常用操作
-
配置 name 和 email
git config --global user.name name git config --global user.email email -
查看配置
git config --list -
初始化本地仓库(Repository)
会生成
.git目录git init -
查看本地仓库状态
git status -
添加文件到暂存
git add 文件名 -
将文件移出暂存区
git rm --cached 文件名 -
提交
git commit -m "" 文件名 -
查看本地仓库历史操作记录
git reflog -
代码回溯
git reset --hard commitId -
查看分支
git branch -v -
新建分支
git branch 分支名 -
切换分支
git checkout 分支名 -
合并分支,将指定分支合并到当前分支上
git merge 指定分支 -
克隆仓库
clone 干了三件事:
- 拉取代码
- 初始化本地仓库
- 创建仓库别名 origin
git clone https://github.com/作者/仓库.git -
查看仓库别名
git remote -v -
为仓库创建别名
git remote add 别名 https://github.com/作者/仓库.git -
提交本地分支到远程仓库
git push 仓库link/别名 分支名 -
更新本地分支
git pull 别名 分支名
冲突解决
-
冲突产生的原因:
合并分支时,两个分支对同一个文件都进行了修改。
- git无法自主解决代码冲突,需要人为参与。
-
<<<<<<< HEAD 当前分支文件中的冲突部分 ======= 指定分支文件中的冲突部分 >>>>>>> 分支名
- 因为是合并指定分支到当前分支,所以在本地解决
冲突部分解决后,不要忘记:
-
git add
-
git commit -m ""
不需要带文件名
Git 的团队协作机制
团队内协作
- A 在github 创建仓库
- A push
- B clone
- B push *
- A pull
注意:
B push 之前需要同意 A 的邀请,步骤:
- A 进到自己的仓库,设置-collaborators-add people
- 复制pending invite,发给 B
- B 拿着 pending invite 直接复制到浏览器,点击同意
- 然后就能push啦
跨团队协作
- fork
- clone
- pull request