• git快速上手


    官方教程

    如果觉没有目录得看得难受,可以在这看:Pro git 2



    一、git介绍

    从个人角度上来说,git可以干嘛?

    • 管理github等代码托管平台上的仓库,如果要做开源项目,必须要用到git,公司项目代码保存也是git或svn

    • 下载github代码,还是觉得下zip方便...

    • 版本控制,这才是git的正确用途,也是其初衷。比如你写代码,写着写着觉得写错了,想回到以前的某个状态,你再ctrl+Z得多麻烦,git就能帮你解决此问题



    二、git安装&获取仓库

    • 安装好git第一步,设置自己的身份信息。Win10右键文件资源管理器即可调出git bash,使用的linux shell习惯
    git config --global user.name "John Doe"
    git config --global user.email johndoe@example.com
    # 查看信息
    git config --list
    
    • 第二步,有代理就设置代理
    # 设置
    git config --global http.proxy http://127.0.0.1:7890
    git config --global https.proxy https://127.0.0.1:7890
    # 查看
    git config --global http.proxy
    git config --global https.proxy
    # 取消
    git config --unset http.proxy
    git config --unset https.proxy
    
    • 获取git仓库
    # 本地建立仓库: 进入一个文件夹
    git init  # 此文件夹就会被存放仓库
    
    # 克隆(下载)远程仓库,会新建目录,后面可以再追加一个目录名用于重命名
    git clone https://github.com/*/*  # https
    git clone git@github.com:*/*      # ssh
    
    linux建议使用SSH,方便 push,而Windows使用https比较方便,后面<a href="#五、远程仓库">远程仓库时</a>会说
    



    三、记录每次更新到仓库

    3.1 追踪文件

    git的文件有三种状态(位置): 已修改、暂存区、仓库

    • 一个新文件或一个仓库中的文件被修改,那它就处于已修改状态;

    • 使用 git add 命令可以追踪新文件、添加已修改文件到暂存区;

    • 最后使用 git commit -m “” 命令提交暂存区的文件到仓库,他默认需要一个注释,可以帮助你回忆你这次修改的内容,github也会显示此注释



    3.2 查看文件状态

    • git status

      status 能显示未追踪的文件、新追踪还没commit的文件、已修改的文件等, -s 选项能查看简况

    • git diff

      diff 只能查看仓库中 被修改后 还未add的文件,它能查看文件内容做了哪些修改



    3.3 提交文件到仓库

    常规入库流程: add ——> commit -m

    优点是能分批,把不同的文件打上不同的注释

    如果不想多打一行 add * 命令,又没有新追踪文件,可以使用 commit -a -m ""

    能提交所有被修改过的被追踪(仓库中)的文件,但是不推荐使用 -a,因为当你想要撤销操作的时候很麻烦



    3.4 移除文件、取消跟踪、重命名和移动

    删除文件的两种办法:

    • git rm ,再 commit

    • 如果直接在文件管理器删除了文件,又修改了被追踪的文件,最后 add ——> commit -m

      你会发现,用 status 查看,删除文件的这一步还是没被提交,解决方法是:

      文件资源管理器删除文件,再 commit -a -m ""

    取消跟踪,即从仓库中删除记录,但仍将文件保留在硬盘上,后续记得加入.gitignore

    • git rm --cached

    重命名和移动:

    • git mv ,不要使用文件资源管理器移动或重命名,git无法跟踪。git mv 其实是 rm + add



    3.5 忽略追踪某些文件

    如果不希望某些文件被追踪,可以新建 .gitignore 文件,用于存放忽略规则,当你将此文件追踪、提交后,规则就生效

    当规则生效后,你不应当使用 add * ,它无法追踪任何文件。而应该使用 add .

    忽略追踪规则的格式如下

    • 所有空行或者以#开头的行都会被 Git 忽略。

    • 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。

    • 匹配模式可以以(/)开头防止递归。

    • 匹配模式可以以(/)结尾指定目录。

    • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。

    glob即简化的正则表达式,让我们看看一些例子以方便理解:

    # 忽略所有的 .a 文件
    *.a
    
    # 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
    !lib.a
    
    # 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
    /TODO
    
    # 忽略任何目录下名为 build 的文件夹
    build/
    
    # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
    doc/*.txt
    
    # 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
    doc/**/*.pdf
    



    四、撤销操作、日志与版本回退

    除非要回退某个文件到之前的某个版本,否则无需撤销操作,继续修改继续提交即可

    4.1 回滚已修改文件

    • 当你的某个文件处于工作区时,如果你修改后觉得不妥,想撤销操作,回到最近一次提交的版本

      git checkout -- <file>

    • 当你的文件被add到暂存区,想要将其退回到工作区时

      git reset HEAD <file>

      git restore --staged <file> 文档里说的是reset,但是status提示的是restore 。参考

      没必要将文件退回到工作区,不commit,继续修改和add即可。除非要checkout



    4.2 commit后的回滚

    • 查看git日志、提交历史

      git log commit后面一段很长的字符串为索引,(HEAD -> master)意思是HEAD是一个指针,他总指向最近一次提交

      用 -p 参数可以查看更仔细的日志,包含每次提交的改动细节

      用 -3 等数字可以限制只输出最近几次提交的日志,q 退出

    • 当你commit提交文件时遗漏了某些文件,或者注释有误

      git commit --amend

    $ git commit -m 'initial commit'
    $ git add forgotten_file
    $ git commit --amend -m ""  # 会将暂存区文件提交,且两次提交只有一次记录,采用后者的注释
    
    • 当你commit、push提交的文件有误,你想撤销commit操作时

      • 简单安全的做法是修改后再次提交

      • 如果要回到上一次提交的版本,可以撤销commit操作,但这可能存在风险

    git revert HEAD  
    # HEAD 指向最近一次提交,你也可以通过log获取索引来撤销之前的某次commit
    # 会生成一次 commit 日志
    # :q 返回终端
    git push origin master
    
    • git reset 撤销编辑、撤销提交

      首先我们要了解Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。如下图

      此时本地仓库对应的是commit4,git reset 可以让本地仓库对应的指针变为commit3或是commit1等之前的版本,当然,也可以变为commit4之后的某个commit,如commit5

      Git 的分支,其实本质上仅仅是指向提交对象的可变指针。参考

      • git reset --hard HEAD 将暂存区、工作区中的内容恢复成上一次提交的版本(快照),换句话说你没commit的内容都会被擦除。如果你刚commit,想撤销这次commit,那么可以把HEAD换成其它索引(危险!会丢失工作内容,建议采取下面的--soft)

      • git reset --soft <index> 将HEAD指向指定的索引,即回退到某个版本,假设从4回到3,那么3往后的操作会被放到暂存区。参考

      reset和分支有关,如果操作后无法push,可以使用 -f 强制push



    五、远程仓库

    创建仓库后,使用clone即可将仓库克隆到本地,后续还能使用pull

    但是push需要身份验证

    Windows会直接跳转网页要求认证,后续无需认证。使用https比较方便,而且Windows挂梯子扶墙也比较容易

    Linux建议使用SSH链接,使用https链接每次都需要输入账号密码,或需要配置文件,而且https会被墙,相比之下ssh就能流畅访问

    linux使用ssh连接github步骤

    • 生成ssh密钥
    ssh-keygen # 生成ssh key,默认即可,一直回车,最后会生成一对公钥和私钥文件
    # -t 指定密钥类型,默认是 rsa ,可以省略。
    # -C 设置注释文字,比如邮箱。
    
    cat /root/.ssh/id_rsa.pub # 将公钥内容复制
    
    • github添加公钥

      登录 GitHub,打开 Personal settings 页面,选择 SSH and GPG keys 选项添加

    • 测试

      ssh -T git@github.com

    如果之前 clone 了 https 的链接,导致origin是https的,更改origin的方法是:

    # 查看远程仓库地址
    git remote -v
    # 删除
    git remote rm origin
    # 添加
    git remote add origin [url]
    



  • 相关阅读:
    函数阶乘累加求和
    函数
    枚举
    变量定义在主函数外面
    输入班级人数,姓名,分数,创建集合,并按照表格样式打印出来
    控制台输入输出
    Chapter 4、流程控制(一)--- 条件语句 (23rd,Feb)
    实战练习P62 ---比较大小,求矩形面积
    Chapter 3、Java语法基础(三)--- 运算符、数据类型转换 (22nd,Feb)
    字符集
  • 原文地址:https://www.cnblogs.com/yunmuq/p/14790807.html
Copyright © 2020-2023  润新知