目录
自己实际使用中常用的git功能备忘
配置命令:
- git config --global user.name "用户名"
- git config --global user.email "邮箱"
查看命令:
- 查看用户名git config --global user.name
- 查看密码 git config --global user.password
- 查看邮箱git config --global user.email
- 查看git版本git --version
- 查看配置信息git config --list
- 修改用户名git config --global user.name "新的用户名"
- 修改密码git config --global user.password "新的密码"
- 修改邮箱git config --global user.email "新的邮箱"
-
- 用户名过多时:
- git config --global --replace-all user.name "用户名"
- git config --global --replace-all uesr.email "邮箱"
最后输入下方命令保存,供以后的git程序使用
git config --global credential.helper store
首先,新建一个文件夹做自己的代码仓库。
git在文件夹内右键,点击git bash here

SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看有没有id_rsa和id_rsa.pub,有 .pub 后缀的文件就是公钥,另一个文件则是密钥。
- cd ~/.ssh
- 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: 本地的密钥对就生成了。
查看生成的公钥:
cat ~/.ssh/id_rsa.pub
复制生成的公钥
登录github账户-》点击头像-》setting-》ssh key
进入git网址,找到自己想下载的代码,复制ssh
回到git bash
git clone 刚刚复制的地址
git pull
git pull origin 某分支名称
- 1.没有执行 git add的:
- git checkout – filepathname
- 放弃所有
- git checkout .
-
- 2.已经执行git add缓存了的:
- git reset HEAD filepathname
- 放弃所有
- git reset HEAD .
-
- 3.已经用 git commit 提交了的:
- 可以用命令回退到上一次commit的状态
- git reset --hard HEAD^
- 可以用命令回退到任意版本:
- git reset --hard commitid
-
- 放弃本地修改,强制和远程同步
- 在使用Git的过程中,有些时候我们只想要git服务器中的最新版本的项目,对于本地的项目中修改不做任何理会,就需要用到Git pull的强制覆盖,具体代码如下:
- git fetch --all
- git reset --hard origin/master
- git pull
在项目目录下,右键-》git bash here
- 1、统计这个仓库内 所有代码行数
- 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 }'
-
- 2、统计这个仓库内 每个人的增删行数
- 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
-
- 3、 统计个人代码量
- 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 }' -
-
- 4、统计某个人 在某段时间内的代码量
- 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
- 比如说使用master分支覆盖dev分支
-
- 1、切换到dev分支
-
- git checkout dev
-
- 2、设置本地分支代码的远程为master分支
-
- git reset --hard origin/master
-
- 3、本地代码已覆盖,强制推送本地分支到远程即可
-
- git push -f
-
- 这样就实现了将master分支的代码覆盖到dev分支上
- 步骤:
- git log --pretty=oneline//查commit-id
- 在英文状态下按“q”,就可以退出git log状态。
- git checkout 回退的commit-id//回退至指定分支
- 或git revert HEAD~n..HEAD//回退n次
- git push -f origin <branch_name> //强制推送
- 保存并退出
- 1、 按 Esc 键退出编辑模式,英文模式下输入 :wq ,然后回车(write and quit)。
- 2、按 Esc 键退出编辑模式,大写英文模式下输入 ZZ ,然后回车。
-
- 不保存并退出
- 1、按 Esc 键退出编辑模式,英文模式下输入 :q! ,然后回车
在分支1进行提交,想在分支2只拿到这个提交
idea下方version control->log->当前分支置为分支2-》查询分支置为分支1-》具体想拿来的记录右键-》cherry-pick

或者git方式
- git cherry-pick 记录id
- git push
先选中最早的那条记录,右击选择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