zoukankan      html  css  js  c++  java
  • Git 学习笔记

    git 学习笔记

    本文仅记录实验的过程和发现的有趣的东西,不总结任何知识点。

    2021.1.20

    ssh 公钥生成

    ssh-keygen -t rsa -C "testkey"
    

    -t 后面接指定的公钥类型。不加的话会默认生成 RSA 。(所以可以不加)

    在生成公钥的目录下(如 ~/.ssh)可以查看公钥 id_rsa.pub。复制出来然后再 github 或 gitee 上设置就行了。

    创建时如果输入了 passphrase 之后使用私钥连接时需要输入你在此时设置的密码。

    ssh -T git@github.com
    

    如果是 disconnect 可以多试几次,直到看到 You've successfully authenticated(证明) 的提示。

    说起来好像 -p22 可以用来指定端口。不过我不太能理解会发生什么就是了。

    不加 -T 会提示 PTY(虚拟终端) allocation(分配) request failed

    -T 的功能是 Disable pseudo-terminal(伪终端) allocation

    好家伙这都什么跟什么,我怎么啥都看不懂。

    版本恢复&修改提交

    嗯......总之就是把代码复原......吧。

    vim temp.c #随便写点东西上去
    git add temp.c #添加追踪(?或者叫暂存)
    #git restore --staged temp.c 可以取消暂存
    vim temp.c #随便改点东西
    git status #可以看看是否被追踪 也会给出提示 是个好东西
    git restore temp.c #恢复为暂存的版本
    git commit temp.c #将修改提交上去(?)
    #这玩意会提示你输入修改的说明 也可以这么来
    #git commit -m "shuoming"
    git push git@github.com:xxxx/xxx.git #如果设定好了origin或是别的什么东西也可以不加链接
    

    啊这个 git commit 其实不用加东西的 会默认把暂存区的东西提交上去。

    git log 则可以查看提交记录,暂时不知道能干嘛

    git pull origin 从 remote 库里拉取内容。啊这个 origin 好像是自己命名的。额...啥时候命名的呢...总之好像可以在 .git/config 里面改

    origin 指向的也可以改。我一开始指向的是 https 的链接,把它改成 ssh 的之后方便了不少。(不用输入密码)

    嗯......明天再学一下 LXY 大佬之前给我看过的版本回退,还有学一下部长讲的分支吧。

    2021.1.21

    配置 name 和 email

    昨天没有配置全局。今天重新配一下,顺便修改重新创建一个仓库。

    git config --global user.name "LKY"
    git config --global user.email "qing_lkyi@qq.com"
    

    全局配置的修改位置是 ~/.gitconfig
    root 用户我就不知道了 没去试

    本地创建仓库与分支实验

    昨天已经直接在 github 上开了一个 clone 下来了。今天再开一个主要是想体验流程。

    初始化之后会默认生成一个叫 master 的主分支。

    顺带一提,没有任何文件的话似乎没法创建一个新的分支,也没法给分支改名。

    分支的重命名可以通过下面的方式

    git branch -m oldname newname
    

    oldname 不打的话是默认修改当前分支的名字

    下面搞一点骚操作

    .git 里面,可以找到 .git/HEAD

    ref: refs/heads/master
    

    如果把 master 修改成 main 然后运行 git branch

    发现,master 还是 master,并没有变成 main
    但是 git status 会提示你原本在 master 已经提交的文件需要提交

    提交之后再次查看分支,会发现并不是 master 被重命名为了 main,而是在 master 之外重新创建了一条名为 main 的分支

    所以这波下来究竟有什么意义呢。emmm,我也不知道(逃

    果然我还是没搞懂这个 HEAD 文件是干啥的。

    顺带一提,可以在 .git/refs/heads 里找到所有的分支。

    分支的切换指令如下

    # Way 1
    git branch newBranch
    git checkout newBranch
    # Way 2
    # -b 会自动创建一个分支,若分支以存在,则会失效
    git checkout -b newBranch
    # Way 3
    # 方法2可以加一个 oldBranch 功能是复制并创建
    # 不加的话默认是由当前分支创建一个新的分支
    # 这二者的区别体现在分支不同且内容不同时,
    # 你创建的新分支的内容在一开始时跟哪个分支的是一样的。
    # 还有一个小细节会在合并的时候体现出来
    git checkout -b newBranch oldBranch
    

    分支可以合并 使用 git merge branch1 就可以将 branch1 合并到当前分支。

    按部长的博客,我也搞了两个分支,且改了不同的内容。但是合并时并没有像部长那样提示冲突。

    我怀疑是我的第二个分支是基于 branch1 创建的,所以无视冲突直接合并了。

    果然,在同一个分支创建的两个分支合并到该分支里,才会有冲突提示。

    冲突的处理

    打开发生冲突的文件,会发现冲突的部分被用明显的方式标识出来了。

    直接修改文件的内容,然后正常地 add 和 commit 就行了。

    add 之后跑一下 git status 看看冲突是否已经解决。解决了就可以 commit 了。否则可能还有文件的冲突没有处理。

    明天再看一下版本回退啊删除之类的东西吧。

  • 相关阅读:
    Seam jBPM integration
    NetBeans 时事通讯(刊号 # 34 Nov 11, 2008)
    Seam jBPM integration
    小学生新闻联播看多了,写的作文
    位运算中的异或运算 .
    按位与、或、异或等运算方法
    C++中L和_T()之区别
    ExtJS入门之一 类与继承
    结构体初始化
    Ext.chart 包的类图
  • 原文地址:https://www.cnblogs.com/Qing-LKY/p/git-learning.html
Copyright © 2011-2022 走看看