zoukankan      html  css  js  c++  java
  • Git学习笔记(1)--安装与文件在Git上的提交和后退

    Git学习笔记(1)–安装与文件在Git上的提交和回退

    &&参考文档

    Git的下载和安装

    官方下载后,按照默认配置选项安装,安装完成后,在程序里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

    在这里插入图片描述

    用户名和邮箱

    • 设置用户名和邮箱

    安装完成后,在命令行输入以下命令即可设置用户名和邮箱:

    $git config --global user.name "Your Name"  //设置用户名
    $git config --global user.email "Your email"//设置邮箱 
    

    因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

    注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

    用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。

    每次commit都会用用户名和邮箱纪录。

    • 查看用户名和邮箱

      $ git config user.name	//用户名
      $ git config user.email	//邮箱
      
    • 更新用户名和邮箱

      git config --global user.name "your name"
      git config --global user.email "your email"	
      

      因为以前有个软件也叫GIT(GNU Interactive Tools),结果Git就只能叫git-core了。由于Git名气实在太大,后来就把GNU Interactive Tools改成gnuitgit-core正式改为git .

    版本库( repository )

    输入以下指令完成版本库的创建:

    $cd e:						//选择路径,我选择的是E盘
    $ mkdir gitdata				//创建文件夹 gitdata
    $ cd gitdata				//选择 文件夹 gitdata
    $ mkdir learngit			//创建文件夹 learngit
    $ cd learngit				//选择 文件夹 learngit
    $ pwd						//打印当前路径
    /e/gitdata/learngit
    $ git init					//初始化本地版本库,把这个目录变成Git可以管理的仓库:
    

    现在已经建好了一个空的仓库(empty Git repository),且当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的.

    如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

    把文件添加到版本库

    所有的版本控制系统,其实只能跟踪文本文件(比如TXT文件,网页,所有的程序代码等等)的改动,版本控制系统可以告诉文本文件每次的改动 . 而图片、视频、 Microsoft的Word 文件这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化 .

    如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

    建议下载Notepad++代替记事本,千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本在保存UTF-8编码的文件时,在每个文件开头添加了0xefbbbf(十六进制)的字符.

    创建一个readme.txt文件(一定要放到learngit目录(或者子目录)下.),内容如下:

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

    输入以下代码,将文件提交到Git:

    $ git add readme.txt						//第一步相当于 选择
    $ git commit -m "wrote a readme file"		//第二步相当于  确认
    

    -m后面输入的是本次提交的说明,以便日后的查阅

    git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容).

    第一步完成后可以多次重复提交(选择多个文件),最后一次 确认 .

    查看文件的修改记录

    • 运行git status命令 查看文件的仓库的当前状态:
    阿杰@▒▒▒ܵı▒▒▒ MINGW64 /e/gitdata/learngit (master)
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   readme.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    

    上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改.

    • 查看文本文件的修改记录:
    阿杰@▒▒▒ܵı▒▒▒ MINGW64 /e/gitdata/learngit (master)
    $ git diff
    diff --git a/readme.txt b/readme.txt
    index d8036c1..dd759bd 100644
    --- a/readme.txt
    +++ b/readme.txt
    @@ -1,2 +1,3 @@
    -Git is a version control system.
    +Git is a distributed version control system.
    +Good.
     Git is free software.
     No newline at end of file
    
    
    • 当提交新的文件后,在输入git status后:
    阿杰@▒▒▒ܵı▒▒▒ MINGW64 /e/gitdata/learngit (master)
    $ git status
    On branch master
    nothing to commit, working tree clean
    

    nothing to commit当前没有需要提交的修改,而且working tree clean工作目录是干净的.

    历史记录的查看

    输入git log,查看所有版本的修改信息:

    阿杰@▒▒▒ܵı▒▒▒ MINGW64 /e/gitdata/learngit (master)
    $ git log
    commit 196963208ebcdf13473f872cec73679373ea8f11 (HEAD -> master)
    Author: AJie <1339126726@qq.com>
    Date:   Sun Oct 27 19:18:01 2019 +0800
    
        wirt GPL
    
    commit 07dab98432e07cd0cb86bb1242c9a401a4aa19e3
    Author: AJie <1339126726@qq.com>
    Date:   Sun Oct 27 19:11:24 2019 +0800
    
        add two words
    
    commit 165e0472f58966f54b3114985fe31371bb675a13
    Author: AJie <1339126726@qq.com>
    Date:   Sun Oct 27 15:40:05 2019 +0800
    
        wrote a readme file
    

    196963208ebcdf13473f872cec73679373ea8f11为版本的 commit id

    输入git log --pretty=oneline得到简要的历史记录:

    阿杰@▒▒▒ܵı▒▒▒ MINGW64 /e/gitdata/learngit (master)
    $ git log --pretty=oneline
    196963208ebcdf13473f872cec73679373ea8f11 (HEAD -> master) wirt GPL
    07dab98432e07cd0cb86bb1242c9a401a4aa19e3 add two words
    165e0472f58966f54b3114985fe31371bb675a13 wrote a readme file
    

    HEAD代表当前 文件 的版本,若是想回退到上一版本则使用$gitreset --hard HEAD^;回退到上上各版本则需要$git reset --hard HEAD^^…依此类推.也可以使用HEAD~n其中n代表回退几次.

    同样可以使用$ git reset --hard+版本前的 commit id

    指令的历史记录

    输入git reflog来查询你的历史指令

    阿杰@▒▒▒ܵı▒▒▒ MINGW64 /e/gitdata/learngit (master)
    $ git reflog
    07dab98 (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
    1969632 HEAD@{1}: commit: wirt GPL
    07dab98 (HEAD -> master) HEAD@{2}: commit: add two words
    165e047 HEAD@{3}: commit (initial): wrote a readme file
    

    小结

    • 初始化一个Git仓库,使用git init命令。

    • 添加文件到Git仓库,分两步:

      1. 使用命令git add,注意,可反复多次使用,添加多个文件;
      2. 使用命令git commit -m,做好备注,完成。
    • 要随时掌握工作区的状态,使用git status命令。

    • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

    • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

    • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
      git commit -m `,做好备注,完成。

    • 要随时掌握工作区的状态,使用git status命令。

    • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

    • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

    • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

  • 相关阅读:
    苹果一体机发射Wi-Fi
    iphone 屏蔽系统自动更新,消除设置上的小红点
    data parameter is nil 异常处理
    copy与mutableCopy的区别总结
    java axis2 webservice
    mysql 远程 ip访问
    mysql 存储过程小问题
    mysql游标错误
    is not writable or has an invalid setter method错误的解决
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
  • 原文地址:https://www.cnblogs.com/sepZhang/p/13503747.html
Copyright © 2011-2022 走看看