git及git使用与常见git面试题

git及git使用与常见git面试题gitgit使用git命令git面试题

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Git

什么是Git?

  • Git是一款分布式源代码管理工具(版本控制工具)
    • 我们写的代码需要使用Git进行管理。
  • 源代码有必要管理起吗?
  • 1.0
  • 2.0 //
  • svn,vss,vcs… git
  • 有必要,因为人工的去处理不同的版本,做相应备份会很麻烦。
  • Git是linux之父当年为了维护linux—linus之前也是手动维护合并把文件发给Linus
  • linus自己写了一个版本管理的工具(Git)

特点:

Git易于学习, 占用空间小,性能快如闪电。它优于 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具,
具有便宜的本地分支、方便的暂存区和 多个工作流等功能。

git 与 svn的区别?

svn 集中式代码版本控制管理工具
git 分布式代码版本控制管理工具 git 最流行

集中存放在服务器端 传统 url地址: 账号名:密码
svn集中式的 如果出现svn服务器出现故障 每个用户都不能访问服务器 代码无法同步 git就没有这种问题

git与github、码云、gitlab的关系

github、码云、gitlab都是在线的代码托管平台
他们都支持git管理代码的方式

github.com: 全球最大免费代码托管平台 码云: 国内免费代码托管平台 gitlab:企业项目开发使用广泛

Git安装

初始化Git仓储/(仓库)

  • 这个仓库会存放,git对我们项目代码进行备份的文件
  • 在项目目录右键打开 git bash
  • 命令: git init

自报家门

  • 就是在git中设置当前使用的用户是谁
  • 每一次备份都会把当前备份者的信息存储起来
  • 命令:
    • 配置用户名:git config --global user.name "xiaoming"
    • 配置邮箱: git config --global user.email "xm@sina.com"

把大象放到冰箱要几步

  1. 打开冰箱门
  2. 放大象
  3. 关上冰箱

把代码存储到.git仓储中

  • 1.把代码放到仓储的门口
    • git add ./readme.md 所指定的文件放到大门口
    • git add ./ 把所有的修改的文件添加到大门口
  • 2.把仓储门口的代码放到里面的房间中去
    • git commit -m "这是对这次添加的东西的说明"

可以一次性把我们修改的代码放到房间里(版本库)

  • git commit --all -m "一些说明"
    • –all 表示是把所有修改的文件提交到版本库

查看当前的状态

  • 可以用来查看当前代码有没有被放到仓储中去
  • 命令: git status

