zoukankan      html  css  js  c++  java
  • Git ~ 管理修改 ~ Gitasd

    现在假设你一经常我了暂存区的概念 , 下面我们将要讨论的就是 , 为什么 Git 比其他的版本控制系统设计的优秀 , 因为 Git 跟踪管理的是修改而非文件

    什么是修改  ? 修改就是 你在某个地方 新增了一行 , 删除了一行 , 或者修改了 某一行的内容 . 包括创建一个新的文件也是修改 .   下面我们试验一下证明 跟踪管理的是内容 .       

    现在我们讲 readme.txt 新增加一行 ,  " 我是新增加的一行  "   

    xpower@xpower-CW65S:~/learngit$ git status
    位于分支 master
    尚未暂存以备提交的变更:
      (使用 "git add <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    
        修改:     readme.txt
    
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a"

    然后将该文件添加到暂存区

    xpower@xpower-CW65S:~/learngit$ git add readme.txt

    现在可以看到暂存区内保存了一个 已经变化的文件 .

    xpower@xpower-CW65S:~/learngit$ git status
    位于分支 master
    要提交的变更:
      (使用 "git reset HEAD <文件>..." 以取消暂存)
    
        修改:     readme.txt

    现在再次修改文件 . "我是第二次修改"
     然后直接添加到 分支

    xpower@xpower-CW65S:~/learngit$ git commit -m "what happend ?"
    [master 515237e] what happend ?
     1 file changed, 1 insertion(+), 1 deletion(-)
    xpower@xpower-CW65S:~/learngit$ git status
    位于分支 master
    尚未暂存以备提交的变更:
      (使用 "git add <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    
        修改:     readme.txt
    
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a"

    从上面的代码可以看出 尴尬的事情发生了  ,   第二次修改的内容没有被添加进去 .

    现在 讲第二次修改添加到暂存区

    1 xpower@xpower-CW65S:~/learngit$ git add readme.txt

    然后讲文件添加到 分支 .

    xpower@xpower-CW65S:~/learngit$ git commit -m"you say"
    [master 18b2596] you say
     1 file changed, 1 insertion(+)

    ..-----------------------------------------------------------------------------------------

    上面的添加是一种比较麻烦的事情 . 下面介绍一个简单的.  当你修改完文件之后 git status 会出现

    xpower@xpower-CW65S:~/learngit$ git status
    位于分支 master
    尚未暂存以备提交的变更:
      (使用 "git add <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    
        修改:     readme.txt
    
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

    看到最后一行 , 有两种添加方法 , 第一种 " git commit . " 是将工作区内的所有 " 新的 " 文件 都保存到暂存区 . 或者直接 " git commit -a " 用VIM 输入更改备注之后  直接将 工作区 " 新的 " 文件储存到 分支里面 /

    撤销修改.

    若干年后的某一个凌晨两点你在赶一份工作报告 . 你在 readme.txt里面.写了一句 . " My stupid boss still prefers SVN " 在你准备提交之前 , 一杯咖啡起了作用 , 你猛然发现 stupid boss 可能会让你丢掉这个月的奖金 ! 

    1 xpower@xpower-CW65S:~/learngit$ cat readme.txt
    2 git is version control systen.
    3 git is free software
    4 我是第一次修改
    5 
    6 我是第二次修改
    7  My stupid boss still prefers SVN

    既然错误发现的很及时 , 就可以很容易的纠正他 ,  你可以手动讲文件恢复到你想要的样子 , 然后用git status 查看一下 .   

    1 xpower@xpower-CW65S:~/learngit$ git status
    2 位于分支 master
    3 尚未暂存以备提交的变更:
    4   (使用 "git add <文件>..." 更新要提交的内容)
    5   (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    6 
    7     修改:     readme.txt
    8 
    9 修改尚未加入提交(使用 "git add" 和/或 "git commit -a"

    贴心的git 会告诉你 接下来你能执行的操作 . git checkout -- readme.txt   丢弃掉工作去的改动 .

    xpower@xpower-CW65S:~/learngit$ git checkout -- readme.txt
    1 xpower@xpower-CW65S:~/learngit$ cat readme.txt
    2 git is version control systen.
    3 git is free software
    4 我是第一次修改
    5 
    6 我是第二次修改

    命令 git checkout -- readme.txt 的意思就是 将文件 readme.txt文件在工作区的修改全部撤销 .
    这里有两种情况  :   

    一种是 readme.txt还没有放到 暂存区 . 现在撤销修改 就回到和版本库 一模一样的状态 . 

    一种是 readme.txt已经存放到暂存区 , 现在又做了修改 , 现在撤销修改 旧回到和版本库一模一样的状态 .  

    现在 假设你不但该错了东西 , 而且还从暂存区 提交到了版本库 , 怎么办呢 ? 还是记得版本回退么? 我们可以讲版本回退 , 不过这也是有条件的就是 , 你还没有把本地版本的库推送到远程 , 因为Git的是分布式版本控制系统 . 我们后面会讲到 远程版本库 , 一旦你将 "stupid boss" 推送到了远程版本库 ....那就  ...

  • 相关阅读:
    javascript打开本地应用
    SDUT OJ -2892 A
    恳请CSDN的活动可以落实
    中国银联mPOS通用技术安全分析和规范解读
    UNIX环境编程学习——反思认识
    STM32F407VG (五)定时器
    请求的链式处理——责任链模式
    Shredding Company (hdu 1539 dfs)
    十天精通CSS3(6)
    十天精通CSS3(5)
  • 原文地址:https://www.cnblogs.com/A-FM/p/5795137.html
Copyright © 2011-2022 走看看