Git 本地仓库管理

简介: 目录目录基本概念配置配置个人帐号信息安装本地版本库创建 Git 仓库Git 仓库版本回退修改管理基本概念工作区(Working Directory): 就是你在电脑里能看到的目录 版本库(Repository): 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

目录

基本概念

工作区(Working Directory): 就是你在电脑里能看到的目录
版本库(Repository): 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
暂存区 : Git 的版本库里存了很多东西,其中最重要的就是称为 stage(index)的暂存区

配置

配置个人帐号信息

  • CLI 方式:
  git config --global user.email "jmilkfan@example.com"
  git config --global user.name "jmilkfan"
  • Edit 方式:
    针对账户的配置: vim ~/.gitconfig
[user]        # User info                                                                                                         
|   email = jmilkfan@example.com
|   name = jmilkfan

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  editor = vim   # 默认编辑器

针对单个项目的配置: vim projectName/.git/config

|   repositoryformatversion = 0
|   filemode = true
|   bare = false
[remote "origin"]
|   url = http://fanguiju@192.168.1.1:8080/openstack/projectname
|   fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
|   remote = origin
|   merge = refs/heads/master
[remote "gerrit"]
|   url = ssh://fanguiju@192.168.1.1:8080/openstack/projectname.git
|   fetch = +refs/heads/*:refs/remotes/gerrit/*

安装

sudo apt-get install git
# OR
yum install -y git

本地版本库

版本库又名仓库(repository),可以简单理解为一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

创建 Git 仓库

  • 创建工作目录
mkdir jmilkfanDir
  • 将工作目录变成 Git 工作区
cd jmilkfanDir
git init

生成 .git 目录, 这个目录才是本质上的 Git 仓库, 是 Git 来跟踪管理版本库的根本。

  • 在工作区创建文件, 并将文件添加到 Git 仓库中, 让 Git 仓库能够记录这个文件的当前状态(内容)
    NOTE1 : 只能跟踪文本文件的改动(txt/html/代码文件),而没法跟踪图片、视频、word文件这些二进制文件内容的变化
    NOTE2 : 建议所有文件都使用标准的 UTF-8 编码
touch README.md

git status   # 查看当前工作区的状态, 即工作区中有那些文件是和 Git 仓库中记录的内容不一样的
# Or
git status -s   # 简约的状态查看方式

git add README.md   # 添加单个文件
# Or
git add .  # 添加所有文件

git diff   # 查看当前工作区中的文件内容与已往 Git 仓库中记录的内容有那些不同, 强烈建议在每一次执行 commit 之前都 diff 一次来确保能完成期望的提交

git commit -m "注释, 便于记录这次提交的内容主题"    # -m 只能提交单行注释, 并不规范
# Or
git commit  # 进入 Vim 编辑模式, 可以编辑规范的注释

status 指令: 可以让我们时刻掌握 Git 仓库当前的状态
add 指令: 本质上是将工作区中的文件记录到 Git 仓库的暂存区中, 并没有真正写入到 Git 仓库
diff 指令: 看当前工作区中的文件内容与已往 Git 仓库中记录的内容有那些不同
commit 指令: 将暂存区的内容提交到 Git 仓库中记录. 所以, add 可以指定多个文件, 最终由 commit 一次性写入到 Git 仓库.

  • 删除文件
git rm README.md
git commit -m "remove README.md"

删除文件也会导致工作区和 Git 版本库的不一致, 所以也需要提交操作, 来让 Git 版本库来记录这一此的改变.
NOTE: 删错了, 也可以很轻松地把误删的文件恢复到最新版本

git checkout -- README.md

Git 仓库版本回退

Git 仓库的版本被称为 commit, 一旦你把文件改乱了,或者误删了文件,还可以回退最近的一个 commit.
通过 log 来查看 commit ID:

git log    # 查看完整的 log 信息
# Or
git log --pretty=oneline  # # 查看简洁的 log 信息

回退的步骤:

  • 首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本, 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

  • git reset 指令. EG:

git reset --hard HEAD^
# Or
$ git reset --hard [commit ID]

NOTE: 回退 “回退” 的方法
只要上面的命令行窗口还没有被关掉,你就可以顺着往上找到那个希望回退 “回退” 的commit id
那么忘记了 commit 怎么办 ? 还可以使用 git reflog 指令

git reflog

修改管理

如果每次在工作区中对文件的修改,不 add 到暂存区,那就不会被提交到 commit 中.
所以当我们 git add 了一个文件后, 发现还需要继续对文件进行修改时, 先别着急提交第一次修改,再次 git add 第二次修改之后 git commit,就相当于把两次修改合并后一块提交了.
第一次修改 ⇒ git add ⇒ 第二次修改 ⇒ git add ⇒ git commit

  • 撤销修改
    我们可以通过 git checkout -- filename 手动的把 filename 文件中的修改撤销掉.
    git checkout -- filename命令中的 很重要,没有 ,就变成了“切换到另一个分支”.

把 filename 文件在工作区的修改全部撤销,这里有两种情况:
1. filename 文件自修改后还没有被 add 到暂存区,现在执行 git checkout -- filename 就能够撤销修改, 从而让文件回到和版本库中所记录的一样;
2. filename 已经 add 到了暂存区后,又对文件作了修改,现在执行撤销修改的话, filename 文件就回到 add 到暂存区后的状态(即仍会保留暂存区中的内容)。
NOTE: 针对第二种情况, 我们还可以在 commit 之前, 用命令 git reset HEAD filename 把暂存区的内容进行撤销,让 filename 文件重新放回工作区的状态. git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。

  • 使用技巧:
    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout -- filename
    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,第一步用命令 git reset HEAD file,就回到了场景1,再git checkout -- filename .
    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,git reset --hard [commit ID]
相关文章
|
1月前
|
安全 开发工具 git
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
222 5
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
|
3月前
|
开发工具 git 开发者
Git流程控制:远程仓库操作的实用指南
通过遵循这些步骤和策略,你将能够更有效地与远程仓库进行交互,确保代码变更的透明度和项目历史的干净。同时,良好的版本控制习惯可以减少潜在的冲突,并帮助保持代码库的整洁。在日常工作中应用这些实用的Git流程控制技巧将是非常有益的。
162 0
|
6月前
|
网络安全 开发工具 git
Git仓库创建与代码上传指南
本教程介绍了将本地项目推送到远程Git仓库的完整流程,包括初始化本地仓库、添加和提交文件、创建远程仓库、关联远程地址及推送代码。同时,还提供了`.gitignore`配置、分支管理等可选步骤,并针对常见问题(如认证失败、分支不匹配、大文件处理及推送冲突)给出了解决方案。适合初学者快速上手Git版本控制。
|
7月前
|
Shell 开发工具 git
解决git bash报错:在仓库中检测到可疑的所有权
总的来说,解决“在仓库中检测到可疑的所有权”的报错,关键在于理解和调整文件或目录的所有权。只要我们正确地设置了文件或目录的所有权,那么我们就可以避免这种问题,让Git Bash正常工作。
283 22
|
10月前
|
开发工具 git
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
643 69
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
|
5月前
|
安全 Shell 开发工具
Windows下使用git配置gitee远程仓库
就在前几天因为一些原因,我的电脑重装了系统,然后再重新配置git的环境的时候就遇到了一些小问题。所以我决定自己写一篇文章,以便以后再配置git时,避免一些错误操作,而导致全网搜方法,找对的文章去找对应的解决方法。下面为了演示方便就拿gitee来演示,不拿GitHub了写文章了。
269 0
|
7月前
|
文字识别 网络协议 开发工具
GitHub封锁?推荐5个国产的Git仓库替代平台
近日,GitHub对中国区IP的部分限制引发了广泛关注。未登录用户被拒,已登录用户功能受限,南北网络环境差异更显“内卷”。为应对这一挑战,本文推荐了多个国产Git平台:Gitee(码云)、GitCode(CSDN旗下)、CODING(腾讯系)、CodeUP(阿里云支持)及微信代码管理工具。这些平台功能全面、稳定性强,是开发者迁移项目的理想选择。通过同步代码、配置CI/CD流水线等简单步骤,可确保项目平稳过渡。此次事件提醒我们,掌握核心技能与支持国产平台同样重要!
5001 11
|
10月前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
475 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
1073 1
git学习三:git使用:删除仓库,删除仓库内文件
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
529 2