git基本理解和常用

Git vs SVN

  • Git是分布式的,SVN是集中式的

  • Git复杂概念多,SVN简单易上手

  • Git分支廉价,SVN分支昂贵

git命令相对多一些, 所以功能也意味着多一些, 用惯了git的话, 一定回不去SVN!

git安装略! 友友们可以在网上找到很多教程!

git基本概念:

  • 版本库

当你一个项目到本地或创建一个 git 项目,项目目录下会有一个隐藏的 .git 子目录。这个目录是 git 用来跟踪管理版本库的,千万不要手动修改。

  • 哈希值

用来发现被git管理的文件状态!

  • 文件状态

已修改(modified) - 已修改表示修改了文件,但还没保存到数据库中。
已暂存(staged) - 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交(committed) - 已提交表示数据已经安全的保存在本地数据库中。

  • 工作区域
  • 工作区(working) - 当你 git clone 一个项目到本地,相当于在本地克隆了项目的一个副本。工作区是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  • 暂存区(staging)- 暂存区是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作 `‘索引’',不过一般说法还是叫暂存区。
  • 本地仓库(local) - 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 本地仓库。
  • 远程仓库(remote) - 以上几个工作区都是在本地。为了让别人可以看到你的修改,你需要将你的更新推送到远程仓库。同理,如果你想同步别人的修改,你需要从远程仓库拉取更新。

image-20220414092218119

image-20220414090628955

  • 分支(branch):

分支是为了将修改记录的整个流程分开存储,让分开的分支不受其它分支的影响,所以在同一个数据库里可以同时进行多个不同的修改

主分支(Master)前面提到过 master 是 Git 为我们自动创建的第一个分支,也叫主分支,其它分支开发完成后都要合并到 master

  • 标签(Tag)

标签是用于标记特定的点或提交的历史,通常会用来标记发布版本的名称或版本号(如:publish/0.0.1),虽然标签看起来有点像分支,但打上标签的提交是固定的,不能随意的改动,参见

  • HEAD

HEAD 指向的就是当前分支的最新提交图片

git的工作流程一般是这样的:

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件放入暂存区域;

3、将暂存区域的文件提交到git仓库。

Git 的命令实在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟练掌握

掌握rebase和merge的区别,fetch和pull的区别等

常用git操作

git merge --no-ff和git merge之间不同的区别详解戳这里

image-20220414092642649

常用命令:

# 克隆一个已经创建的远端仓库
# 通过 SSH
$ git clone ssh://user@domain.com/repo.git
#通过 HTTP
$ git clone http://domain.com/user/repo.git

# 新建一个本地仓库
$ git init
# 工作区 -> 暂存区
$ git add <file/dir>

# 暂存区 -> 本地仓库
$ git commit -m "some info"

# 本地仓库 -> 远程仓库
$ git push origin master  # 本地master分支推送到远程origin仓库 

# 工作区 <- 暂存区
$ git checkout -- <file>  # 暂存区文件内容覆盖工作区文件内容

# 暂存区 <- 本地仓库
$ git reset HEAD <file>   # 本地仓库文件内容覆盖暂存区文件内容

# 本地仓库 <- 远程仓库
$ git clone <git_url>        # 克隆远程仓库
$ git fetch upstream master  # 拉取远程代码到本地但不应用在当前分支
$ git pull upstream master   # 拉取远程代码到本地但应用在当前分支
$ git pull --rebase upstream master  # 如果平时使用rebase合并代码则加上

# 工作区 <- 本地仓库
$ git reset <commitid>          # 本地仓库覆盖到工作区(保存回退文件内容修改)
$ git reset --mixed <commitid>  # 本地仓库覆盖到工作区(保存回退文件内容修改)
$ git reset --soft <commitid>   # 本地仓库覆盖到工作区(保留修改并加到暂存区)
$ git reset --hard <commitid>   # 本地仓库覆盖到工作区(不保留修改直接删除掉)


# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提 交!

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建 的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上 来。

idea中的git基本使用:

在idea中基本使用:

情况一(从远端clone代码):
  1. 第一步从远程clone代码:

image-20220414104030139

  1. 然后就可以常用操作了

image-20220414104255648

  1. 如果想要本地新建分支, 就直接new一个分支就行

image-20220414104430310

命名遵循命名规范就行

image-20220414104554664

单击相关分支, 可以进行更多操作!

  1. 下拉代码时会出现:

image-20220414084509856

一般就选第一个就行了!

Merge还是Rebase戳这里

在提交到本地仓库后, 就不要下拉rebase代码了,

图文详解 Git 工作原理

如果想要更详细的命令, 就可以看这个三年 Git 使用心得 & 常见问题整理

对开发命令详解全网最全的 Git 分支开发规范手册

Git 教程|菜鸟教程

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴趣使然的小小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值