ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-07-04

2021-07-05 00:00:55  阅读:172  来源: 互联网

标签:Git git 07 04 仓库 暂存区 2021 远程 分支


GIT开发手册

GIT开发手册(2021 06 30)

一、简介

  1. Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  2. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

  3. Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

二、 特点

  1. Git 是分布式的,SVN 不是**:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。**
  2. **Git 把内容按元数据方式存储,而 SVN 是按文件:**所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
  3. **Git 分支和 SVN 的分支不同:**分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
  4. **Git 没有一个全局的版本号,而 SVN 有:**目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
  5. **Git 的内容完整性要优于 SVN:**Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

三、 安装与配置

官网下载安装

四、 快速使用

<了解基础操作>

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

本章将对有关创建与提交你的项目快照的命令作介绍。

Git 常用的是以下 6 个命令:git clonegit pushgit addgit commitgit checkoutgit pull,后面我们会详细介绍。

在这里插入图片描述

说明:

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

1. 调出控制台界面

第一种方式:

在随意一个文件夹中右键>Git Bash here

注意:需要有右键菜单的支持

第二种方式:

在安装目录下点击 git-bash.exe 启动

2. 创建本地仓库

第一种方式:

新建一个文件夹,然后在文件夹内,调出控制台页面输入

git init

会发现多出一个.git的文件夹

注意:需要打开隐藏文件夹的显示

第二种方式:

使用我们指定目录作为Git仓库。

git init 目录路径名

<了解工作流>

你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

在这里插入图片描述

  • **工作区:**就是你在电脑里能看到的目录。
  • **暂存区:**英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • **版本库:**工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rPEaoYk2-1625412533599)(ipic/1352126739_7909.jpg)]
  • 图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树。
  • 图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • 当执行 **git rm --cached ** 命令时,会直接从暂存区删除文件,工作区则不做出改变。
  • 当执行 git checkout . 或者 **git checkout – ** 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
  • 当执行 git checkout HEAD . 或者 **git checkout HEAD ** 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

1. 添加新文件到本地仓库

第一步

在本地仓库创建新文件(工作区新建文件)

touch 文件名

或者直接在文件夹中进行新建文件操作

第二步

使用add命令将文件添加到缓冲区(工作区添加到缓冲区)

单个文件添加方式:
git add 文件名
将工作区内的所有文件进行添加
git add *

第三步

使用commit命令将缓冲区的文件最终提交到本地仓库(缓冲区提交到HEAD区)

git commit -m "提交信息"

注意:如果您不使用-m,会出现编辑器来让你写自己的注释信息。

2. 从本地仓库删除文件

第一步

使用git命令进行删除

git rm <文件名>

注意:如果使用的是git命令,则已经在缓冲区中不用进行add添加

注意:如果删除的是文件夹则添加-r

第二步

将删除提交到HEAD区

git commit -m "提交信息"

3. 在本地仓库修改文件

在window进行编辑修改文件

add 和 commit

4. 移动或重命名工作区文件

git mv [file] [newfile]

5. 检测当前文件的状态

查看当前文件的状态,是否在工作区或缓冲区还是已经提交(经常使用)

 git status

注意:红色表示在工作区中未被提交的到暂存区

​ 绿色表示在暂存区中未被提交到HEAD区

注意:需要开启彩色的git输出(默认已经打开无需在意)

6. 查看提交日志

git log

注意:可以查看历史的版本记录

注意: 如果嫌弃输出的信息杂乱无章,那么加上 --pretty=oneline 参数试试吧!

7. 查看操作日志

git reflog

定义:查看命令操作的历史

8. 本地仓库回退

1、restore 重置
如果你修改了代码,但是并未执行 git add 操作,可直接执行:

git restore .
. 表示所有文件,如果想重置个别文件,指定文件路径即可
git restore <文件>...

注意:如果你已经执行了 git add 操作,此时代码已保存至暂存区,需要先取消暂存区变更:

git restore --staged .

或者

git reset . 
采用当前的版本仓库对暂存区进行覆盖

然后,再执行 git pull 拉取远程代码同步即可。

2、reset 回退
reset 比较暴力,相当于 可适用于 代码在工作区、暂存区、仓库区等任何场景

git fetch --all
git reset --hard origin/master
git pull   // 这一步为了同步远程代码,不需要的话可不执行

git fetch 指令是下载远程仓库最新内容,不做合并。
git reset 指令把HEAD指向master最新版本。
reset --hard:重置后不保留暂存区和工作区
reset --soft:保留工作区,并把重置 HEAD 所带来的新的差异放进暂存区(此时代码的变更状态相当于执行完 git add命令)
reset --mixed:reset的默认参数,保留工作目录,并重置暂存区(此时代码的变更状态相当于执行 git add命令之前)

