GitGit常用命令详解-一篇文章详细讲解

Posted 亦蔚然

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitGit常用命令详解-一篇文章详细讲解相关的知识,希望对你有一定的参考价值。

目录

一、概述

1.1、Git工作一览图

1.2、Git滴历史背景

  • linux开发需要许多人协同,早前人们使用的是别人授权的版本控制系统BitKeeper,后来免费使用许可停止授权,Linux开发者Linus Torvalds自己开发了git。

1.3、Git可以干嘛呢

  • 用于完整记录项目代码变化:时间、人物、地点、‘经过’、‘结果’
  • 用于备份每一次的变化的代码版本:便于查询历史记录、复原变更、差异比较
  • 多人协作:分支合并、克隆提交

1.4、Git与SVN对比

  • SVN:C/S结构【集中式】【从中央服务器拿代码->自己开发后上传】
    • 中央服务器崩溃就全崩溃
    • 容错性差
  • Git:【分布式】版本控制
    • 本地仓库:commit提交到本地仓库
    • 远程仓库:push本地到远程服务器仓库
      pull拉取到本地仓库;Clone克隆将远程仓库直接复制到本地

1.5、常见代码托管服务

  • GitHub、码云、GitLab

二、环境搭建

2.1、windows环境:

目前可以使用gitbash工具,点击这,进gitbash官网下载对应版本(如:64位)

2.2、Mac环境

  • 直接安装xcode工具就自带gitbash;
  • 通过brew安装;
/**
 * Homebrew安装方式:默认在该路径/usr/local/Cellar/git/
 * 无Homebrew时,先安装Homebrew,有则跳过
 */
	/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
// 有brew时,通过命令安装git
	brew install git

2.3、查看Git版本信息

// 命令中查看版本信息:
	git --version

三、Git常用命令

3.1、环境配置

3.1.1、默认五大行

以下代码中:weiranyi需替换自己的用户名,@qq.com需替换为自己的邮箱

	git config --global user.name weiranyi  
	git config --global user.email @qq.com
	git config --global push.default simple
	git config --global core.quotepath false
	git config --global core.autocrlf input

3.1.2、可选配置

// 1.使用git commit的时候会弹出vs code编辑器,前提是安装了该软件并配置了环境
	git config --global core.editor “code --wait”
// 2.设置和取消git代理:
	git config --global http.proxy http://127.0.0.1:7890
	git config --global https.proxy https://127.0.0.1:7890
	git config --global --unset http.proxy
	git config --global --unset https.proxy

3.1.3、检查配置

// 配置完就可以使用该命令查询
	git config --global --list 

3.2、获取Git仓库

3.2.1、本地初始化

	git init

3.2.2、远程克隆

	git clone https://github.com/weiranyi/Project-Crawler-Elasticsearch.git

3.3、工作区/暂存区/版本库

3.3.1、流程图一览

3.3.2、名词解释

  • 版本库:.git隐藏目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除等操作Git都能跟踪到,有配置、日志、文件版本等信息
  • 暂存区(stage):.git隐藏目录里index文件(二进制文件)就是暂存区,暂时存放修改的文件
  • 工作目录:包含.git目录,主要存放开发代码

3.4、工作目录中文件的两种状态

3.4.1、工作目录中文件的两种状态

  • a.未追踪状态 /Untracked files
  • b.追踪状态 /tracked
    • i.未修改/unmodified
    • j.已修改/Modified
    • k.已暂存/Staged

3.4.2、查看命令

// 查看文件状态 
	 git status
// 简洁版
	 git status -s

3.5、本地仓库操作

3.5.1、将文件加入或取出暂存区

	git add index.html //【加入】对单个文件,如:index.html增加标记
	git reset index.html //【取出】这个是取消的方式
	git status //查看标记状态 
	git add .          // 对所有文件添加标记

3.5.2、将暂存区文件修改提交

// 将已经被标记的文件提交到仓库,版本1是描述内容
	git commit -m "版本1"  

/** 不加-m时
* 输入命令并回车后,进入一个编辑界面
* 编辑:输入i(英文字母),可进入插入模式
* 保存并推出:按esc,再输入wq保存并退出
*/
	git commit

3.5.3、删除文件

// 工作区的文件删除操作会默认放入暂存区,注:手动右键删除需要add一下
	git rm 删除文件名
// 只需提交一下
	git commit -m "从仓库删除"

3.5.4、将文件添加到忽略列表

// 1、第一步:通过.gitignore 设置不需要标记的文件
	vi .gitignore // 输入英文状态i键进行编辑
// 3、第二步:在.gitignore中添加忽略滴内容
	target/
   .idea/ 
// 按esc,输入:wq保存退出

3.5.5、查看日志记录

	git log

3.6、远程仓库操作

3.6.1、一览图

3.6.2、查看远程仓库

// 会列出远程服务器的简写,克隆会显示origin
	git remote
// 显示出远程的地址
	git remote -v
// 更加详细的信息
	git remote show origin

3.6.3、添加远程仓库

// 添加一个远程仓库地址
	git remote add<shortname><url> 
	git remote add origin https://***/***/***.git

