ICode9

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

Git-学习笔记

2021-07-31 16:34:45  阅读:106  来源: 互联网

标签:文件 git -- 笔记 学习 Git dev 分支


Git学习笔记

1.版本控制

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

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

分类:

  • 本地版本控制:RCS
  • 集中式版本控制:SVN、CVS、VSS
  • 分布式版本控制:Git
区别 Git SVN
是不是分布式的 分布式的 集中式的
文件存储方式不同 内容按元数据方式存储,使用SHA-1 哈希算法 内容按文件存储
分支区别 可以在任意一个提交点(commit point)开启分支,并没有创建文件夹 分支是版本库中的另外一个目录。
是否有全局的版本号 没有
管理权限不同 没有严格的权限管理控制,只有账号角色划分 相当严格,可以按组、个人针对某个子目录的权限控制
工作流程不同 开始工作前进行fetch操作,完成开发工作后push操作,有冲突解决冲突。git的提交过程不会被打断,有冲突会标记冲突文件 每次更改文件之前都得update操作,有冲突,会打断提交动作

2.Git历史

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

3.Git环境配置

各个版本下载之后直接安装,配置环境变量。

Git一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

工作区域划分:

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

4.Git基本命令

linux基本命令:
cd #切换目录
pwd	#查看路劲
ls	#查看目录
clear	#清屏
等等。

git相关命令:
git config -l	#查看所有配置
git config --system --list	#查看系统配置
git config --global --list	#查看当前用户配置,用户名和邮箱
设置用户名与邮箱:
git config --global user.name "Ferryup"
git config --global user.email "1723265689@qq.com"

git push origin master	# 推到origin仓库的master分支
git push -u origin master	# 将本地仓库的master与远程仓库进行关联,以后push就不用指定分支了。

git commit:是将本地修改过的文件提交到本地库中;
git push:是将本地库中的最新信息发送给远程库;
git pull:是从远程获取最新版本到本地,并自动merge;
git fetch:是从远程获取最新版本到本地,不会自动merge;
git merge:是用于从指定的commit(s)合并到当前分支,用来合并两个分支; 

5.Git项目搭建

创建仓库的两种方式:本地仓库搭建、远程仓库搭建

本地仓库搭建

  1. 在当前目录右键打开git bash;
  2. 输入命令git init;
  3. 可以看到在目录下多了一个.git隐藏文件夹,关于版本的所有信息都在这个文件夹中。

远程仓库搭建

  1. 复制远程仓库的url;

  2. 在当前目录打开git bash,输入命令git clone url;

    git clone https://github.com/MarkerHub/eblog.git
    git clone --depth=1 https://github.com/MarkerHub/eblog.git#保留最近的一次commit,克隆速度更快
    
  3. 等待之后即可把远程仓库克隆到本地。

6.Git常用操作

Git管理的文件的有四种状态

  1. 未跟踪的(Untracked):文件在文件夹中,但是没有加入到仓库中,不参与版本控制。
  2. 未修改的(Unmodified):
  3. 已修改的(Modified):修改了之后需要重新添加到仓库中。
  4. 已暂存的(Staged):暂存状态。
git add .	#添加当前项目的所有文件
git commit	-m "消息" #提交
-m参数:附带的消息
git status	#查看所有文件状态,默认是较为详细的显示
git status -s	#查看所有文件状态,默认是较为简洁的显示
git status 文件名 #查看指定文件的状态

git diff	# 工作目录和暂存区
git diff --cached	# 暂存区和本地仓库
git diff HEAD	# 工作目录和本地仓库
git diff --stat	# 显示信息摘要

git reset HEAD --file    # 将本地仓库的当前版本恢复到暂存区
git reset HEAD~1 --file  # 将本地仓库的上个版本恢复到暂存区
# git rm 用来删除文件、目录。git mv 命令用于移动或重命名一个文件、目录。
git rm           # 将文件从暂存区和工作目录删除,-f为强制删除
git rm --cached <path> # 将文件从暂存区中删除
git mv <old_path> <new_path>

git log		   # 当前分支的log
git log --oneline  # 简要log
git log --graph    # 查看各种分支之间的日志
git reflog 	   # 查看所有分支的所有操作记录(包括 reset)

git tag 		       # 查看所有标签
git tag -a <tagname> -m "blablabla..."  # 创建一个标签,并附上信息
git tag -d <tagname>    		       # 删除本地标签

忽略文件

在代码目录下建立.gitignore文件。

#为注释
*.txt	#忽略所有以.txt结尾的文件
!lib.txt	#但是lib.txt除外
/temp	#向前忽略,仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/	#忽略build/目录下的所有文件
doc/*.txt	#忽略doc/notes.txt,但不包括doc/server/arch.txt

*.class
*.log
*.lock
### Package Files ###
*.jar
*.war
*.ear
target/
tmp/

### idea ###
.idea/
*.iml
*.ipr
*.iws
.classpath
.project
.settings/
bin/

*velocity.log*

### STS ###
.apt_generated
.factorypath
.springBean

### rebel ###
*rebel.xml*

使用SSH免密登录

  1. 进入C:\Users\qd.ssh 目录中,打开git bash窗口,输入命令 ssh-keygen
  2. 可以生成两个文件id_rsa.pub和id_rsa,将公钥id_rsa.pub里面的内容粘贴到网站上对应位置即可。

7.IDEA中集成Git

  1. 新建项目,绑定Git;
  • 将远程的git文件目录拷贝到项目中即可。
  1. 修改文件,使用IDEA操作Git;
  • 添加文件到暂存区。
  • commit提交到本地。
  • push到远程仓库。
  1. 提交测试。

8.Git分支

git branch	#查看本地分支
git branch	-r	#查看远程分支

git branch	dev	#新建一个分支dev,但是依然停留在当前分支
git checkout -b dev	#新建一个分支dev,并切换到dev分支

git branch -b dev	#切换到dev分支

git merge dev	#合并dev分支到当前分支

git branch -d dev	#删除dev分支

git push origin --delete dev	#删除远程dev分支
git branch -dr dev	#删除远程dev分支

# 分支合并的三种方式
git merge fast-forword:当条件允许时,git 直接把 HEAD 指针指向合并分支的头(默认)
git merge --no-ff:不适用 fast-forward 方式合并,保留分支的 commit 历史
git merge --squash:使用 squash 方式合并,将多次分支的 commit 历史记录压缩为一次

标签:文件,git,--,笔记,学习,Git,dev,分支
来源: https://www.cnblogs.com/smalldong/p/15084474.html

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

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

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

ICode9版权所有