首页 > 其他分享 >[转]git教程

[转]git教程

时间:2024-03-08 20:13:44浏览次数:37  
标签:文件 教程 git 本地 仓库 branch 分支

本文转自:git教程 | GeekHour

Git 读音为/git/ ,是一个开源的分布式版本管理系统,是Linux Torvalds为了帮助管理Linux内核开发而开发的一个版本控制软件。

git 和svn的区别:

1 工作原理

1.1 git的四个工作区域

image-20210409050441248image-20210409050441248

  • 远程仓库:Github、Gitee、GitLab,存储在远程服务器上的仓库。
  • 本地仓库:git clone或者git init之后存储在本地的仓库,HEAD指向最新放入仓库的版本。
  • 暂存区:也叫待提交更新区,存放临时变动,本质上是文件,保存即将提交的文件列表。
  • 工作区:也叫工作目录,本地工作目录

1.2 git的文件状态

  • 未跟踪(Untracked):文件在本地,未添加到git仓库,不参与版本控制,执行git add 后 状态变为 Staged

  • 未修改(Unmodified):文件已入库,未修改,即版本库中的快照内容与本地文件一致。修改后转为Modified,执行git rm后移出版本库,变为Untracked

  • 已修改(Modified):文件已入库,已修改,即版本库中的快照内容与本地文件不一致。使用git checkout则丢弃修改,返回Unmodified状态,git add后进入暂存Staged状态。

  • 暂存(Staged):暂存状态,执行git commit则修改同步到本地库中,文件变为Unmodified状态,执行git reset HEAD filename 取消暂存,文件变为Modified状态

    可以使用git status [filename]来查看指定文件的状态。

image-20210409050404549image-20210409050404549

image-20210409042142708image-20210409042142708

image-20210409042214715image-20210409042214715

image-20210409042230437image-20210409042230437

1.3 本地工作流

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

image-20210409043232427image-20210409043232427

1.4 分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”。master分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,一般会新建dev分支进行开发,dev分支代码稳定后再将它们合并到master分支上。

image-20210409043607480image-20210409043607480

1.5 需要记住的命令

image-20210409044451952image-20210409044451952

2 常用操作

全局配置:

1
2
3
git config --global user.name "username"
git config --global user.email "xxxx@gmail.com"

新建仓库:

1
2
3
4
5
6
7
8
9
10
mkdir vuecli_sample
cd vuecli_sample
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add github git@github.com:geekhall/vue2cli.git
git remote add gitee git@gitee.com:sjdt/vue2cli.git
git push -u github master
git push -u gitee master

已有仓库

1
2
3
4
cd existing_git_repo
git remote add github git@gitee.com:sjdt/vuecli_sample.git
git branch -M main
git push -u github main

2.1 配置

1
2
3
4
5
6
# 设置
git config --global user.name yiny
git config --global user.email yinyang007@gmail.com

# 查看
git config -l / git config --list

2.2 创建仓库

两种方式:

1
2
3
4
5
# 创建一个新的仓库
git init

# 创建一个远端仓库的本地克隆版本
git clone username@host:/path/to/repository

2.3 本地提交

1
2
3
4
5
6
7
# 添加到Stage
git add <filename>
git add .
git add *

# 提交到本地仓库
git commit -m "提交信息" # 现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库!

2.4 推送改动

1
2
3
4
5
6
# 将本地改动提交到远端仓库,origin和master分别为默认的仓库名和分支名称
git push origin master

# 如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
git remote add origin <server>

2.5 分支操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r

# 创建分支,但依然停留在当前分支
git branch [branch-name]

# 创建一个分支,并切换过去:
git checkout -b [branch-name]

# 合并指定分支到当前分支:
git merge [branch-name]

# 切换回主分支:
git checkout master

# 删除分支:
git branch -d [branch-name]

# 除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
git push origin <branch>

# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

2.6 更新与合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 要更新你的本地仓库至最新改动,执行:
git pull # 在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。

# 要合并其他分支到你的当前分支(例如 master),执行:
git merge <branch>

# 两种情况下,git 都会尝试去自动合并改动。不幸的是,自动合并并非次次都能成功,并可能导致 冲突(conflicts)。
# 这时候就需要你修改这些文件来人肉合并这些 冲突(conflicts) 。改完之后,你需要执行如下命令以将它们标记为合并成功并重新提交:
git add <filename>
git commit

# 在合并改动之前,也可以使用如下命令查看:
git diff <source_branch> <target_branch>

2.7 标签

1
2
3
# 在软件发布时创建标签,是被推荐的。这是个旧有概念,在 SVN 中也有。可以执行如下命令以创建一个叫做 1.0.0 的标签:
git tag 1.0.0 1b2e1d63ff # 1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。

2.8 日志

1
git log

2.9 diff

1
git diff ver1..ver2 [filename]

2.10 替换本地改动(慎用,未提交的本地修改内容可能丢失)

