小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
一、Git的工作机制
二、代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,简称远程库。
三、基本操作
- 初始化本地库git init
git init
初始化后会生成一个.git文件夹进行版本管理:
2.查看状态git status
git status
- 添加到暂存区git add
git add 文件名
- 删除暂存区的文件git rm --cached
git rm --cached 文件名
这里只删除了暂存区的文件,并没有删除工作区的文件。
5.将暂存区文件添加到本地库git commit
git commit -m 日志信息
- 查看提交记录git reflog
git reflog
7.查看详细记录 git log
git log
- 查看文件内容cat
cat 文件名
- 重置为历史版本 git restet
git reset --hard 旧版本id
四、分支
- 查看分支git branch -v
git branch -v
查看本地分支对应的远程分支:
git branch -va
- 创建分支git branch
git branch 分支名
根据远程分支创建本地分支:
git checkout -b 本地分支名 origin/远程分支名
例子:
git checkout -b dev origin/dev
- 切换分支
git checkout 分支名
- 合并分支
git merge 分支名
- 解决合并冲突
(1)切换到dev分支,修改1.txt内容,并提交:
(2)切换到master分支,修改1.txt内容,并提交:
(3)在master分支合并dev分支,出现合并失败:
(4)打开1.txt文件,冲突代码出现了提示:
(5)解决冲突: 将不要的内容删除即可:
查看文件状态:
将修改的文件保存到暂存区,并提交(注意提交时不写文件名),查看文件发现master分支中的1.txt即是我们要的效果:
注意:master分支中合并冲突后,dev分支是没有修改的,我们切换到dev分支查看下1.txt内容如下:
(6)切换分支的实质 切换分支的实质是head指针进行切换,下图中head指针指向master分支,则当前分支为master;当head指针指向hot-fix分支时,当前分支切换为hot-fix分支。
五、团队协作
- 团队内协作
- push: 将本地库的代码推送到远程库
- clone: 将远程库的代码复制到本地库
- pull: 本地拉取远程库的代码
- 跨团队协作
B团队可以去fork A团队的远程库,形成自己的库,B团队修改后通过pull request提交,A团队进行审核后合并。
六、本地库与远程库的连接
- 创建远程仓库
GitHub上新建仓库:
- 创建远程库别名 git remote
git remote add 别名 远程库地址
- 查看远程库别名git remote -v
git remote -v
4.本地库代码推送到远程库
git push 远程库名 分支名
- 从远程库拉取代码到本地
git pull 远程库名 分支名
- 从远程库克隆代码到本地 默认会做三件事:
- 拉取代码
- 创建本地仓库
- 创建远程库别名为origin
查看远程库别名:
七、获取某一次commit的内容(包含之前的commit)
git checkout <commitId>
八、获取某一次commit的内容(不包含之前的commit)
git cherry-pick <commitId> <commitId>
使用场景:
如果将某一次(或几次)commit合并到功能分支A分支上,与其他commit已经混合在一起,但是A分支并不需要这些commit,想将其删除掉,并将这几个commit放到新的分支B里。
使用:
- 切换到A分支,使用
git log查看想删除的commit的id - 将代码回滚到不想要的commit的前一个版本
git reset --hard 前一个版本id
- 切换到新的分支B,将删掉的commit放到B分支里
git cherry-pick <commitId> <commitId>