关于git的用法

    科技2022-07-12  121

    本文用于记录自己已知关于git的用法

    git clone '仓库链接'

    克隆git仓库,常用HTTPS、SSH等协议。HTTPS协议只要有链接,无需其他条件。而SSH协议,需要先上传公钥到git网站上,本地需要有对应的私钥才能克隆,方法见文章最后。

    例: git clone https://github.com/lindorx/train.git git clone git@github.com:lindorx/train.git

    git log

    本命令可以打印所有commit。commit类似于一个修改信息,git中所有的改动会变成一个commit,被一个40位的“commit id”标记,然后被提交,log可以打印所有commit的提交记录。每个commit提交时都要有一个说明信息,这应该是为了明确每个改动,反正当初就是这么设计的。以下为一些我知道的用法:

    #打印两个commit id之间的记录,两个id用“..”连接 git log e4c26faa426c17274884f759f708bc9ee22fd59a..5712c3ed549e0dddee096bce24df41db15cb80b5 #打印只属于主线的commit记录 git log --first-parent #单行打印,只会打印出commit id和其标题信息 git log --pretty=oneline #打印指定版本的commit,例如打印linux-5.8的commit git log v5.8

    git grep '字符串' [commit id]

    这个命令用来在当前的库中查找指定字符串,后面可以跟上一个commit的id,可以在指定的commit中查找。

    #例如在当前仓库中查找函数test()位于哪个文件 git grep "test()"

    git archive 'commit id'

    此命令用来将指定commit所处版本的代码导出,简单来说把指定时间的源代码打包成一个文件。

    #例如打印linux-5.9的代码,打包格式为“tar.gz”,输出文件名“linux.5.9.tar.gz” git archive --format tar.gz --output "linux.5.9.tar.gz" 856deb866d16e29bd65952e0289066f6078af773

    git format-patch

    导出两个commit之间的补丁

    #导出两个commit之间kenel/sched文件夹下的补丁到patchs文件夹,“..”链接两个commit,“--”指定文件夹 git format-patch --first-parent -o patchs 84df9525b0c27f3ebc2ebb1864fa62a97fdedb7d..169b93899c7dfb93a2b57da8e3505da9b2afcf5c -- kernel/sched

    git show 'commit id'

    展示指定commit的内容

    #展示c598c8a46d01723d6445b26313717a7f315e44dd的修改 git show c598c8a46d01723d6445b26313717a7f315e44dd #展示c598c8a46d01723d6445b26313717a7f315e44dd中Makefile文件的内容,通过“:”指定目标文件,之间不能有空格 git show c598c8a46d01723d6445b26313717a7f315e44dd:Makefile

    git status

    查看当前的修改记录,以确定要提交的内容

     

    git add ‘文件’

    提交指定文件到git缓存区

    #提交所有修改 git add . #提交文件“test.c” git add test.c

    git push

    提交git缓存区的内容

     

    git pull

    拉取最新的仓库数据,其实就是同步

     

    git config --global

    用来设置用户信息,一般常用来设置用户名和邮箱

    #设置git用户名 git config --global user.name "12345" git config --global user.email "12345@163.com"

    git cherry-pick 'commit-id'

    将另一条分支的提交合并到当前分支


    关于ssh的使用。使用如下命令生成密钥

    #“12345@163.com”为邮箱 ssh-keygen -t rsa -C "12345@163.com"

    此时在用户目录会产生一个“.ssh”隐藏文件夹,这个文件夹有两个文件,“id_rsa”和“id_rsa.pub”,其中“id_rsa”的内容为私钥,就是自己保留的密钥。“id_rsa.pub”的内容为公钥,需要上传到服务端,ssh进行通信是会验证这两个钥匙是不是对应的,如果不是将禁止通信,因此这个文件夹万不可删,否则得从头配置生成。

    Processed: 0.014, SQL: 8