3.6.4、克隆远程仓库

// 不仅仅是文件,历史和日志信息会一起下载下来
	git clone [url] 

3.6.5、移除远程仓库

#移除无效的远程仓库【移除本地的远程仓库记录,不会移除远程】
git remote rm myhomework

3.6.6、抓取/拉取远程仓库

// (1)、git fetch 
// git fetch:不会自动合并数据【抓取到本地,但没有合并到工作区,在隐藏库的object中以二进制存放】
	git fetch      
// 手动合并:以下命令执行后文件就已经到工作区啦
	git merge origin/master 

// (2)、git pull
//git pull:抓取远程最新数据同时自动进行合并(merge)
//            本地   远程
	git pull origin master

3.6.7、推送远程仓库

	git push origin master

3.7、分支

3.7.1、查看分支

// 列出本地分支
	git branch
// 列出所有仓库分支
	git branch -r
// 列出远程和本地滴
	git branch -a

3.7.2、创建分支

// 创建本地分支
	git branch bit1

3.7.3、切换分支

// 切换分支
	git checkout bit1

3.7.4、推送到远程仓库分支

git push origin bit1

3.7.5、合并分支

// 将分支bit1的内容合并到main分支,切换分支为main
	git checkout main
// 在master下进行以下操作
	git merge bit1

3.7.6、删除分支

// 删除本地分支,不会删除远程分支
	git branch -d bit2

// 删除远程分支
	git push origin -d b2

3.8、标签

3.8.1、列出已有的标签

// 列出已经有滴标签tag
	git tag
// 查看tag信息
	git show [tag]

3.8.2、创建新标签

// git tag[tagName]
	git tag v0.1
// 查看
	git show v0.1

3.8.3、将标签推送到远程仓库

git push origin tag v0.1

3.8.4、检出标签

// 新建一个分支,指向某个tag
git checkout -b [branch][tag]
git checkout -b bit2 v1.0

// 打标签tag2.0
git tag v2.0

// 推送远程
git push origin v2.0

3.8.5、删除标签

// 删除本地标签tag
	git tag -d[tag]
	git tag -d v0.1
// 删除远程tag
	git push origin :refs/tags/[tag]
	git push origin :refs/tags/v0.1

四、Git 的rebase与merge

4.1、相同点

都可以对代码进行合并操作

4.2、不同点

4.2.1、merge与rebase图解

下图:在某分支执行git merge/rebase master

4.2.2、merge

  • 将分支开始的所有commit合并在一起,并将这个合并的commit和main进行比较
  • 不修改原有commit内容,所有冲突用一个新commit来描述

4.2.3、rebase

  • 线性的历史结构
  • 每一个Commit都要处理自己的导致的冲突,所以每一个Commit内容其实都已经改变了

4.3、小结

  • 不要在共享分支上使用rebase
  • 本地和远端对应同一条分支,优先使用rebase,而不是merge

五、GitHub 实战

5.1、进入GitHub,创建仓库

5.2、设置GitHub仓库信息

按需对仓库进行设置,完成后点击创建

5.3、本地获取远程仓库

5.3.1、配置免密登录

  • a、本地生成ssh 密钥
// windows在GitBash操作,MAC进入终端就行
// 进入home目录
	cd ~
// weiranyi@github.com换你的邮箱(后面建议一路回车,不要输密码)
	ssh-keygen -t rsa -b 4096 -C "weiranyi@github.com"
// 进入.ssh目录
	cd .ssh
// 查看文件ls,.pub结尾代表公钥匙(id_rsa,id_rsa.pub)
	ls
	id_rsa		id_rsa.pub	known_hosts
// 输出公钥内容,将命令行反馈一大串内容复制
	 cat id_rsa.pub
	 
  • b、GitHub配置ssh 密钥
    • i、登录 GitHub,点击用户头像→SettingsSSHandGPG keysNEW SSH keys
    • 将a步骤中cat命令输出的内容复制到key框框,title随意

      至此:a、b步骤操作完成后,ssh也就配置好啦

5.3.2、通过SSH方式获取

  • 含Quick setup的初始仓库

  • 常见通过SSH获取自己的仓库,code按钮,复制SSH连接

  • 常见通过https获取自己和他人的仓库:code按钮,复制https链接

5.3.2、克隆远程仓库

// git clone https链接(SSH获取自己的仓库时,推荐!!!)
	git clone git@github.com:weiranyi/test.git

// 克隆他人仓库使用git clone https链接
	git clone https://github.com/weiranyi/test.git

5.3.3、将本地内容提交到本地仓库

	cd test
	echo "# test" >> README.md
	git add README.md
	git commit -m "添加README文件"

5.3.4、将本地仓库内容提交远程仓库

	git branch -M main            
	git push -u origin main

以上是关于GitGit常用命令详解-一篇文章详细讲解的主要内容,如果未能解决你的问题,请参考以下文章

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit工具常用命令

Gitgit常用命令集合

Gitgit常用命令集合

Gitgit常用命令集合

Gitgit常用命令集合