zoukankan      html  css  js  c++  java
  • git提交版本-git基础(七)

    之前的文章主要讲述了如何追踪文件,以及文件的状态、文件所在区域的流转。现在是最终的对文件进行版本控制了。
    之前新建或修改后的文件,我们都add进了暂存区,文件还没有提交到版本仓库。现在我们就进行正式的版本控制吧。

    一、提交版本

    1. 提交版本命令 git commit -m <message>
    message是对本次提交的备注信息,是必填项。
    在提交之前,必须确认还有什么已修改或新建的文件还没有 git add 过, 否则提交的时候不会记录这些尚未暂存的变化。
    这些已修改但未暂存的文件保留在本地磁盘。 所以每次准备提交前,先用 git status 命令看下,你所需要的文件是不是都已暂存起来了。
    提交版本,是将暂存区的文件,提交进入仓库。
    执行命令提交我们在工作区中的两个已暂存文件

    $ git commit -m 初次提交
    [master (root-commit) 337070e] 初次提交
     2 files changed, 1 insertion(+)
     create mode 100644 .gitignore
     create mode 100644 hello.txt
    


    hello.txt的内容为 hello ,.gitignore文件的内容为空。

    现在你已经成功的创建了项目的第一个版本。

    注意:提交时的文件是放在暂存区域的。 任何还未暂存的文件仍然保持已修改状态,可以在下次提交时纳入版本管理。 每一次运行提交操作,都是对你项目作一次版本,以后可以回到这个版本,或者进行比较。


    2. 跳过使用暂存区域
    命令 git commit -a -m <message>
    给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。
    注意是针对已追踪的文件,如果是新建文件,还是执行 add 操作的。
    实例:
    此时 hello.txt 是已追踪的,我们修改内容为 hello,并新建一个 world.txt 文件。
    执行 git commit -a -m 第二次提交跳过暂存区。

    先查看状态,再提交后查看状态:

    $ git status
    On branch master
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            modified:   hello.txt
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            world.txt
    
    
    
    $ git commit -a -m 第二次提交跳过暂存区
    [master 84e27d4] 第二次提交跳过暂存区
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    
    $ git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            world.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    


    新建的 world.txt 未追踪,在工作区。hello.txt 是已追踪文件。 执行提交后,只有暂存区的文件进入仓库了。


    3.移除文件(删除文件)
    git rm 命令
    所谓的移除文件或删除文件,是指从暂存区或工作区中删除。
    执行 git rm 命令,会从暂存区,并连带从工作区中删除文件,这样以后就不会出现在未跟踪文件清单中了。删除完后需要提交版本。记住所有提交了版本的代码都是可以恢复的。
    这个命令删除暂存区和工作区中的文件,即已经追踪的文件。
    实践:
    执行前:

    git status :

    $ git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            world.txt
    
    nothing added to commit but untracked files present (use "git add" to track)


    此时我们的 hello.txt 已经追踪了,执行删除命令。
    执行后:

    $ git rm hello.txt
    rm 'hello.txt'
    
    $ git status
    On branch master
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            deleted:    hello.txt
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            world.txt
    


    此时 hello.txt 已经删除了。工作区中也没有该文件了。并产生了一个待提交事项(Changes to be committed)。

    我们提交删除,并查看状态:

    $ git commit -m 删除hello文件
    [master 1e3d8be] 删除hello文件
     1 file changed, 1 deletion(-)
     delete mode 100644 hello.txt
    
    
    $ git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            world.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
    

    现在只剩下我们未追踪的 world.txt 了,hello.txt已经被删除了。

    3. 暂存区中移除文件
    git rm --cached <filename> 命令
    另外一种情况是,我们想把文件从暂存区域移除,但仍然希望保留在当前工作目录中。 
    即让文件保留在工作区,但是并不想让 Git 继续跟踪。 
    当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。 
    git rm --cached <filename> 是 git add <filename> 的反向操作命令。


    4. 重命名文件
    命令 git mv file_from file_to
    该命令将重新命名文件。文件必须是已追踪的文件。
    实践:
    我们追踪 world.txt 并将其重命名为 world2.txt

    $ git add world.txt
    
    $ git mv world.txt world2.txt
    
    $ git status
    On branch master
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            new file:   world2.txt
    



    其实,运行 git mv 就相当于运行了下面三条命令:

    $ mv README.md README
    $ git rm README.md
    $ git add README



    转载自:知优码  https://www.javaidea.cn/topic/1238.html
  • 相关阅读:
    干货分享:如何使用Kubernetes的Ingress API
    十年OpenStack Ussuri最新版发布 主要改进在可靠性、安全性和用例支持等方面
    如何更好地优化容器的创建?这些技巧你务必收藏
    Kubernetes是容器化微服务的圣杯么?
    微服务是否真的需要服务网格?
    ZOOM火速收购加密公司Kaybase 能否补齐安全短板?
    5个实例告诉您:如何实施成功的容器化多云策略
    新基建火了,开源云计算渠道能做什么?
    盘点6个Kubernetes监视工具
    掌握这10种方法帮你快速在Linux上分析二进制文件
  • 原文地址:https://www.cnblogs.com/beenupper/p/12526922.html
Copyright © 2011-2022 走看看