• git的使用(从配置到常用命令)


    目录

    一、git配置用户名和邮箱(一次)

     二、git配置ssh生成密钥对(一次)

    三、添加公钥到你的远程仓库github(一次)

    四、拷贝git仓库到本地

    五、git使用

     5.1 远程信息同步至本地(如更新后的分支列表)

    5.2 远程某分支同步至当前分支

    5.3 放弃本地所有修改

    5.4 git查看代码量

    5.5 git使用某一分支完全覆盖另一分支

    5.6 回滚

    5.7 git commit 退出

    六、软件的使用

    6.1 idea合并某个分支的某次提交

    6.2 将多次Commit合并成一


    自己实际使用中常用的git功能备忘

    一、git配置用户名和邮箱(一次)

    配置命令:

    1. git config --global user.name "用户名"
    2. git config --global user.email "邮箱"

    查看命令:

    1. 查看用户名git config --global user.name
    2. 查看密码 git config --global user.password
    3. 查看邮箱git config --global user.email
    4. 查看git版本git --version
    5. 查看配置信息git config --list
    6. 修改用户名git config --global user.name "新的用户名"
    7. 修改密码git config --global user.password "新的密码"
    8. 修改邮箱git config --global user.email "新的邮箱"
    9. 用户名过多时:
    10. git config --global --replace-all user.name "用户名"
    11. git config --global --replace-all uesr.email "邮箱"

    最后输入下方命令保存,供以后的git程序使用

    git config --global credential.helper store

     二、git配置ssh生成密钥对(一次)

    首先,新建一个文件夹做自己的代码仓库。

    git在文件夹内右键,点击git bash here 

    SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看有没有id_rsa和id_rsa.pub,有 .pub 后缀的文件就是公钥,另一个文件则是密钥。

    1. cd ~/.ssh
    2. ls

    假如没有这些文件,甚至连 .ssh 目录都没有,可以用 ssh-keygen 来创建,命令如下:

    ssh-keygen -t rsa -C "你的邮箱"

    Enter same passphrase again: [Type passphrase again]提示你输入密码

    也可以不输密码,一直回车。

    直至显示:Your public key has been saved in ****/.ssh/id_rsa.pub. The key fingerprint is: 本地的密钥对就生成了。

    三、添加公钥到你的远程仓库github(一次)

    查看生成的公钥:

    cat ~/.ssh/id_rsa.pub

    复制生成的公钥

    登录github账户-》点击头像-》setting-》ssh key

    四、拷贝git仓库到本地

    进入git网址,找到自己想下载的代码,复制ssh

     回到git bash

    git clone 刚刚复制的地址

    五、git使用

     5.1 远程信息同步至本地(如更新后的分支列表)

    git pull

    5.2 远程某分支同步至当前分支

    git pull origin 某分支名称

    5.3 放弃本地所有修改

    1. 1.没有执行 git add的:
    2. git checkout – filepathname
    3. 放弃所有
    4. git checkout .
    5. 2.已经执行git add缓存了的:
    6. git reset HEAD filepathname
    7. 放弃所有
    8. git reset HEAD .
    9. 3.已经用 git commit 提交了的:
    10. 可以用命令回退到上一次commit的状态
    11. git reset --hard HEAD^
    12. 可以用命令回退到任意版本:
    13. git reset --hard commitid
    14. 放弃本地修改,强制和远程同步
    15. 在使用Git的过程中,有些时候我们只想要git服务器中的最新版本的项目,对于本地的项目中修改不做任何理会,就需要用到Git pull的强制覆盖,具体代码如下:
    16. git fetch --all
    17. git reset --hard origin/master
    18. git pull

    5.4 git查看代码量

    在项目目录下,右键-》git bash here

    1. 1、统计这个仓库内 所有代码行数
    2. git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
    3. 2、统计这个仓库内 每个人的增删行数
    4. git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
    5. 3、 统计个人代码量
    6. git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
    7. 4、统计某个人 在某段时间内的代码量
    8. git log --author=username --since=2023-01-01 --until=2023-12-31 --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | grep "\(.html\|.java\|.xml\|.properties\)$" | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done

    5.5 git使用某一分支完全覆盖另一分支

    1. 比如说使用master分支覆盖dev分支
    2. 1、切换到dev分支
    3. git checkout dev
    4. 2、设置本地分支代码的远程为master分支
    5. git reset --hard origin/master
    6. 3、本地代码已覆盖,强制推送本地分支到远程即可
    7. git push -f
    8. 这样就实现了将master分支的代码覆盖到dev分支上

    5.6 回滚

    1. 步骤:
    2. git log --pretty=oneline//查commit-id
    3. 在英文状态下按“q”,就可以退出git log状态。
    4. git checkout 回退的commit-id//回退至指定分支
    5. 或git revert HEAD~n..HEAD//回退n次
    6. git push -f origin <branch_name> //强制推送

    5.7 git commit 退出

    1. 保存并退出
    2.     1、 按 Esc 键退出编辑模式,英文模式下输入 :wq ,然后回车(write and quit)。
    3.     2、按 Esc 键退出编辑模式,大写英文模式下输入 ZZ ,然后回车。
    4. 不保存并退出
    5.    1、按 Esc 键退出编辑模式,英文模式下输入 :q! ,然后回车

    六、软件的使用

    6.1 idea合并某个分支的某次提交

    在分支1进行提交,想在分支2只拿到这个提交

    idea下方version control->log->当前分支置为分支2-》查询分支置为分支1-》具体想拿来的记录右键-》cherry-pick

    或者git方式

    1. git cherry-pick 记录id
    2. git push

    6.2 将多次Commit合并成一个

    先选中最早的那条记录,右击选择Interactivity Rebase from Here...

    把除了第一条记录的Action改成squash,点击Start Rebasing

    pick:保留该commit(缩写:p)
    reword:保留该commit,但我需要修改该commit的注释(缩写:r)
    edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
    squash:将该commit和前一个commit合并(缩写:s)
    fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
    exec:执行shell命令(缩写:x)
    drop:我要丢弃该commit(缩写:d)

     修改提交的日志,点击Continue Rebasing

  • 相关阅读:
    Linux 零拷贝sendfile函数
    云原生之容器编排实践-在CentOS7上安装使用Docker
    我的创作纪念日-成为CSDN创作者的 第4096天
    Java中 数组的定义与使用
    你安全吗?丨黑客掌握的翻垃圾技术有哪些?大家要警惕!
    如何修改glog由进程生成日志为按天输出日志
    解析ZooKeeper源码中的Leader选举
    Java8新特性
    母婴小程序定制开发
    经典排序——帮你解决关于排序的绝大多数问题
  • 原文地址:https://blog.csdn.net/weixin_44641804/article/details/127304121