或者

获取版本ID

git log --pretty=oneline

回退到指定ID

git reset --hard id

如果需要操作失误,则获取操作ID

git reflog

查找到你要的 操作id,使用上文说的 git reset --hard id。又回退到当初一模一样的版本

3、stash 暂存(推荐)
我比较喜欢的方法,是用stash,暂存代码再同步。

首先,将所有代码添加至暂存区:

git add .

然后,将代码临时保存:

git stash

此时代码会重置到修改前的状态,可以同步远程仓库区,完事儿。

git pull

同步后,如果还想继续修改原来的代码,可将临时代码恢复至工作区:

git stash pop

查看储藏起来的状态

git stash list

可以用来应用储藏的状态。比如 git stash apply 0 就会应用储藏id为0 的中间状态。

git stash apply id

<了解分支>

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

在这里插入图片描述

1. 查看当前分支

git branch

注意: 新建的分支虽然是默认master,但如果里面没有文件的话是不会被显示的。

注意:查看分支,有星号它代表现在检出的那一个分支

2. 新建分支

git branch 分支名

注意:新建分支内容为空

注意:master分支是默认创建的,不用重复创建

3. 重命名分支

git branch -m 原分支名 新分支名

4. 切换分支

git checkout 分支名

注意:不同分支间内容是不互通的,需要切换进行操作

5. 合并分支

首先到你想要合并到的分支

git checkout master

然后命令你想要被合并的分支

git merge <被合并分支名>

注意:如果合并出现冲突,这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:

git add <文件名>

在合并改动之前,你可以使用如下命令预览差异:

git diff <source_branch> <target_branch>

6. 删除分支

git branch -d 分支名

注意:删除时需要切换到另外一个分支才能删除本分支

7. 查看每一个分支的最后一次提交

git branch -v 

<了解远程仓库>

Git 并不像 SVN 那样有个中心服务器。

目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。

在这里插入图片描述

0. 获取远程仓库的url

在这里插入图片描述

1. 检出仓库(下载远程仓库)

git clone 远程仓库的url

2. 设置远程仓库

git remote add 别名通用为origin 远程仓库url

注意:如果使用过检出仓库,则会默认设置一个origin并且url为你检出仓库的地址

3. 查看远程仓库

git remote -v

4. 修改远程仓库名

git remote rename 原仓库名 新仓库名

5. 删除远程仓库

git remote rm 仓库名

6. 更新本地仓库(从远程仓库获取更新)

将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。

git pull origin master:brantest

注意: 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

注意:pull默认是获取master分支,如果想要获取远程仓库的所有分支则需要(前提需要pull过仓库)

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done

注意:如果本地仓库不是通过检出仓库创建,并且其中有自己设置的内容,提示fatal: refusing to merge unrelated histories,则需要

git pull origin master --allow-unrelated-histories

或者

git pull --rebase origin master  

7. 推送远程仓库(将本地仓库推送到远程)

git push -u 远程仓库 远程分支名

8. 远程仓库回退

使用网站操作

<了解IDEA>

配置GIT

在这里插入图片描述

在这里插入图片描述

在IDEA中使用git命令

在这里插入图片描述

新建git项目

第一步

正常建立一个项目

第二步

将这个项目设置为本地仓库

在这里插入图片描述

在这里插入图片描述

检出项目(克隆)

在这里插入图片描述

在这里插入图片描述

添加到缓存区(git add)

在这里插入图片描述

提交到HEAD区(git commit)

在这里插入图片描述

在这里插入图片描述

注意:要写注释

注意:如果有报错则跳过即可

添加分支

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

获取远程更新(git pull)

在这里插入图片描述

在这里插入图片描述

推送到远程仓库 (git push)

在这里插入图片描述
在这里插入图片描述

<实用技巧>

记住gitee账号密码

打开工作空间,右键,选择 git bash ,在打开的窗口中执行命令:

git config --global credential.helper store

去重新下载,第一次输入帐号密码,之后再下载就不会出现了

设置用户名邮箱

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

内建的图形化 git

gitk

彩色的 git 输出

git config color.ui true

显示历史记录时,每个提交的信息只显示一行:

git config format.pretty oneline

交互式添加文件到暂存区

git add -i

标签:Git,git,07,04,仓库,暂存区,2021,远程,分支
来源: https://blog.csdn.net/qq_35638442/article/details/118469657

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有