git学习笔记
git学习笔记。学习视频:黑马程序员git教程
一.概述
1.版本控制器的方式
- 集中式版本控制工具:版本库集中存放在中央服务器,team里每个人work时从中央服务器下载代码,必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库。(例:SVN)
- 分布式版本控制工具:没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作时,不需要联网。多人协作只需要各自的修改推送给对方,就能互相看到对方的修改。(git)
2.git工作流程
- clone(克隆): 从远程仓库中克隆代码到本地仓库。
- checkout (检出):从本地仓库中检出一个仓库分支然后进行修订。
- add(添加): 在提交前先将代码提交到暂存区。
- commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本。
- fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
- pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge。
- push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
二.git常用命令
1.获取本地仓库
- 创建空目录作为本地仓库。
- git init创建本地仓库,创建完成后文件夹下可看到隐藏的git目录。
2.基础操作指令
git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行git 的命令而发生变化。
- git add 工作区->暂存区(git add .所有文件添加到暂存区)。
- git commit 暂存区->本地仓库(-m进行注释)。
- git status 查看状态。
- git log 查看提交日志。
- —all 显示所有分支。
- —pretty=oneline 显示一行信息。
- —abbrev-commit 使得输出的commited更简短。
- —graph 以图的形式显示。
- git reset —hard commitID 版本回退。
- git reflog 查看已经删除的记录。
- 添加文件至忽略列表:创建.gitignore文件,将不需要仓库管理的文件名保存到该文件中。
3.git分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离 开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
- git branch 查看分支。
- git branch 分支名 创建新分支。
- git checkout 分支名 切换分支 (-b 创建并切换到新分支)。
- git merge 分支名称 分支合并。
- git brach -d b1删除分支时,做各种检查;-D则不做任何检查,强制删除。
- 解决冲突:
- 处理文件中冲突的地方。
- . 将解决完冲突的文件加入暂存区(add),提交到仓库(commit)。
- 开发中分支使用原则与流程
- master (生产) 分支。
- develop(开发)分支:从master创建的分支,一般作为开发部门的主要开发分支。
- feature/xxxx分支:从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。
- hotfix/xxxx分支:从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、 develop分支。
三.git远程仓库
1.配置公钥
- 生产公钥:ssh-keygen -t rsa
- 获取公钥:cat ~/.ssh/id_rsa.pub
- 验证是否配置成功:ssh -T url
2.远程仓库操作
- 添加远程仓库:git remote add <远端名称> <仓库路径>,远端名称默认为origin
- 查看远程仓库:git remote
- 推送到远程仓库:git push [-f] [—set-upstream] [远端名称] [本地分支名][:远端分支名] 。例如:git push origin master:master
- 远程分支名和本地分支名相同可只写本地分支名。
- push 失败时,先尝试git pull —rebase origin master,再重新push。
- -f 表示强制覆盖。
- —set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。
- 如果当前分支已经和远端分支关联,则可以省略分支名和远端名。
- 从远程仓库克隆:git clone <仓库路径> [本地目录],本地目录可以省略。
- 从远程仓库中抓取:git fetch [remote name] [branch name]
- 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并。
- 如果不指定远端名称和分支名,则抓取所有分支。
- 拉取:git pull [remote name] [branch name]
- 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge 。
- 如果不指定远端名称和分支名,则抓取所有并更新当前分支。
- 解决合并冲突:拉取到本地解决冲突后,再推送到远程仓库。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 橙的笔记本!