posts - 231,  comments - 546,  views - 135万
< 2025年2月 >
26 27 28 29 30 31 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 1
2 3 4 5 6 7 8
1、Git 网站地址
    https://git-scm.com/downloads

2、Git Gui工具
    https://git-scm.com/downloads/guis

3、SVN是集中式的版本管理系统,容易出现单点故障。Git是分布式版本管理系统。

4、工作区域和文件状态
    
    4.1)、在 Git 中有是三个区域,工作区(Work Directory)、暂存区(Staging Area/Index)、本地仓库(Local Respository)

        工作区:工作目录、本地工作目录,大家在资源管理器能够看到的文件夹就是工作区。简单来说,工作区就是我们实际操作的目录。

        暂存区:是一种临时保存区域,用于保存即将提交到Git仓库的修改内容。

        本地仓库:就是我们使用 Git init 创建的那个仓库,它包含了完整的项目历史和元数据。


        git add 是将工作区修改的内容增加到暂存区,git commit 就是将暂存区的内容提交到本地的 git 仓库。

    4.2)、文件的状态有:Untrack(未跟踪)、Unmodified(未修改)、Modified(已修改)、Staged(已暂存)

        Untrack(未跟踪):就是我们新创建的,还没有被 git 管理起来的文件。

        Unmodified(未修改):文件已经被 git 管理起来,但是文件内容没有发生变化,还没有被修改过。

        Modified(已修改):文件已经被我们修改过了,但是还没有提交到暂存区。

        Staged(已暂存):文件已经被修改,并且已经添加到了暂存区内的文件。




        Untrack(未跟踪)-------git add---->Unmodified(未修改)------修改文件--->Modified(已修改)----git add--->Staged(已暂存)

        Untrack(未跟踪)-------git add---->Staged(已暂存)

        Staged(已暂存)-------git commit--->Unmodified(未修改)

        Staged(已暂存)-----git reset----->Modified(已修改)

        Modified(已修改)------git checkout --->Unmodified(未修改)

        Unmodified(未修改)------git rm----->Untrack(未跟踪)

        

