奇怪的知识又增加了3——git

Git简介

开源的分布式版本控制系统

# 安装
    sudo apt install git

常用的基本操作

# 下载远程库代码
    git clone <网址>              # 当http连不上时,把http改成git
    git clone -b <分支名> <网址>

# 切换分支与新建分支
    git branch -av                      # 查看所有分支
    # 选项
    # -a, --all             list both remote-tracking and local branches
    # -v, --verbose         show hash and subject, give twice for upstream branch

    git branch branchName               # 创建分支
    git checkout branchName             # 切换分支
    git checkout -b branchName          # 创建并切换到分支,等同于上面两条

# 添加新文件到工程
    git add <file1> <file2>             # 可添加一个或多个文件到

# 查看是否有未提交的修改(包括新建文件和修改文件)
    $ git status

# 查看具体的修改内容,删除的内容为红色减号,增加的内容为绿色加号   以行为单位,提示
    git diff            # 所有修改
    git diff <file1>

# 提交修改
    git commit <file1> <file2> -m "message"     # 提交一个或多个文件的修改  -m 注释提交的原因
    git commit -a -m "message"                  # 提交所有修改

# 查看提交日志
    git log 
    git log --pretty=oneline                    # 每条commit用一行显示 分布式控制,避免版本冲突,因此commitID不是1234
    git reflog                                  # 记录每一次的命令,可以查看干掉的日志,查看历史版本号/命令

# 回退
    # 方式一:reset 
        git reset --hard HEAD^                  # 回退:HEAD表示当前版本 一个^表示上一个,两个^表示上上个,HEAD~100表示上100个
        git reset --hard <刚干掉的版本号>          # 回退到指定版本号,比如错误回退后,可以根据版本号再还原回去
    # 方式二:revert
        git revert -n <版本号>

# 上传远程与更新本地
    git push [选项] origin <分支名>              # 将<分支名>推送到origin主机的对应分支
    # 选项
    # -f    强推
    # -u    如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push

    # 拉取
    git fetch <远程主机名,如origin> <分支名>         # 拉取
    git pull <远程主机名,如origin> <分支名>      # 拉取并merge

# 合并分支
    git merge <要合并到本分支的分支名> 

# 恢复误删分支
    git branch <分支名> <hash_val>

创建与配置本地仓库

# 创建仓库目录
    $ mkdir repo_test1 && cd repo_test1

# 初始化
    $ git init 
        # 这时,会在该目录下创建一个 .git 目录用于跟踪管理版本库,并提示
        Initialized empty Git repository in [自己的目录]/git_test/repo_test1/.git/

# 配置仓库所有者信息
    # Omit --global to set the identity only in this repository.
    $ git config --global user.email "you@example.com"
    $ git config --global user.name "Your Name"

关联本地与远程仓库

先有远程仓库

  1. 建立远程仓库
  2. git clone 到本地仓库

先有本地仓库
( 待补充… )
关联本地仓库与远程仓库

关于回退

  1. 回退方式一:git reset,适用场景:最近几个错误版本全部舍弃
    在这里插入图片描述
  2. 回退方式二 :git revert,适用场景:回退中间某个版本,保留最近版本
    在这里插入图片描述
    !!! git reset –hard 撤销到某次提交,git revert 撤销某次提交,一般建议用revert
# 查看提交日志
    git log --pretty=oneline

# 回退方式一 git reset   
    $ git reset --hard <版本号>
# 推上去,使用reset时,如果用不加选项“-f”会报错,因为本地库HEAD指向的版本比远程库的要旧
    $ git push -f origin <分支名> 

# 回退方式二 git revert
    $ git revert -n <版本号>
# 推上去
    $ git push origin <分支名> 

# 更新本地
    $ git pull

修改历史commit

https://blog.csdn.net/lxf0613050210/article/details/52525083 每一个commit都要单独修改。迫不得已不要修改,需要强制commit

摘抄

master & origin/master

在 clone 完成之后,Git 会自动为你将此远程仓库命名为 origin(origin 只相当于一个别名,运行 git remote –v 或者查看 .git/config 可以看到 origin 的含义),并下载其中所有的数据,建立一个指向它的 master 分支的指针,我们用 (远程仓库名)/(分支名) 这样的形式表示远程分支,所以 origin/master 指向的是一个 remote branch(从那个 branch 我们 clone 数据到本地),但你无法在本地更改其数据。
同时,Git 会建立一个属于你自己的本地 master 分支,它指向的是你刚刚从 remote server 传到你本地的副本。随着你不断的改动文件,git add , git commit,master 的指向会自动移动,你也可以通过merge(fast forward)来移动 master 的指向。
————————————————
原文链接:https://blog.csdn.net/weixin_34075268/article/details/85869357

pull & clone & fetch

从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
git pull相当于是从远程获取最新版本并merge(合并)到本地 git pull = git fetch + git merge,git fetch更安全一些
————————————————
版权声明:本文为CSDN博主「zhou_xiaomiao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhou_xiaomiao/article/details/53185712

git fetch 将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
git pull 将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

参考

  1. https://blog.csdn.net/lvsehaiyang1993/article/details/80821976
  2. GitHub进行版本回退
  3. git checkout 命令详解
  4. Git恢复之前版本的两种方法reset、revert(图文详解)
  5. git clone、git pull和git fetch的用法及区别

Leave a Reply

Your email address will not be published. Required fields are marked *