Git

简介

Git是一个免费开源的分布式版本控制系统,它使用一个叫做仓库(Repository)的数据库来记录文件的变化,需要的时候可以很方便的将文件恢复到之前的某一个版本。同时,分布式的控制系统也可以很方便的将本地的项目同步给其他人。

新建仓库

创建仓库只需要把一个目录变成Git可以管理的仓库就可以了,一般来说,有两种创建仓库的方式:

  1. git init

    该方式可以直接把本地的一个目录变成仓库

    wzh@DESKTOP-M633EU5 MINGW64 /e/github
    $ mkdir learn_git
    
    wzh@DESKTOP-M633EU5 MINGW64 /e/github
    $ cd learn_git/
    
    wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git
    $ git init
    Initialized empty Git repository in E:/github/learn_git/.git/
    
    wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
    $
    

    可以看到提示符后面多了一个(master)
    也可以通过git init learn_git完成这两步操作

  2. git clone

    该方式可以将远程服务器上的仓库克隆到本地

    wzh@DESKTOP-M633EU5 MINGW64 /e/github
    $ git clone https://github.com/hetailang/SqueezeAttention.git
    Cloning into 'SqueezeAttention'...
    remote: Enumerating objects: 862, done.
    remote: Counting objects: 100% (157/157), done.
    remote: Compressing objects: 100% (104/104), done.
    remote: Total 862 (delta 44), reused 136 (delta 33), pack-reused 705
    Receiving objects: 100% (862/862), 5.77 MiB | 383.00 KiB/s, done.
    Resolving deltas: 100% (184/184), done.
    
    wzh@DESKTOP-M633EU5 MINGW64 /e/github
    $ cd SqueezeAttention/
    
    wzh@DESKTOP-M633EU5 MINGW64 /e/github/SqueezeAttention (main)
    $
    

工作区与文件状态

Git的本地数据管理分为三个区域:工作区,暂存区,本地仓库。

  • 工作区:在资源管理器中看到的目录就是工作区
  • 暂存区:临时存储区域,用来保存即将提交到Git仓库的修改内容
  • 本地仓库:保存文件的所有历史版本

工作区修改文件后,需要将修改的部分添加到暂存区,然后才能将文件提交到本地仓库

关于暂存区,如果在工作区每修改一次都需要将文件提交到仓库会比较麻烦,所以可以将阶段性的修改都添加到暂存区一起提交。

Git中的文件分为以下四种状态:未跟踪,未修改,已修改,已暂存

image-20240421000226991

添加和提交文件

git init    # 新建仓库
git status  # 查看仓库状态
git add     # 将文件添加到暂存区
git commit  # 将暂存区的文件提交到仓库
git log     # 查看修改日志

在仓库中新创建一个文件,使用git status查看其状态,可以看到文件的状态为未跟踪

wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
$ echo "first file" > file1.txt

wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
$ ls
file1.txt

wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
$ cat file1.txt
first file

wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        file1.txt

nothing added to commit but untracked files present (use "git add" to track)

使用git add将该文件添加到暂存区,文件的状态将变为以暂存

wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
$ git add file1.txt

wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   file1.txt

使用git commit将暂存区中的文件提交到仓库,注意该命令只会提交暂存区中的文件,不会提交工作区的其他文件

wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
$ git commit -m "first commit"
[master (root-commit) 271e6f4] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 file1.txt

wzh@DESKTOP-M633EU5 MINGW64 /e/github/learn_git (master)
$ git status
On branch master
nothing to commit, working tree clean

git reset 回退版本

git reset --soft   # 回退到某一版本,并保存工作区与暂存区的修改内容
git reset --hard   # 回退到某一版本,并丢弃工作区域暂存区的修改内容
git reset --mixed  # 回退到某一版本,并保留工作区的修改内容,丢弃暂存区的修改内容(默认)
git ls-files       # 列出仓库中已跟踪的文件

“丢弃”可以理解为用仓库的状态覆盖目标区域的状态,但是这个操作不会影响到还未被跟踪的文件

删除文件

在git中删除文件有两种方法:

  1. 首先在本地工作目录删除,将文件拖到回收站或rm <file>
  2. 将该删除操作同步到暂存区 : git add <file>
  3. 提交 : git commit

git为删除提供了一种简化的操作 : git rm <file>,该操作可以同时删除工作区与暂存区的<file>,然后再提交到仓库即可

posted @ 2024-04-25 20:18  何太狼  阅读(3)  评论(0编辑  收藏  举报