• 有关GIT


    今天上班,发现没什么事情。

    就看了一些博客,发现有个不错的东西,分享一下。

    参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137396287703354d8c6c01c904c7d9ff056ae23da865a000

    命令: http://www.cnblogs.com/constantince/p/5086907.html

    Git:这东西对于开发人员来说,必不可少的。是一个分布式代码管理的东西。

       非常实用,简单说就是记录代码更新(增,删,修)相关的操作。对于多人合作开发很有用。

       也可弄个code review的一个网站,在那里可以通知合伙人检查本次代码修改。进一步merge到一个branch中。

    +Tips(附加项):

              1) 不想自己在Linux中搭载Git,可以用Git hub这个网站。

              2) 想在Window上操作Linux可以用软件Putty。简单说这个工具可以直接用一个IP地址访问Linux系统。别忘了编码设置为UTF-8

              3) Eclipse Git 相关:http://wenku.baidu.com/link?url=k5Y0JcG77hP-3TyZY0eEa_HRPwtqJj66gY5QFHxyKWTVpphD7KHMvCiNGv3TxSEQUyW8PKtRtWLtdXb5g68ahgicPMbQGNzR3HKByZKjTye

    Linux 安装GIT:

    $sudo apt-get install git
    
    #或者sudo apt-get install git-core
    
    #或者直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了。
    

    GIT可以安装在Window/Mac 可以参考参考网站。

    安装完成后,还需要最后一步设置,在命令行输入:

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"
    

     这个信息用于以后代码更新了,方便发送email通知。应该还有其他的用处就不用考虑。

    创建GIT Repository(仓库):

    $ mkdir learngit
    $ cd learngit
    $ pwd
    /Users/michael/learngit
    

     先创建一个文件夹(lerngit),然后进入这个文件夹,查看当前目录(pwd命令)。

    在此目录中(当前目录)【/Users/michael/learngit】

    $ git init
    Initialized empty Git repository in /Users/michael/learngit/.git/
    

     执行完命令以后,发现多了一个.git目录,这个就表明当前目录是一个git仓库。

    通俗的讲在这个目录里面可以记录(增,删,修)一些文件了。

    我们先了解一下工作区,暂存区,版本库。

    工作区(Working Directory):就是你电脑里能看到的地方,就是当前操作的目录。

    版本库(Repository):就是你git init出来一个隐藏目录.git目录。

    暂存区(Stage):就是git add后暂时存放的地方,就是快递公司了。

    实例操作(增,删,修)中的【增】:

    创建readme.txt&编辑readme.txt文件

    ~/learngit$vi readme.txt

      readme.txt文件内容

    Git is a version control system.
    Git is free software.
    

     往git仓库中添加readme.txt文件,不显示任何信息

    ~/learngit$git add readme.txt
    

     commit会生成commit id(100644)这,-m是让你写一下提交说明(我为什么添加这个文件的一些说明,让其他人知道这部分修改是有关什么的)

    ~/learngit$git commit -m "wrote a readme file"
    [master (root-commit) cb926e7] wrote a readme file
     1 file changed, 2 insertions(+)
     create mode 100644 readme.txt
    

     实例操作(增,删,修)中的【修】:

    编辑readme.txt文件

    ~/learngit$vi readme.txt

    内容修改为

    Git is a distributed version control system.
    Git is free software.
    

     然后我们查看一下现在git状态

    $ git status
    # 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:   readme.txt
    #
    no changes added to commit (use "git add" and/or "git commit -a")
    

     看注释就明白了

      1. git add <file>..." to update what will be committed
      2。git checkout -- <file>..." to discard changes in working directory,就是撤销,还未放到Stage中的(还没有git add)修改。

      Tips:如果放到暂存区了,想撤销了(git reset HEAD <file> 再执行 git checkout -- <file>)

    我们先看看跟修改之前的内容有什么不同。执行一下命令

    ~/learngit$ git diff readme.txt 
    diff --git a/readme.txt b/readme.txt
    index 46d49bf..9247db6 100644
    --- a/readme.txt
    +++ b/readme.txt
    @@ -1,2 +1,2 @@
    -Git is a version control system.
    +Git is a distributed version control system.
     Git is free software.
    

     -是修改之前,+是当前修改后的。

    不同点就是文件第一行(+1,2【文件第1行修改,文件总行数2行】),

    -Git is a version control system.
    +Git is a distributed version control system.
    

     好了,确认完了就加到git仓库中保存吧。

    ~/learngit$ git add readme.txt
    ~/learngit$ git status
    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #       modified:   readme.txt
    #
    

     好了,加也加进来了,提交并说明一下修改吧

    ~/learngit$ git commit -m "add distributed"
    [master ea34578] add distributed
     1 file changed, 1 insertion(+), 1 deletion(-)
    

     好了,看看有没有提交正确,看看当前状态

    ~/learngit$ git status
    # On branch master
    nothing to commit (working directory clean)
    

    实例操作(增,删,修)中的【删】:

    直接删除文件

    ~/learngit$ rm readme.txt
    

     然后看看现在状态

    ~/learngit$ git status
    # On branch master
    # Changes not staged for commit:
    #   (use "git add/rm <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #       deleted:    test.txt
    #
    no changes added to commit (use "git add" and/or "git commit -a")
    

    git不乐意了,暂存区和工作区不一样。于是乎git给了我两个选择

    1. git rm 从版本库中删除该文件

    2. git checkout -- readme.txt 撤销你的操作。

    从如果选择2了那就git commit -m “remove readme.txt”

    回退到历史节点(本人命名为穿越-_-,[其实是真正的博主命名的]):

    比如说现在有这些commit节点

    ~/learngit$ git log
    commit 3628164fb26d48395383f8f31179f24e0882e1e0
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Tue Aug 20 15:11:49 2013 +0800
    
        append GPL
    
    commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Tue Aug 20 14:53:12 2013 +0800
    
        add distributed
    
    commit cb926e7ea50ad11b8f9e909c05226233bf755030
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Mon Aug 19 17:51:55 2013 +0800
    
        wrote a readme file
    

     另一种查看git log 格式

    ~/learngit$ git log --pretty=oneline
    3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
    ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
    cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
    

     当前版本“append GPL”回退到上一个版本“add distributed”

    HEAD^是前一个有两个那就是倒数第二个,如果有10个-_-,

    那就用别的方法:HEAD~10

    ~/learngit$ git reset --hard HEAD^
    HEAD is now at ea34578 add distributed
    

    看看git log

    ~/learngit$ git log
    commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Tue Aug 20 14:53:12 2013 +0800
    
        add distributed
    
    commit cb926e7ea50ad11b8f9e909c05226233bf755030
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Mon Aug 19 17:51:55 2013 +0800
    
        wrote a readme file
    

     OMG 发现append GPL的commit不见了,当然-_-,因为你穿越时空来到过去,怎么可能看到未来,nonono

    但是我的记忆是还是有的,那么我们看看一下记录

    ~/learngit$ git reflog
    ea34578 HEAD@{0}: reset: moving to HEAD^
    3628164 HEAD@{1}: commit: append GPL
    ea34578 HEAD@{2}: commit: add distributed
    cb926e7 HEAD@{3}: commit (initial): wrote a readme file
    

     呀~~~发现新大陆(3628164),看来可以回去了。下次必须得记录一下未来的commit在穿越(推荐)

    ~/learngit$ git reset --hard 3628164
    HEAD is now at 3628164 append GPL

    push以后的commit一般回退会用 git revert。

    git revert是用一次新的commit来回滚之前的commit,

    git reset是直接删除指定的commit

    eclipse与github界面很酷哦:

  • 相关阅读:
    vue、vuex、iview、vue-router报错集锦与爬坑记录
    iview框架select默认选择一个option的值
    datetimerangepicker配置及默认时间段展示
    windows下nvm安装node之后npm命令找不到问题解决办法
    The difference between the request time and the current time is too large.阿里云oss上传图片报错
    html5 移动适配写法
    JS判断设备类型跳转至PC端或移动端相应页面
    vue2.0生命周期好文章推荐
    vue如何正确销毁当前组件的scroll事件?
    Apache Shiro 反序列化RCE漏洞
  • 原文地址:https://www.cnblogs.com/hongguang-kim/p/5227007.html
Copyright © 2020-2023  润新知