1
2
3
4
5
6
# 假如你做错事,你可以使用如下命令替换掉本地改动:
git checkout -- <filename> # 此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。

# 假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
git fetch origin
git reset --hard origin/master

2.11 git reset

git reset 的三种模式soft,mixed,hard

image-20210409042413736image-20210409042413736

image-20210409042427204image-20210409042427204

image-20210409042439298image-20210409042439298

2.12 gitignore

在.gitignore文件中配置不需要提交到版本库进行管理的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Class file
*.class

# Log file
*.log

# BlueJ file
*.ctxt

# Mac file
.DS_Store

# package file
*.jar
*.war
*.nar
*.ear
*.zip
*.tar
*.tar.gz
*.rar

# config file
.idea/

删除远程仓库文件

如果要删除的文件已经被git跟踪,那么即使添加到.gitignore也是没有用的,
具体操作步骤:

  1. 预览将要删除的文件
    加上 -n 表示只是展示,不会删除任何文件
1
git rm -r -n --cached filename
  1. 确定无误后删除文件:
1
git rm -r --cached filename
  1. 提交到本地并推送到远程服务器
1
2
git commit -m "提交说明"
git push origin master
  1. 修改本地.gitignore文件并提交

标签:文件,教程,git,本地,仓库,branch,分支
From: https://www.cnblogs.com/freeliver54/p/18061759

相关文章

  • FastGPT接入白菜GPT一键部署教程
     注册会员领取免费API_KEY,内测期间,每天限30名会员免费注册,能注册就能领取API_KEY,无需充值,无需付费,免费使用ChatGPT,支持3.5/4白菜GPT简介白菜GPT旨在提供稳定高效且免费的OpenAIAPI转发服务,帮助国内GPT应用学习相关爱好者及从业者,提供便捷、低成本、长期稳定的GPT中转服......
  • 如何在CentOS 安装极狐GitLab Runner?
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。基于CentOS和极狐GitLab官方仓库脚本安装/配置GitLabRunner文档......
  • 【教程】修改应用程序开发者名称的步骤
     引言在应用程序开发过程中,修改开发者名称是一项常见的需求,它关系到开发者在应用商店中的展示和品牌认知。本文将介绍如何通过简单的步骤来修改应用程序的开发者名称,涉及到登录开发者账户、找到应用程序、修改名称、保存并等待审核等流程。正文1.登录开发者账户首先,打开你......
  • FMS设备监察系统无线传输模块及网关快速应用教程
    设备监察系统又叫做FMS(Facilities  Monitoring  System),该FMS系统由 GUI(配置上位机)、FMS网关和lora无线模块节点三部分组成。亿佰特上市的E53-470FMS22S、E53-DTU(470FMS22)产品是基于LoRa扩频技术开发的设备监察系统无线传输模块及网关,其强大的抗干扰能力,让无线通信在工业现......
  • 详解 git stash
    gitstash详解gitstash命令及其参数功能。在Git中,stash是一种暂存工作区更改的方法,它允许您暂时保存未提交的更改,并将当前工作目录恢复到上次提交的状态。这对于需要切换分支处理其他问题、或者当前工作尚未完成但需要清理工作区以拉取或合并其他分支时非常有用。以下是......
  • obs教程
    obs视频录制设置点击右下设置-》选择输出-》选择录像类型:选择标准录像格式:mp4视频编码器:x264(cpu编码,适用于cpu较强,且没有核显),QuickSyncH.264(cpu核显编码),NVIDIANVENCH.264(英伟达显卡编码),H264AMF(amd显卡编码)码率控制:cbr(恒定码率录制,录制视频选择,适用于固定宽带,恒定输......
  • github 搭建个人导航网
    最近搭建了个个人的导航网,具体内容见下图,欢迎大家访问吖,点我访问 (首次访问较慢) 具体实现是使用vue3编写,白嫖github的page部署首先在github上创建一个仓库:name.github.io#name是你github的名字然后在本地创建一个vue3项目 然后把刚创建的仓库clone到......
  • 制作简单的个人网页教程
     ##1.准备工作在开始制作个人网页之前,您需要确保已经安装了文本编辑器,比如SublimeText,VisualStudioCode等。接下来我们将使用HTML、CSS和JavaScript来制作该个人网页。##2.创建HTML文件首先,打开您的文本编辑器,创建一个新文件并将其保存为`index.html`。接下来,添加以下基......
  • 【HOSTS】电脑端订阅hosts,解决github使用问题
    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/3151、订阅源除了魔法方式外,可通过修改hosts文件,以达到访问的目的。分享两个github的定期更新地址:①【推荐使用】FetchGitHubhttps://hosts.gitcdn.top/hosts.txt②【备用】Hel......
  • zsh git Mac终端中文乱码问题
    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/320如果在Mac终端中使用zsh和git时出现中文乱码问题,可以尝试以下解决方法:修改终端字体打开终端,点击菜单栏的“终端”->“偏好设置”,选择“文本”,在“字体”选项中选择一个支......