git中的忽略文件

  • .gitignore,在这个文件中可以设置要被忽略的文件或者目录。
  • 被忽略的文件不会被提交仓储里去.
  • 在.gitignore中可以书写要被忽略的文件的路径,以/开头,
    一行写一个路径,这些路径所对应的文件都会被忽略,
    不会被提交到仓储中
    • 写法
      • /.idea 会忽略.idea文件
      • /js 会忽略js目录里的所有文件
      • /js/*.js 会忽略js目录下所有js文件

git秘钥生成: ssh方式 公钥私钥方式

注册秘钥 ssh-keygen -t rsa -C ‘你的邮箱@xxx.com’ 依次回车

img

码云的SSH公钥设置

登录进入Gitee网站,找到找到安全设置-SSH公钥。

img

进入本地目录如:C:\Users\XXX.ssh(id_ rsa.pub),粘贴到SSH公钥处。

img

img

验证成功 ssh -T git@gitee.com

img

成功返回: Hi xielong! You’ve successfully authenticated, but GITEE.COM does not provide shell access.

码云创建仓库 与本地仓库与远程仓库的推送

拥有ssh地址

git@gitee.com:xxxxx/class_2104.git

git remote add origin git@gitee.com:xielong196/ok.git 定向仓库地址

git remote -v 查看当前定向的分支

git push -u origin master 本地仓库推送至远程仓库
注意:可能会有报错
1> 定向地址错误
git remote rm origin
git remote add origin git@gitee.com:xielong196/class_2012.git
git push -u origin master -u 表示下次不需要写master(git会把当前分支与远程的指定的分支进行关联) 下次直接写 git push

2> 先把远程仓库内容同步到本地仓库, 在推送
git pull origin master 简写方式
git push origin master

故障及解决:
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to ‘git@github.com:thewar3/demo.git’
hint: Updates were rejected because the tip of your current branch is behind

解决方案
1、git pull origin master –allow-unrelated-histories //把远程仓库和本地同步,消除差异

2、重新add和commit相应文件

3、git push origin master

4、此时就能够上传成功了

git克隆

git clone git@github.com:thewar3/react-sell.git

git clone http://38.106.80.45:8070/zhangh/yb-admin.git

git fetch 与 git pull区别

简单来说: git pull=git fetch+git merge 不建议用git pull

实际上:git pull看起来像git fetch+get merge,但是根据commit ID来看的话,他们实际的实现原理是不一样:

git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法。当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。

查看日志

  • git log 查看历史提交的日志
  • git log --oneline 可以看到简洁版的日志

回退到指定的版本

  • git reset --hard Head~0

    • 表示回退到上一次代码提交时的状态
  • git reset --hard Head~1

    • 表示回退到上上次代码提交时的状态
  • git reset --hard [版本号]

    • 可以通过版本号精确的回退到某一次提交时的状态
  • git reflog

    • 可以看到每一次切换版本的记录:可以看到所有提交的版本号

分支

  • 默认是有一个主分支master

创建分支

  • git branch dev
    • 创建了一个dev分支
    • 在刚创建时dev分支里的东西和master分支里的东西是一样的

切换分支

  • git checkout dev
    • 切换到指定的分支,这里的切换到名为dev的分支
      git branch 可以查看当前有哪些分支

两个命令的简写

​ git checkout –b dev

删除分支

​ git branch –d dev

合并分支

  • git merge dev

    • 合并分支内容,把当前分支与指定的分支(dev),进行合并
    • 当前分支指的是git branch命令输出的前面有*号的分支
  • git rebase dev

    git rebase 保留主要commit 建议用rebase
    git merge 保留所有的commit

  • 合并时如果有冲突,需要手动去处理,处理后还需要再提交一次.

    撤销分支的合并:

    1:git reset –hard 版本号
    2:git revert 版本号 -m 1/2

GitHub

  • https://github.com
  • 不是git,只是一个网站–全球最大的代码托管平台
  • 只不过这个网站支持git方式管理代码

提交代码到github(当作git服务器来用)

  • git push [地址] master
  • 示例: git push https://github.com/huoqishi/test112.git master master
  • 会把当前分支的内容上传到远程的master分支上
  • git pull [地址] master
  • 示例: git pull https://github.com/huoqishi/test112.git master
  • 会把远程分支的数据得到:(注意本地-要初始一个仓储!)
  • git clone [地址]
  • 会得到远程仓储相同的数据,如果多次执行会覆盖本地内容。

团队开发协作中碰到的问题: 操作文件冲突(版本冲突)

版本冲突问题解决:
1.先git pull 下拉远程仓库代码
2.然后再代码中找到发生冲突的代码
3.开发人员协商使用哪些代码
4.然后再git add . git commit -m “描述内容”
5.git push 推送代码至远程仓库。

课后完成:git 小乌龟安装及使用

会得到远程仓储相同的数据,如果多次执行会覆盖本地内容。

团队开发协作中碰到的问题: 操作文件冲突(版本冲突)

版本冲突问题解决:
1.先git pull 下拉远程仓库代码
2.然后再代码中找到发生冲突的代码
3.开发人员协商使用哪些代码
4.然后再git add . git commit -m “描述内容”
5.git push 推送代码至远程仓库。

课后完成:git 小乌龟安装及使用

​ 参考:https://www.cnblogs.com/xuanwotianming153/p/8504762.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234663.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ubuntu安装wget命令_linux bash命令

    ubuntu安装wget命令_linux bash命令我们先安装linux系统比如centos7.1里面有的就没有wget下载工具。wget这个命令就不可以使用。我们使用yum-yinstallwgetyuminstallperl会出现:[root@localhost~]#yum-yinstallwgetLoadedplugins:fastestmirrorRepodataisoverweeksold.Instal…

    2022年10月16日
  • 飞机订票系统(C语言)

    飞机订票系统(C语言)用C语言解决飞机订票系统***一、问题描述:根据以下功能说明,设计航班信息、客户信息、订票信息的存储结构,设计程序完成相应功能。*录入:*可以录入航班情况(数据可以存储在一个数据文件中,数据个数不能少于8个、自行设计数据构成);客户信息(姓名,证件号,电话等);订票信息(订单要有编号,其余数据自行设计)。****查询:****可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;****订票:**

  • Python学习之路【第一篇】-Python简介和基础入门

    Python学习之路【第一篇】-Python简介和基础入门1.Python简介1.1Python是什么相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一。从性质上来讲它和我们熟知的C、java、php等没有什么本质的区别,也是

  • pytest的assert_java单元测试断言

    pytest的assert_java单元测试断言前言断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试failed

  • 微信开放平台实现扫码登录(java)

    微信开放平台实现扫码登录(java)微信第三方登录准备阶段微信官方文档准备工作在进行第三方授权登录之前,需要在微信开放平台注册开发者账号,拿到相应的AppId和AppSecret以及redirect_uri,即可进行授权接入流程授权流程说明整体流程分:1.第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;2.通过code参数加上AppID和AppSecret等,通过API换取access_token;3.通过access_token进行接口调

  • NTP协议实现_ntp时间同步端口

    NTP协议实现_ntp时间同步端口本文出处:http://www.eefocus.com/html/10-04/94667s.shtml10.4 实验内容——NTP协议实现1.实验目的    通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性

    2022年10月12日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号