• git使用教程之git基础


    1 获取Git仓库

    1. 在现有目录中初始化仓库
    git init
    
    1. 克隆现有的仓库
    git clone https://github.com/yangwang12345/node_test.git
    git clone -b 分知名 路径 //切换到其他远程分支
    

    Git 支持多种数据传输协议
    https:// 协议
    git:// 协议
    SSH 传输协议 : user@server:path/to/repo.git

    2 记录每次更新到仓库


    每一个文件都不外乎这两种状态:已跟踪(tracked)或未跟踪(untracked)
    初始化一个仓库之后,文件处于未修改(Unmodified),编辑文件之后处于修改(Modifyed),将修改的文件放入暂存区(Staged),然后提交所有暂存区的修改,形成了Git的生命周期

    2.1 检查当前文件状态
    git  status
    

    如果有修改的文件,此时不被跟踪,将提示我们用git add使它被跟踪,git add可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等;运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来:

    git add xxx文件名
    

    用git status会看到文件已被跟踪,并处于暂存状态

    2.2 状态简览
    $ git status -s
     M README
    MM Rakefile
    A  lib/git.rb
    M  lib/simplegit.rb
    ?? LICENSE.txt
    

    ?? 新添加的未跟踪文件
    A 新添加到暂存区中的文件
    MM Rakefile 在工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录。
    M 该文件被修改了但是还没放入暂存区
    M 该文件被修改了并放入了暂存区

    2.3 忽略文件

    新建一个.gitignore文件

    touch .gitignore
    *.[oa]  //忽略所有以 .o 或 .a 结尾的文件
    *~       //忽略所有以波浪符(~)结尾的文件
    

    文件 .gitignore 的格式规范如下:

    • 所有空行或者以 # 开头的行都会被 Git 忽略。
    • 可以使用标准的 glob 模式匹配。
    • 匹配模式可以以(/)开头防止递归。
    • 匹配模式可以以(/)结尾指定目录。
    • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
      glob模式: glob 模式是指 shell 所使用的简化了的正则表达式。 星号()匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号() 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。
    # no .a files
    *.a
    
    # but do track lib.a, even though you're ignoring .a files above
    !lib.a
    
    # only ignore the TODO file in the current directory, not subdir/TODO
    /TODO
    
    # ignore all files in the build/ directory
    build/
    
    # ignore doc/notes.txt, but not doc/server/arch.txt
    doc/*.txt
    
    # ignore all .pdf files in the doc/ directory
    doc/**/*.pdf
    

    2.4查看已暂存和未暂存的修改

    git diff 
    

    查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令

    2.5提交更新

    git commit 
    git commit -m "信息会一行显示"
    

    git commit 会进入vim编辑器,i编辑,esc退出编辑模式 :wq保存并退出

    2.6 跳过使用暂存区域

    $ git commit -a -m 'added xxx'
    

    给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交

    2.7移除文件

    移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交.
    可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
    如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 git rm -f xxx,这样的数据不能被 Git 恢复。

    git rm xxx
    

    我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中,当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,git rm --cached或者glob模式

    $ git rm --cached README
    $ git rm log/*.log
    $ git rm *~
    

    2.8 移动文件

    重命名file_from 为file_to

    $ git mv file_from file_to
    
    $ mv README.md README  //等价于
    $ git rm README.md
    $ git add README
    

    3 查看提交历史

    git log
    git log -p -2
    

    -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交

    4 撤销操作

    $ git commit --amend
    

    如果自上次提交以来你还未做任何修改,那么快照会保持不变,而你所修改的只是提交信息
    你提交后发现忘记了暂存某些需要的修改

    $ git commit -m 'initial commit'
    $ git add forgotten_file
    $ git commit --amend
    

    取消暂存 CONTRIBUTING.md 文件

    $ git reset HEAD CONTRIBUTING.md
    

    撤销到某个历史版本commit

    git log
    git reset --hard xxx(commit历史快照)
    

    撤销修改,还原成上次提交时的样子

     git checkout -- CONTRIBUTING.md
    

    撤销所有add的文件

    git reset HEAD .
    

    5 远程仓库的使用

    5.1 远程仓库的使用
    $ git remote
    origin  //远程服务器的简写
    $ git remote -v //会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
    origin  https://github.com/yangwang12345/node_test.git (fetch)
    origin  https://github.com/yangwang12345/node_test.git (push)
    
    
    5.2 添加远程仓库
    $ git remote
    origin
    $ git remote add pb https://github.com/paulboone/ticgit
    $ git remote -v
    origin	https://github.com/schacon/ticgit (fetch)
    origin	https://github.com/schacon/ticgit (push)
    pb	https://github.com/paulboone/ticgit (fetch)
    pb	https://github.com/paulboone/ticgit (push)
    

    果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch pb,现在 Paul 的 master 分支可以在本地通过 pb/master 访问到

    $ git fetch pb
    
    5.3 从远程仓库中抓取与拉取
    $ git fetch [remote-name]
    

    必须注意 git fetch 命令会将数据拉取到你的本地仓库,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

    5.3 推送到远程分支

    git push [remote-name] [branch-name]

    $ git push origin master //将 master 分支推送到 origin 服务器时
    

    注意:当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。

    5.4 查看远程仓库
    $ git remote show origin
    
    5.5 远程仓库的移除与重命名
    $ git remote rename pb paul
    $ git remote
    origin
    paul
    
    $ git remote rm paul
    $ git remote
    origin
    

    6 打tag

    6.1 查看标签

    比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 等等)

    $ git tag
    v0.1
    v1.3
    
    $ git tag -l 'v2017*'  //只对2017开头的tag有兴趣
    v20170105
    v20170209
    v20170216
    v20170217
    v20170302
    v20170303
    v20170713
    v20170720
    v20170721
    v20170822
    v20171026
    
    6.2 创建标签

    附注标签

    $ git tag -a v1.4 -m 'my version 1.4'
    $ git tag
    v0.1
    v1.3
    v1.4
    
    $ git show v1.4 //查看标签信息
    

    上一章 了解git 下一章 git分支

  • 相关阅读:
    CH4302 Interval GCD
    20201017 模拟赛总结
    LOJ#2610. 「NOIP2013」货车运输
    POJ3696 The Luckiest number
    20200925 小练习总结
    更新一波状态
    AFO
    【扩展lucas定理】
    【LCT维护子树信息】uoj207 共价大爷游长沙
    [bzoj4589]Hard Nim(FWT快速沃尔什变化+快速幂)
  • 原文地址:https://www.cnblogs.com/yangwang12345/p/7767409.html
Copyright © 2020-2023  润新知