Git 学习整理

Git 学习整理

为什么用 CVS 和 Git ?

cvs 和 git 作为版本管理工具,在软件的整个流程中起到管理作用。记录每一次提交操作,方便日后对问题进行回溯。属于SCM的一种。

补充:SCM(软件配置管理)是一种标识、组织和控制修改的技术。它应用于整个软件生存期。软件配置管理是一组追踪和控制活动,它们开始于软件开发项目开始之时,结束于软件被淘汰之时。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。

Git 和 SVN的区别:集中式 和 分布式

svn 属于集中式版本管理,有一个独立的服务器管理源码,每次checkout 或者 commit 都是对服务器的操作。通常操作:checkout、add、commit。

git 属于分布式管理,第一次checkout从服务器下载源码,在本地维护一个版本库包括所有的分支,之后的操作不需要联网,例如:切换分支、commit。只有pull、push才需要联网,对于server来说,有多个copy,每个人操作的都是自己的代码库,看起来有多个代码库。通常操作:checkout、add、commit、push、pull。

Git核心概念:

分支和合并:

  • git鼓励您拥有多个彼此完全独立的本地分支,分支的创建、合并、删除仅需要几秒钟。方便创建新分支做功能测试。

小而快速:

  • git的所有操作都在本地执行(只有push需要服务器),commit的操作不需要等待。
  • 基于Linux内核构建,使用C语言实现,能够有效的处理大型存储数据库。

分布式:

  • checkout操作对整个存储库克隆。
  • 每个用户都有一个主服务器的完整备份。
  • 支持多种工作路程:集中式(svn)、integration(github)、独裁和中尉

数据保证:

  • git使用的数据模型确保项目的每一位的加密完整性,每个文件和提交都被校验和,在检出时通过校验和检索。

缓存区(staging area):

  • git具有“暂存区”,可以在完成提交之前对提交进行格式化和检查,add 操作

4个空间和5个状态:

空间:工作区、暂存区、本地仓库、远程仓库

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/df585401-6e2c-492b-93ba-6f974fdc5238/2021-02-18_10.15.11.png

代码提交和同步流程:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/128d45db-2ac8-41c7-93f1-5d5e8221cfe9/2021-02-18_10.22.02.png

五种状态和更改操作:

**状态:**未修改、已修改、已暂存、已提交、已推送

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/145707be-f074-4e66-99ff-9aea88178baa/2021-02-18_10.22.45.png

基本操作:

git init: 初始化一个git本地仓库
git add xxx : 添加文件到git管理
git commit -m "xxx" : 提交代码
git branch :查看本地分支
git branch xxx:创建新分支
git branch -d ${url} : 删除本地分支
git checkout xxx:检出,切换分支,从A分支上拉取代码,到本地的A分支上
git pull xxx:拉取某个分支的代码,一般用在分支合并时,将B分支的代码拉取到本地,与本地的A分支的代码合并,解决冲突,然后推送到A分支上
git pull = git fetch + git merge

git push xxx:推送代码到某个分支,一般推送到当前的分支上,也可以推送到其他的仓库,操作服务器
git merge(合并):在pull其他分支代码的时候使用。场景:从其他分支拉取代码,当拉取的代码有冲突时(拉取的分支修改了某个文件,本地的代码也修改了该文件)需要解决冲突问题。
git cherry-pick(定制的merge):将其他分支的commit记录合并到当前的分支。
git remote -v : 查看远程仓库
git clone ${url}: 克隆远程仓库

暂存区(staging)恢复:

从暂存区恢复:从stage拉取
git checkout a.txt
从本地仓库恢复:(HEAD 指针,表示最新的commit)
获取本地仓库的最后一次提交commit覆盖工作区
git reset —head HEAD
恢复指定文件:
git checkout HEAD a.txt

暂存工作区的状态:

git stash : 保存
git stash pop:恢复
git stash list : 查看保存的列表
git stash apply : 恢复某个记录
git stash drop : 删除某个保存记录

标签:跟 commit 性质一样,区别在于 id 不同,tag名称更加易读

git tag ${tagName}
查看所有标签:git tag
对某次commit打标签:git tag ${tagName} ${commit_id}
查看标签详细信息:git show ${tagName}
删除标签: git tag -d ${tagName}
本地标签推送到远程仓库:git push origin ${tagName}
推送所有标签:git push origin —tags
删除远程标签:git ${tagName}

删除:

从工作区和版本控制中删除:
git rm -f a.txt
仅从版本控制中删除:
git rm -f —cached a.txt

配置本仓库账户:

git config —global user.name "xxx"
git config — global user.email xxx

查看配置:

git config -l

continue…

0 0 vote
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments