• GIT


    windows:

    git将每个版本都独立保存

    1.配置,在命令行模式下输入以下命令:

    git config --global user.name "用户名"

    git config --global user.email "邮箱"

    查看是否配置成功:

    git config --list

    2.git三棵树

    工作区域、暂存区域、Git仓库

    工作区域:工作目录

    暂存区域:存放改动的内容,是一个文件

    Git仓库:安全存放所有版本的数据,head指针指向最新版本的内容

    3.Git工作流程

    • 在工作目录中添加、修改文件
    • 将需要进行版本管理的文件放入暂存区域
    • 将暂存区域的文件提交到Git仓库

    Git管理文件的三种状态:已修改(modified)、已暂存(staged)、已提交(commited)

    4.windows下实战

    • 建立project文件夹

      命令行中在该文件下输入git init命令,多出.git隐藏文件夹,是git用来管理版本迭代的文件夹

    • 创建README文档,命令:git add READ.md  将文件添加到暂存区域
    • 提交:git commit -m "add a readme file" ,将暂存区域文件提交到Git仓库 ,引号中为添加的说明(-am :add+commit)

    5.查看状态 ,git status

    正常时返回:

    On branch master

    nothing to commit, working tree clean

    创建文件但未加入到暂存区域:

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

    Lisence

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

    加入到暂存区:(使用git reset HEAD命令可以撤销)

    On branch master
    Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)

    new file: Lisence

    如果修改了某个文件的内容,则提示:

    On branch master
    Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git checkout -- <file>..." to discard changes in working directory)

    modified: Lisence

    no changes added to commit (use "git add" and/or "git commit -a")

    如果使用git checkout -- Lisence,则手动修改的部分被旧的内容覆盖(具有威胁的命令)

    如果修改了暂存区的内容,此时会存在两个版本的文件,如果使用git add命令,则将修改后的文件放入暂存区,如果使用git commit命令,则将原文件提交:

    D:\project>git status
    On branch master
    Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)

    modified: Lisence

    Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git checkout -- <file>..." to discard changes in working directory)

    modified: Lisence

    6.查看历史提交命令 git log

    按时间从近到远

    D:\project>git log
    commit 16bd977fee4c7f35d6da675b5dc47e5c2413bafd (HEAD -> master)   (校验和)
    Author: dlutjwh <18742027136@163.com>
    Date: Tue Jul 2 08:57:52 2019 +0800

    change Lisence

    commit cbc2fadde3ae1170da493e97b6c2f1587ee0a490
    Author: dlutjwh <18742027136@163.com>
    Date: Tue Jul 2 08:37:33 2019 +0800

    add a lisence file

    commit c058db1e856ca72af427c63aeaec24b8291b0e55
    Author: dlutjwh <18742027136@163.com>
    Date: Mon Jul 1 17:43:34 2019 +0800

    add a readme file

    7.reset命令

     之前的例子可视化

    回到上一层:

    git reset HEAD~ 波浪线表示回到上一层,两个波浪线表示前两层。。。或者git reset HEAD~2

    git reset --mixed(默认) HEAD~:

    • 移动HEAD的指向,将其指向上一个快照
    • 将HEAD移动后指向的快照回滚到暂存区域

    git reset --soft HEAD~:(commit之后后悔了,回来重新提交)

    • 移动HEAD的指向,将其指向上一个快照

     git reset --hard HEAD~:

    • 移动HEAD的指向,将其指向上一个快照 
    • 将HEAD移动后指向的快照回滚到暂存区域(第二棵树)
    • 将暂存区域的文件还原到工作目录(第一棵树)

     soft暂存区和工作区都是当前版本的内容,mix暂存区的内容是前一个版本,工作区是现在的,要回到现在状态,必须先add在commit

    回到指定快照:

    git reset 哈希字符(前几个字符)

    回滚个别文件:

    git reset 版本快照 文件名/路径  忽略HEAD指针移动这一步

    往前滚:

    git reset 版本快照ID

    git reflog:查看所有历史ID

    8.git diff 

    比较工作空间与暂存空间文件区别

    D:\MyProject2>git diff
    diff --git a/README.md b/README.md
    index 0f2c569..b9cb571 100644   //文件id以及文件类型和权限
    --- a/README.md   //---表示旧文件,存放在暂存区域
    +++ b/README.md   //+++表示新文件,放在工作目录
    @@ -1 +1,2 @@     //-表示旧文件,+表示新文件 数字表示开始行号 逗号后的数字表示共多少行
    -<EF><BB><BF><E8><AF><BE><E5><90><8E><E4><BD><9C><E4><B8><9A><EF><BC><9A><E6><96><87><E5><AD><97><E6><B8><B8><E6><88>
    <8F>  //减号表示减少的内容
    \ No newline at end of file   //以上为共同内容
    +<EF><BB><BF><E9>B6><E5><9F><BA><E7><A1><80><E5><85><A5><E9><97><A8>
    +<E8><AF><BE><E5><90><8E><E4><BD><9C><E4><B8><9A><EF><BC><9A><E6><96><87><E5><AD><97><E6><B8><B8><E6><88><8F>
    \ No newline at end of file //以上为旧文件独有内容
    diff --git a/game.py b/game.py
    index f1f47c4..6f67a73 100644
    --- a/game.py
    +++ b/game.py
    @@ -4,5 +4,5 @@
    using namespace std;
    
    int main(){
    -
    + fasdjlfaklgj
    }
    \ No newline at end of file  //共同内容
    //旧文件无独有内容

    如果内容太多z向下移动,k向上移动,f一页一页移,b页下移(同vim)

    搜索: /+关键词 从上向下搜 

    9.比较多个id

    git diff  快照ID1,快照ID2

    10.比较当前工作目录与Git仓库中的快照

    git diff 快照id

    git diff HEAD (当前最新快照)

    11.比较暂存区域和Git仓库快照

    git  diff --cached

    12.指定快照与暂存区域

    git  diff --cached 快照ID

    13.修改最后一次提交

    git commit --amend 进入提交说明界面进行编辑

    中文字符:git commit --amend -m "中文"

    14.手动删除后恢复

    git checkout -- README

    15.删除文件

    git rm data.txt 未完全删除

    git reset  --soft HEAD~ 回到过去

    git rm 命令只删除工作目录和暂存区域的文件,即取消跟踪,在下次提交时不纳入版本管理

    git rm -f *** 暴力删除,既删除暂存区,也删除工作目录

    git rm --cached 文件名 只删除暂存区的文件

    16.重命名文件

     git 原文件名 新文件名

    17.Git分支  git branch 分支名

    git branch -b 分支名 :创建并切换

    D:\MyProject2>git branch feature

    D:\MyProject2>git log --decorate //decorate显示所有分支和标签

    commit 083497934e5c3822d3cb3ee974447e379c275d11 (HEAD -> master, feature)

    Author: dlutjwh <18742027136@163.com>

    Date: Tue Jul 2 23:32:55 2019 +0800

    second 2

    commit 42f2acd5401734f4b68fc7b9a46c40c3e3766a58

    Author: dlutjwh <18742027136@163.com>

    Date: Tue Jul 2 22:50:02 2019 +0800

    word game - guess number

    master为默认分支

    切换分支:git chekout 分支名

    D:\MyProject2>git log --decorate --oneline  //只显示一行

    0834979 (HEAD -> feature, master) second 2

    42f2acd word game - guess number

    git log --decorate oneline --graph --all 查看所有分支log

    18.分支的合并 

    git merge feature

    可能会产生冲突,主要是相同的文件名

    19.删除分支

    git branch -d 分支名

    20.匿名分支

  • 相关阅读:
    python-观察者模式
    python-迭代器模式
    python-策略模式
    python-组合模式
    python-享元模式
    python-代理模式
    虚基类与虚继承
    指针与地址的关系
    大数相加和大数相乘以及打印从1到最大的n位数
    各种排序实现以及稳定性分析
  • 原文地址:https://www.cnblogs.com/dlutjwh/p/11117738.html
Copyright © 2020-2023  润新知