5、Git 常用命令

    1)、git -v , git --version

        $ git -v
        git version 2.41.0.windows.1

        $ git --version
        git version 2.41.0.windows.1

    2 )、git config --global user.name patrickLiu 如果名称没有空格,可以直接写,如果有空格,可以用单引号或者双引号括起来。
        全局配置用户名,可以在提交的时候知道是谁提交的。

        省略(local):本地配置,只对本地仓库有效。
        --global:全局配置,对所有的仓库有效。这个使用的最多。
        --system:系统配置,对所有的用户生效。

    3)、git config --global user.email ll_efort@sina.com
        全局配置用户的邮箱。因为邮箱没有空格,可以直接书写邮箱,不用引号括起来。

    4)、git config --global credential.helper store
        全局配置,用于存储用户的账号和密码。

    5)、 git config --global --list/-l
        可以查看用户全局配置的信息。
        
        $ git config --global --list
        gui.recentrepo=E:/Visual Studio 2022/Source/Projects/dd
        user.name=PatrickLiu
        user.email=ll_efort@sina.com
        credential.helper=store

        $ git config --global -l
        gui.recentrepo=E:/Visual Studio 2022/Source/Projects/dd
        user.name=PatrickLiu
        user.email=ll_efort@sina.com
        credential.helper=store

    6)、 git config --system --list/-l
        查看系统级别的配置。

        $ git config --system --list
        diff.astextplain.textconv=astextplain
        filter.lfs.clean=git-lfs clean -- %f
        filter.lfs.smudge=git-lfs smudge -- %f
        filter.lfs.process=git-lfs filter-process
        filter.lfs.required=true
        http.sslbackend=openssl
        http.sslcainfo=D:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
        core.autocrlf=true
        core.fscache=true
        core.symlinks=false
        pull.rebase=false
        credential.helper=manager
        credential.https://dev.azure.com.usehttppath=true
        init.defaultbranch=master

    7)、git config --list/-l
        获取所有的配置的内容,包括用户的全局设置和系统级别的配置。

        $ git config -l
        diff.astextplain.textconv=astextplain
        filter.lfs.clean=git-lfs clean -- %f
        filter.lfs.smudge=git-lfs smudge -- %f
        filter.lfs.process=git-lfs filter-process
        filter.lfs.required=true
        http.sslbackend=openssl
        http.sslcainfo=D:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
        core.autocrlf=true
        core.fscache=true
        core.symlinks=false
        pull.rebase=false
        credential.helper=manager
        credential.https://dev.azure.com.usehttppath=true
        init.defaultbranch=master
        gui.recentrepo=E:/Visual Studio 2022/Source/Projects/dd
        user.name=PatrickLiu
        user.email=ll_efort@sina.com
        credential.helper=store

    8)、创建仓库有两种方式,第一种:git init,在本地新建一个仓库,第二种:git clone,从远程克隆一个仓库。

        8.1)、git init ..(目录)
            在本地创建一个仓库

            $ git init
            Initialized empty Git repository in C:/Users/Administrator/Desktop/learn-git/.git/

            命令执行之后,会在当前目录下生成一个隐藏的 .git的文件夹,说明仓库创建成功了。如果将这个隐藏文件夹删除,该文件夹就不再是一个仓库了,而是一个普通的文件夹了。

            
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git (master)
            $ ls -a
            ./  ../  .git/

            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git (master)
            $ cd .git/

            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/.git (GIT_DIR!)
            $ ll
            total 7
            -rw-r--r-- 1 Administrator 197121  23 Jul  7 13:46 HEAD
            -rw-r--r-- 1 Administrator 197121 130 Jul  7 13:46 config
            -rw-r--r-- 1 Administrator 197121  73 Jul  7 13:46 description
            drwxr-xr-x 1 Administrator 197121   0 Jul  7 13:46 hooks/
            drwxr-xr-x 1 Administrator 197121   0 Jul  7 13:46 info/
            drwxr-xr-x 1 Administrator 197121   0 Jul  7 13:46 objects/
            drwxr-xr-x 1 Administrator 197121   0 Jul  7 13:46 refs/


            可以在 git init 命令之后跟一个名称,就会在当前目录下创建一个指定名称的仓库,并在该目录下生成一个隐藏的 .git 文件夹。

            当前目录:/c/Users/Administrator/Desktop/learn-git
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git
            $ pwd
            /c/Users/Administrator/Desktop/learn-git

            执行命令:git init myrepo
            仓库目录:C:/Users/Administrator/Desktop/learn-git/myrepo/.git/

            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git
            $ git init myrepo
            Initialized empty Git repository in C:/Users/Administrator/Desktop/learn-git/myrepo/.git/
            
        8.2)、git clone 远程地址

            
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git
            $ git clone https://gitee.com/Vanishi/BXC_SipServer.git
            Cloning into 'BXC_SipServer'...
            remote: Enumerating objects: 162, done.
            remote: Counting objects: 100% (162/162), done.
            remote: Compressing objects: 100% (110/110), done.
            remote: Total 162 (delta 65), reused 116 (delta 44), pack-reused 0
            Receiving objects: 100% (162/162), 1.89 MiB | 1.47 MiB/s, done.
    
            Resolving deltas: 100% (65/65), done.

        
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git
            $ cd BXC_SipServer/


            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/BXC_SipServer (master)
            $ ls -a
            ./   .git/       3rdparty/       LICENSE    SipServer.cpp  Utils/    windows/
            ../  .gitignore  CMakeLists.txt  README.md  SipServer.h    main.cpp
            在当前目录下也存在 .git 隐藏的文件夹,说明当前目录也是一个仓库。


    9、git status
        查看仓库的状态,比如可以查看当前仓库处在哪个分支,有哪些文件以及这些文件当前处在一个怎么样的状态。git 版本不同,分支名称的叫法也不同,比如有的叫 master,有的叫 main。

        
        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (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)

    10、git add 文件名/.(点表示当前目录的所有文件)

        git add命令的作用就是将文件添加到暂存区,等待后续的提交操作。

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git add file1.txt
        warning: in the working copy of 'file1.txt', LF will be replaced by CRLF the next time Git touches it

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (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 add 可以使用通配符添加文件,我新建了4个.txt文件,一个.sh文件,git add *.txt 只提交文本文件。

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ ls
        file1.txt  file2.txt

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ echo "第三个文件" > file3.txt

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ echo "第四个文件" > file4.txt

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ echo "第五个文件" > file5.sh

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ ls
        file1.txt  file2.txt  file3.txt  file4.txt  file5.sh

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git status
        On branch master
        Untracked files:
          (use "git add <file>..." to include in what will be committed)
                file2.txt
                  file3.txt
                file4.txt
                 file5.sh


        提交:
        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git add *.txt

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git status
        On branch master
        Changes to be committed:
          (use "git restore --staged <file>..." to unstage)
                new file:   file2.txt
                new file:   file3.txt
                new file:   file4.txt
            (绿色,只提交了文本文件)

        Untracked files:
          (use "git add <file>..." to include in what will be committed)
                file5.sh(红色,未提交)

        通配符:.,点表示当前目录
        git add .
        提交当前目录下的所有文件。

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git add .

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git status
        On branch master
        Changes to be committed:
          (use "git restore --staged <file>..." to unstage)
                new file:   file2.txt
                new file:   file3.txt
                new file:   file4.txt
                new file:   file5.sh


    11、git rm --cached <file>...
        表示将存放到暂存去的文件取回到工作区。

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git rm --cached file1.txt
        rm 'file1.txt'

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (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)

    12、git commit -m "备注信息"
        表示将暂存区的文件存放到本地的仓库里面,这个命令只会提交暂存区中的文件,而不会提交工作区的文件。如果不加 -m 参数,会进入到一个交互式的界面,编辑完成wq退出。

        [master d37c4a5] 这是我的第五次修改
         4 files changed, 4 insertions(+)
         create mode 100644 file2.txt
         create mode 100644 file3.txt
         create mode 100644 file4.txt
         create mode 100644 file5.sh

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git status
        On branch master
        nothing to commit, working tree clean

    13、git log --oneline
        可以查看仓库的提交记录。

        --oneline 表示查看简单的提交信息。

        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git log
        commit d37c4a59193fe57880deeee25e07848e82312d38 (HEAD -> master)
        Author: PatrickLiu <ll_efort@sina.com>
        Date:   Fri Jul 7 15:02:20 2023 +0800

            这是我的第五次修改

        commit 4560884f611b0ba7d3dae57ad292766405151d11
        Author: PatrickLiu <ll_efort@sina.com>
        Date:   Fri Jul 7 14:50:40 2023 +0800

            第一次提交


        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/myrepo (master)
        $ git log --oneline
        d37c4a5 (HEAD -> master) 这是我的第五次修改
        4560884 第一次提交

    14、git reset --<soft|hard|mixed> 版本id,mixed是默认的情况,不加任何参数就是 mixed 模式。

        当我们需要撤销之前的一些修改内容,或者回退到之前的某一个版本,我们就可以使用这个命令。

        git reset --soft    soft参数表示回退到之前某一个版本,并且保留工作区和暂存区的所有修改内容。

        git reset --hard    hard参数表示回退到之前某一个版本,并且丢弃工作区和暂存区的所有修改内容。

        git reset --mixed    mixed参数表示回退到某一个版本,并且只保留工作区的修改内容,丢弃暂存区的修改内容。

        
        1)、SOFT:
            之前提交了3个版本。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git log --oneline
            650dc29 (HEAD -> master) commit3
            247596d commint2
            e11887c commint1

            执行命令后,回退到第二个版本
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-soft (master)
            $ git reset --soft 247596d


            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-soft (master)
            $ git log --oneline
            247596d (HEAD -> master) commint2
            e11887c commint1


            验证结果:
            1】、使用ls命令查看当前工作区的内容。由于回退到第二版本,file3.txt文件是没提交的,文件是存在的。内容也是存在的。
                Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-soft (master)
                $ ls
                file1.txt  file2.txt  file3.txt

                Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-soft (master)
                $ cat file3.txt
                3333

            2】、查看暂存区的内容。
                git ls-files

                Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-soft (master)
                $ git ls-files
                file1.txt
                file2.txt
                file3.txt
                在工作区中,file3.txt文件也是存在的。

                Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-soft (master)
                $ git status
                On branch master
                Changes to be committed:
                    (use "git restore --staged <file>..." to unstage)
                        new file:   file3.txt(提示file3.txt是新文件)


        2)、HARD:
            回退到上一个版本,一共提交了3个版本,回退到第二版本,每个版本增加一个文件。HEAD^ 表示上一个版本
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-hard (master)
            $ git reset --hard HEAD^
            HEAD is now at 247596d commint2

            回退成功,只剩两个提交的版本了。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-hard (master)
            $ git log --oneline
            247596d (HEAD -> master) commint2
            e11887c commint1

            查看工作区的内容,使用命令:ls
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-hard (master)
            $ ls
            file1.txt  file2.txt
            在工作区中,file3.txt被丢弃了。

            查看暂存区的内容,使用命令:git ls-files
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-hard (master)
            $ git ls-files
            file1.txt
            file2.txt
            在暂存区中,file3.txt也被丢弃了。

        
        2)、MIXED:

            回退到上一个版本,一共提交了3个版本,回退到第二版本,每个版本增加一个文件。HEAD^ 表示上一个版本
            原始状态
            $ git log --oneline
            650dc29 (HEAD -> master) commit3
            247596d commint2
            e11887c commint1


            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-mixed (master)
            $ git reset HEAD^

            查看提交的日志,只剩2个版本了。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-mixed (master)
            $ git log --oneline
            247596d (HEAD -> master) commint2
            e11887c commint1


            查看工作区的情况:
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-mixed (master)
            $ ls
            file1.txt  file2.txt  file3.txt
            在工作区中,file3.txt文件还是存在的。


            查看暂存区的情况:
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-mixed (master)
            $ git ls-files
            file1.txt
            file2.txt
            在暂存区中,file3.txt文件已经存在的。


    15、git reflog
        尽量不要使用 git reset --hard 参数,如果不小心使用了,可以使用 git reflog 命令来恢复。
        
        Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo-mixed (master)
        $ git reflog
        247596d (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
        650dc29 HEAD@{1}: commit: commit3
        247596d (HEAD -> master) HEAD@{2}: commit: commint2
        e11887c HEAD@{3}: commit (initial): commint1


    16、git diff 显示差异。
        它可以用来查看文件在工作区、暂存区以及版本库之间的差异,它还可以查看文件在两个特定版本之间的差异,或者两个文件在分支之间的差异。如果 git diff 命令后面什么都不加,默认是比较的是工作区和暂存区之间的差异内容,它会显示发生更改的文件以及更改的详细信息。

        1)、比较工作区和暂存区的差异。

            命令:git diff
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff
            diff --git a/file3.txt b/file3.txt(发生变更的文件)
            index 3bd9bce..99e406d 100644(Git 会将文件的内容使用哈希算法生成一个40位的哈希值,这里只显示了哈希值的前七位,100644 表示文件的权限)
            --- a/file3.txt
            +++ b/file3.txt
            @@ -1 +1 @@
            -3333(红色,表示删除的内容)
            +环境你过来.(绿色,表示增加的内容)

            增加到暂存区
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git add .


            再次运行,就没有任何显示了,表示我们工作区和暂存区的内容是一样的。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff


        2)、比较工作区和版本库之间的差异。

            命令:git diff HEAD
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff HEAD
            diff --git a/file3.txt b/file3.txt
            index 3bd9bce..99e406d 100644
            --- a/file3.txt
            +++ b/file3.txt
            @@ -1 +1 @@
            -3333
            +环境你过来.

            由于我们还没有增加到版本库,工作区和版本库之间的内容是不相同的,所以这个差异又显示出来了。


        3)、比较暂存区和版本库之间的差异。

            命令:git diff --cached
            
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff --cached
            diff --git a/file3.txt b/file3.txt
            index 3bd9bce..99e406d 100644
            --- a/file3.txt
            +++ b/file3.txt
            @@ -1 +1 @@
            -3333
            +环境你过来.

            由于我们还没有增加到版本库,暂存区和版本库之间的内容是不相同的,所以这个差异又显示出来了。

            提交一下,再次比较,内容一样了,就没有输出了。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git commit -m "commit4"
            [master 9a938d7] commit4
             1 file changed, 1 insertion(+), 1 deletion(-)
        
            暂存区和版本库内容一致,没有输出。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff --cached

            工作区和版本库内容一致,没有输出。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff HEAD


        4)、比较两个版本之间的差异,增加要比较差异的两个版本号,就可以了。        

            命令: git diff 版本号1 版本号2
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff 650dc29 9a938d7
            diff --git a/file3.txt b/file3.txt
            index 3bd9bce..99e406d 100644
            --- a/file3.txt
            +++ b/file3.txt
            @@ -1 +1 @@
            -3333
            +环境你过来.

    
            我们可以使用某个版本号和HEAD进行比较
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff 650dc29 HEAD
            diff --git a/file3.txt b/file3.txt
            index 3bd9bce..99e406d 100644
            --- a/file3.txt
            +++ b/file3.txt
            @@ -1 +1 @@
            -3333
            +环境你过来.

    
            比较当前版本和上一个版本之间的差异
            命令:git diff HEAD~ HEAD 或者 git diff HEAD^ HEAD
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff HEAD~ HEAD
            diff --git a/file3.txt b/file3.txt
            index 3bd9bce..99e406d 100644
            --- a/file3.txt
            +++ b/file3.txt
            @@ -1 +1 @@
            -3333
            +环境你过来.


            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff HEAD^ HEAD
            diff --git a/file3.txt b/file3.txt
            index 3bd9bce..99e406d 100644
            --- a/file3.txt
            +++ b/file3.txt
            @@ -1 +1 @@
            -3333
            +环境你过来.



            比较当前版本和上一个版本之间的差异
            命令:git diff HEAD~[数字] 数字表示之间的N个版本,git diff HEAD~2 HEAD 比较当前版本和之前的两个版本之间的差异。

            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff HEAD~2 HEAD
            diff --git a/file3.txt b/file3.txt
            new file mode 100644
            index 0000000..99e406d
            --- /dev/null
            +++ b/file3.txt
            @@ -0,0 +1 @@
            +环境你过来.


            查看指定文件的差异。git diff HEAD~2 HEAD 文件名
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/repo (master)
            $ git diff HEAD~2 HEAD file3.txt
            diff --git a/file3.txt b/file3.txt
            new file mode 100644
            index 0000000..99e406d
            --- /dev/null
            +++ b/file3.txt
            @@ -0,0 +1 @@
            +环境你过来.



    17、git rm 从版本库中删除文件。

        1)、rm file;git add ./file  先从工作区中删除文件,然后再从暂存区中删除文件。            

        2)、git rm <file> 把文件从工作区中和暂存区中同时删除。

            //包含file2.txt文件
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ ls
            file2.txt  file3.txt  file4.txt  file5.txt

            //从工作区和暂存区删除文件。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ git rm file2.txt
            rm 'my-repo/file2.txt'

            //工作区已经没了 file2.txt文件。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ ls
            file3.txt  file4.txt  file5.txt

            //暂存区已经没了 file2.txt文件。
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ git ls-files
            file3.txt
            file4.txt
            file5.txt


        3)、git rm --cached <file> 把文件从暂存区中删除,但是保留工作区中的文件。

            //新增加了一个 file6.txt的文件
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ git ls-files
            file3.txt
            file4.txt
            file5.txt
            file6.txt

            //从暂存区删除file6.txt
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ git rm --cached file6.txt
            rm 'my-repo/file6.txt'

            //工作区还有 file6.txt
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ ls
            file3.txt  file4.txt  file5.txt  file6.txt

            //暂存区没有file6.txt文件了
            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ git ls-files
            file3.txt
            file4.txt
            file5.txt

        4)、git rm -r * 递归删除某个目录下的所有子目录和文件。


    18、gitignore 文件

        1)、空的文件夹是不会被 Git 管理的。

            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ mkdir temp

            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ git status
            On branch master
            nothing to commit, working tree clean


            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ echo "hello" > temp/hello.txt

            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ git status
            On branch master
            Untracked files:
              (use "git add <file>..." to include in what will be committed)
                    temp/

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

            Administrator@MS-VMSQSWIJZFNM MINGW64 ~/Desktop/learn-git/my-repo (master)
            $ git status -s(short)
            ?? temp/(两个问好:第一个问号:表示暂存区的状态;第二个问号:表示工作区的状态)

        2)、gitignore文件起作用的前提是,不能提交到版本库的。

        3)、gitignore文件夹必须以斜杠结尾,如:temp/。

        4)、gitigonre
            空格、#:git 会忽略。

            *:匹配多个字符

            ?:匹配单个字符

            [abc]:匹配这个范围任何一个字符。

            [1-9]、[a-z]:    

    19、(1)、git remote add <远程仓库别名><远程仓库地址>增加本地仓库到远程仓库;(2)、git push -u <远程仓库名><分支名>
        

        //初始化本地仓库
        Administrator@MS-VMSQSWIJZFNM MINGW64 /e/Visual Studio 2022/Source/Projects/OpticalTrap.Common.Library
        $ git init
        Initialized empty Git repository in E:/Visual Studio 2022/Source/Projects/OpticalTrap.Common.Library/.git/

        //将本地仓库增加到远程仓库中
        Administrator@MS-VMSQSWIJZFNM MINGW64 /e/Visual Studio 2022/Source/Projects/OpticalTrap.Common.Library (master)
        $ git remote add origin  ssh://patrickliu@192.168.0.108:29418/OpticalTrap.Framework.Libraries.git

        Administrator@MS-VMSQSWIJZFNM MINGW64 /e/Visual Studio 2022/Source/Projects/OpticalTrap.Common.Library (master)
        $ git remote -v:这个命令可以查看当前仓库所对应的远程仓库的别名和地址。
        origin  ssh://patrickliu@192.168.0.108:29418/OpticalTrap.Framework.Libraries.git (fetch)
        origin  ssh://patrickliu@192.168.0.108:29418/OpticalTrap.Framework.Libraries.git (push)

        //指定分支的名称为 master,由于我们默认分支的名称就是 master,这句话可以不用执行。
        Administrator@MS-VMSQSWIJZFNM MINGW64 /e/Visual Studio 2022/Source/Projects/OpticalTrap.Common.Library (master)
        $ git branch -M master

        //就是把我们本地的 master 分支和远程的 origin 仓库的 master 分支关联起来。
        $ git push -u(upstream:就是将我们本地仓库和远程仓库关联起来) origin master(本地分支名):master(远程分支名),如果名称一样,可以只写一个。
        Administrator@MS-VMSQSWIJZFNM MINGW64 /e/Visual Studio 2022/Source/Projects/OpticalTrap.Common.Library (master)
        $ git push -u origin master
        Password authentication
        (patrickliu@192.168.0.108) Password:(这个也输入密码)
        To ssh://192.168.0.108:29418/OpticalTrap.Framework.Libraries.git



    20、git remote -v 查看远程仓库的别名和地址。

        Administrator@MS-VMSQSWIJZFNM MINGW64 /e/Visual Studio 2022/Source/Projects/OpticalTrap.Common.Library (master)
        $ git remote -v
        origin  ssh://patrickliu@192.168.0.108:29418/OpticalTrap.Framework.Libraries.git (fetch)
        origin  ssh://patrickliu@192.168.0.108:29418/OpticalTrap.Framework.Libraries.git (push)



    21、git pull <远程仓库别名><远程分支名>:<本地分支名>
        <远程分支名>和<本地分支名>如果相同可省略冒号后面的部分。
        
        Administrator@MS-VMSQSWIJZFNM MINGW64 /e/Visual Studio 2022/Source/Projects/OpticalTrap.Common.Library (master)
        $ git pull origin master(后面的省略了)
        Password authentication
        (patrickliu@192.168.0.108) Password:(需要输入密码)
        From ssh://192.168.0.108:29418/OpticalTrap.Framework.Libraries
         * branch            master     -> FETCH_HEAD
        fatal: refusing to merge unrelated histories


    22、gitignore 文件




posted on   可均可可  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
历史上的今天:
2018-12-20 Newtonsoft.Json 你必须知道的一些用法
点击右上角即可分享
微信分享提示