zoukankan      html  css  js  c++  java
  • Git操作命令1-在Git仓库里管理文件历史-常见操作

    一.创建版本库

    1.创建空目录(这里目录名为learngit)

    $ mkdir learngit

    2.进入目录

    $ cd learngit

    3.显示当前目录

    $ pwd

    4.将当前目录变为Git可以管理的仓库

    $ git init
    

     .git目录是Git来跟踪管理版本库的,要放到Git仓库的文件要放在该目录或者其子目录下

    二.把文件添加到版本库

    1.在分支中新建文件(这里文件为readme.txt)

    $ touch readme.txt

    2.vim编辑文件

    $ vi readme.txt

    按 “i” 进入编辑,按  “esc”  “:wq”保存并推出

    3.把文件添加到仓库

    $ git add readme.txt
    

    4.把文件提交到仓库

    $ git commit -m "wrote a readme file"
    

    commit可以一次提交很多文件,所以你可以多次add不同的文件

    Git告诉我们当前没有需要提交的修改nothing to commit),而且,工作目录是干净(working tree clean)的。

    三.修改文件、查看修改

    1.查看仓库当前的状态(如:是否修改了文件、修改是否已提交、删除了什么文件、冲突的文件等)

    $ git status

    2.查看具体修改了什么内容

    $ git diff readme.txt 

    四.版本回退

    每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

    1.查看提交日志的历史记录

    $ git log

    简略版

    $ git log --pretty=oneline
    

    一大串类似1094adb...的是commit id(版本号)

    在Git中,用HEAD表示当前版本,最新的提交上一个版本是HEAD^上上一个版本就是HEAD^^

    2.回退到上一个版本

    $ git reset --hard HEAD^

    3.指定回到未来的某个版本

    (1)只要上面的命令行窗口还没有被关掉,你就可以顺着往上找,找到那个未来版本的commit id,这里1094adb...

    $ git reset --hard 1094a

    (2)已经关闭了命令行,想恢复到新版本

    • 查看命令日志的历史记录(为了找commit id)
    $ git reflog
    
    • 找到待恢复版本的commit id,用$ git reset --hard 1094a回到新版本

    五.撤销修改

    1.丢弃工作区的修改

    $ git checkout -- readme.txt
    

    自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态

    git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

    2.修改后已经git add到暂存区,但是还没有提交

    $ git reset HEAD readme.txt
    

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    接下来通过命令$ git checkout -- readme.txt丢弃工作区的修改

    3.已经提交到版本库(前提是没有推送到远程库)

    想要撤销本次提交,参考四.版本回退

    六.删除文件

    1.从工作空间删除文件(和直接在文件管理器删除相同)

    $ rm test.txt
    

    2.从版本库删除文件

    如果该文件已经提交到了版本库,从工作空间删除文件后,那么此时工作区和版本库就不一致了

    $ git rm test.txt
    然后
    $ git commit -m "remove test.txt"

    文件就从版本库中被删除了

    3.从版本库恢复工作空间误删的文件

    $ git checkout -- test.txt
    

    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!

    补充概念:

    1.工作区和暂存区:

    在这里learngit文件夹就是一个工作区。工作区的隐藏目录.git不算工作区,而是Git的版本库

    • 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
    • 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

    2.Git管理的是修改,那么Git如何跟踪修改

    每次修改,如果不用git add到暂存区,那就不会加入到commit中。

    • 第一次修改 -> git add -> 第二次修改 -> git commit

    。当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

    • 第一次修改 -> git add -> 第二次修改 -> git add -> git commit

    现在把第二次修改也提交了。

     参考资料:廖雪峰老师博客

  • 相关阅读:
    C#和Sql Server 2005中时间的最大值和最小值
    Windows Server 2008 R2 With SP1简体中文版 + 破解补丁
    Merge窗体的制作
    SqlServer2008R2卸载
    Highlighter(高亮控件的边框)
    如何删除window.old文件
    如何全屏WinForm的窗体
    验证时出错。HRESULT = '8000000A'
    ReflectionLabel(倒影控件)
    windows 2003和server 2008 取消对网站的安全检查/去除添加信任网站
  • 原文地址:https://www.cnblogs.com/wy0526/p/13125083.html
Copyright © 2011-2022 走看看