前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大西瓜快速带你上手Git

大西瓜快速带你上手Git

作者头像
东边的大西瓜
发布2022-05-05 12:28:40
3660
发布2022-05-05 12:28:40
举报
文章被收录于专栏:吃着西瓜学Java

Git命令大全

Git介绍以及工作流程

属性介绍

  • 工作区: 就是你在电脑里能看到的目录。
  • 暂存区: 英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。(add)
  • 版本库: 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。(push)

工作流程

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域(.git/index)。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录(.git)。

用户命令

命令

说明

git config user.name

查看用户名

git config user.email

查看地址

git config --global user.name "your name"

修改用户名

git config --global user.name "your email"

修改地址

创建仓库命令

下表列出了 git 创建仓库的命令:

命令

说明

git init

初始化仓库,如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

git clone

拷贝一份远程仓库,也就是下载一个项目。

重要的分支命令详解:

“这里拿例子来进行解释,因为Github经常登不上,所以我们这里使用Gitee作为演示例子,首先将自己电脑的公匙部署绑定在Gitee上面,再在Gitee和本地上面都新建仓库,因为我们的git命令在本地工作区使用才有作用。 ”

如下图所示:根据它所提示的步骤往下走,我们先配置本地的用户名和一些信息,用于标识提交者,再进行添加、提交等操作。

WeChat9fa439f4566e3d727c2838e6069c1775

相关命令解释以及拓展:

  1. git remote add < aliasname > < url >: 关联一个远程库,即映射远程仓库到本地仓库,aliasname为本地仓库对远程仓库起的别名,可以自己起,通常为original;url为远程仓库的url,具体的话就是远程仓库的ssh;
  2. git remote -v: 查看已映射的远程库的信息
  3. git remote rm < aliasname >: 删除某个远程库映射
  4. git push -u <远程仓库别名> <本地分支名>: 用于指定git push命令中本地分支所对应的上游分支,使用了短选项-u,所以它使得当前分支远程跟踪了远程分支,下次再Push时可以直接git push
  5. git push --set-upstream <远程仓库别名> <本地分支名>: 等价于上面,只是将短选项-u,替换为了长选项--set-upstream
  6. git push <远程仓库名> <本地分支名>:<远程分支名>: 推送本地分支名到指定的远程分支名,上面的两个推送命令只是默认为本地分支名了,偷个小懒,这个也可以省略,不过该命令没有追踪远程分支,所以以后也都要使用完整命令,而不能直接git push

提交仓库步骤

  1. git pull: 拉取远程仓库最新代码,并同本地分支合并,等价于git fetch + git merge
  2. git add: 添加文件到暂缓区, .代表当前目录
  3. git commit: 提交文件到本地版本库存, -m “原因”
  4. git push: 提交到远程分支并合并,下文有详细介绍

“小tip:在idea中可通过Version Control来查看本次提交所做的修改 ,蓝色代表修改文件,绿色代表新增文件,灰色代表删除文件 ”

merge 和 rebase的对比

“merge和rebase都是我们常用的解决分支冲突的命令,它们俩个的基本原理其实都逃不开寻找最近的公共祖先,区别就是合并分支的具体操作了。 ”

“git merge 会产生一个新的合并记录,可以理解为合并两个分支并生成一个新的提交,可以让人知道什么时候有合并。而rebase会合并分支为一条,因此又被称作变基,通常是分支变基到master上。 ”

上面概念有点绕?我们来根据例子来看一下,这里有一个master和一个dev分支,dev分支在节点3的时候创建的:

先来看一下当执行merge命令的时候,如下图所示,合并两个分支的最新提交为一个新的提交(Merge branch 'dev'):

当执行rebase命令的时候,如下图所示,合并两个分支为一个分支,而且以master分支为基,也就是说dev分支的最新提交变基为master的最新提交之上:

再来对比一下它们两个的特点:

  • merge命令,保留所有的commit的历史时间,每个分支上都会接着保留自己的代码记录,master(主)分支上只会保留merge的历史记录,但是如果某分支一旦被删除,我们就只能看到在master分支上那个合并提交的merge记录了,即图上“merge branch ‘dev’ ”,而且该记录不能去修改,因为这个merge记录是合并后的记录不仅有你自己的提交也有分支上面别人的提交;
  • rebase命令,前面提到过又被称作变基操作,使用这个命令后,你的最新提交会放到最前面,即从分叉那个提交节点开始,你的提交会被变基到要被合并的分支,你的提交在前,分支在后。这样的合并方式的好处就是看起来很简洁,一条直线,但是缺点就是提交的时间线会被打断,rebase还可以用来合并多次提交为一次。上面rebase命令的例子可能有些特殊了,我们来看一个交叉提交的例子:

上面例子,从分支点3开始,master上面提交了5、7,dev上面提交了4、6,这里我们再使用rebase,合并一下,如下图所示,我们会发现dev的4、6同样会出现在master的5、7上面:

网上对这两个操作的看法和使用也都是公说公有理,婆说婆有理,其实按照它们的特点,按照需求合理的去选择这两个操作就行了。

提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

Git命令必须在Git仓库目录内执行(git init除外),在仓库目录外执行是没有意义的。

下表列出了有关创建与提交你的项目的快照的命令:

命令

说明

git add

添加文件到暂缓区(.git/index)

git commit

提交暂存区文件到本地仓库。先add再commit,一次提交多个add。

git status

查看仓库当前的状态,显示有变更的文件。

git diff

比较文件的不同,即暂存区和工作区的差异。

git reset

回退版本。

git rm

删除工作区文件。

git mv

移动或重命名工作区文件。

cat

将文件内容打印显示

提交日志

命令

说明

git log

查看历史提交记录

git blame <file>

以列表形式查看指定文件的历史修改记录

远程操作

命令

说明

git remote

远程仓库操作

git fetch

从远程获取代码库

git pull

下载远程代码并合并

git push

上传远程代码并合并

分支命令

命令

说明

git branch

列出本地所有的远程分支

git branch -r

列出所有的远程分支

git branch -a

列出所有的远程和本地分支

git branch [branch-name]

新建一个分支,但依然停留在当前分支

git branch --track [branch] [remote-branch]

新建一个分支,与指定的远程分支建立追踪关系

git checkout -b [branch]

新建一个分支,并切换到该分支

git checkout [branch-name]

切换到指定分支,并更新工作区

git checkout -

切换到上一个分支

git branch -d [branch-name]

删除分支

git branch --set -upstream [branch] [remote-branch]

建立追踪关系,在现有分支和指定的远程分支之间

git merge [branch]

合并指定分支到当前分支

git rebase<branch>

衍合指定分支到当前分支

git log --graph --pretty=oneline --abbrev-commit

查看提交状态日志,也可看分支情况

continue

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吃着西瓜学Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Git命令大全
    • Git介绍以及工作流程
      • 属性介绍
      • 工作流程
    • 用户命令
      • 创建仓库命令
    • 重要的分支命令详解:
      • 相关命令解释以及拓展:
    • 提交仓库步骤
      • merge 和 rebase的对比
        • 提交与修改
          • 提交日志
          • 远程操作
          • 分支命令
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档