Git 修改commit提交信息
一、commit到本地版本库
修改最近一次提交的commit
1、命令行执行:git commit --amend,git commit –amend既可以对上次提交的内容进行修改,也可以修改提交说明
2、利用vim语法,点击i进入编辑模式,修改对应文本内容
3、点击Esc退出编辑模式
4、按键:wq强制退出
二、push到远程之后(也适用于本地commit且未push到远端)
1、git log获取历史提交信息
2、2. git rebase -i HEAD~6,这里的6是指展示最近6次push
3、找到需要修改添加提交信息的push,讲其最前面的pick 修改为edit, 然后执行按ESC退出编辑,再执行 :wq 退出
4、执行git commit --amend,按照commit到本地版本库的方式修改即可
5、git rebase --continue
6、push到远程:git push origin <your branch nama> -f
1.origin
源仓库,一般为git clone的仓库,如bannidaer/fastjson,克隆后默认提交和拉取的地址
2.upstream
为上游仓库,一般为origin fork 的仓库,如alibaba/fastjson
添加上游仓库:
git remote add upstream https://code.xxuu.com.cn/kmcdn/cloud-custom-operator.git
3.git tag相关操作
https://blog.csdn.net/jiaofeng_hou/article/details/78793854
创建git tag,根据某个tag创建分支
https://www.cnblogs.com/shujiying/p/14261327.html
4.git 忽略本地的commit,强行拉取
git fetch --all
git reset --hard origin
git pull
git checkout -b feature/v1.0-operational 在当前分支基础上新增一个分支 feature/v1.0-operational
git checkout . 忽略本地的改动
git branch 查看当前是在哪个分支上
git fetch --all
git checkout dev2 切换到 dev2 分支上
先 git checkout dev2 然后 git checkout -b vali-dev2 在dev2分支的基础上创建新分支 vali-dev2
git checkout master 切换到 master 分支上
git checkout vali-dev2 切换到 vali-dev2 分支上
git add .
git revert后的vim退出:一直按住esc ,再连续按大写的z两次
go build -mod=vendor main.go
git log --oneline 一次commit注释放在一行内显示
git fetch --all
git rebase origin/dev2 将远端的dev2的分支最新代码合并到本地的分支上(vali-dev2) 注意这里的origin 后面跟具体的分支名
【删除分支,谨慎操作!!】
删除本地分支 git branch -d
删除远程分支 git push origin --delete mybranchname
【删除分支,谨慎操作!!】
清理本地分支:
git remote prune origin
git fetch --all
git rebase origin/dev
去解决冲突
git rebase --continue
git reset --mixed HEAD~4
git add .
git commit -m "update"
git checkout origin/dev3
git branch -D vali-dev2
git branch
git checkout -b vali-dev3
git log --oneline
- git add 文件名 将文件加入本次提交
- git commit -m "本次提交的注释"
- git reset --hard HEAD~2 往前回溯两个版本
- git reset --hard 版本号 往前回溯到某个版本
- git log 查看提交记录
- git reflog 查看每一次提交的命令及版本号
- git checkout -- 文件名 放弃工作区内的修改。(文件的修改也会回滚)
- git reset HEAD 文件名 撤销缓存区的修改。
- git rm 文件名 删除文件(操作完成后必须要git commit -m "说明"才是真正从版本库中删除)
- 误删 执行git checkout --文件名 即可恢复。
- 要关联一个远程库,将本地的仓库和远端的仓库进行绑定。
git remote add origin git@github.com:simba/learngit.git git push -u origin master 必须按先后顺序操作。
说明:simba是你的github账号, learngit 是在github上建的仓库名。
远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
- 将本地的master分支的最新代码提交到github。(此操作是基于上一条操作的。)
git push origin master
下载远程代码到本地:
- git clone git@github.com:liushisan/gitskills001.git
说明:此处的git@github.com:liushisan/gitskills001.git需要替换成你自己的git地址。
如果提示:
E:\github>git clone git@github.com:liushisan/gitskills0
Cloning into 'gitskills001'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
则是你的公钥问题。重新配公钥就解决了。
git checkout -b feature/v1.0-operational 在当前分支基础上新增一个分支 feature/v1.0-operational
git checkout . 忽略本地的改动
git branch 查看当前是在哪个分支上
git fetch --all
git checkout dev2 切换到 dev2 分支上
先 git checkout dev2 然后 git checkout -b vali-dev2 在dev2分支的基础上创建新分支 vali-dev2
git checkout master 切换到 master 分支上
git checkout vali-dev2 切换到 vali-dev2 分支上
git add .
git revert后的vim退出:一直按住esc ,再连续按大写的z两次
go build -mod=vendor main.go
git log --oneline 一次commit注释放在一行内显示
git fetch --all
git rebase origin/dev2 将远端的dev2的分支最新代码合并到本地的分支上(vali-dev2)
【删除分支,谨慎操作!!】
删除本地分支 git branch -d
删除远程分支 git push origin --delete mybranchname
【删除分支,谨慎操作!!】
清理本地分支:
git remote prune origin
git fetch --all
git rebase origin/dev
去解决冲突
git rebase --continue
git reset --mixed HEAD~4
git add .
git commit -m "update"
git checkout origin/dev3
git branch -D vali-dev2
git branch
git checkout -b vali-dev3
git log --oneline
git status
git add .
git commit -m "update"
git log --oneline
git fetch --all
git rebase origin/dev3
git log --oneline
git status
git log --oneline
git reset --mixed HEAD~5
git remote rename origin originhttp
git remote add origin ssh://git@code.baidu.com.cn:8004/git/videos-go.git
git找回rebase误删的文件
git reflog
git checkout -- .
0、git checkout lch-dev3
1、git fetch --all
如果有冲突,先解决冲突 VCS --》 GIT --》 resolve conflicts
2、git rebase origin/dev3 然后多等待一会儿(编辑器卡顿)
3、git status 检查本地代码状态,判断是否有冲突,判断是否rebase完毕,
如果依然有冲突,VCS解决冲突,然后 git rebase --continue
windows下配置免密登录
git config credential.helper manager
再次pull时提示输入github的账号免密,操作即可。
git 忽略本地的commit,强行拉取
git fetch --all
git reset --hard origin
git pull
git checkout -b feature/v1.0-operational 在当前分支基础上新增一个分支 feature/v1.0-operational
git checkout . 忽略本地的改动
git branch 查看当前是在哪个分支上
git fetch --all
git checkout dev2 切换到 dev2 分支上
先 git checkout dev2 然后 git checkout -b vali-dev2 在dev2分支的基础上创建新分支 vali-dev2
git checkout master 切换到 master 分支上
git checkout vali-dev2 切换到 vali-dev2 分支上
git add .
git revert后的vim退出:一直按住esc ,再连续按大写的z两次
go build -mod=vendor main.go
git log --oneline 一次commit注释放在一行内显示
git fetch --all
git rebase origin/dev2 将远端的dev2的分支最新代码合并到本地的分支上(vali-dev2) 注意这里的origin 后面跟具体的分支名
【删除分支,谨慎操作!!】
删除本地分支 git branch -d
删除远程分支 git push origin --delete mybranchname
【删除分支,谨慎操作!!】
清理本地分支:
git remote prune origin
git fetch --all
git rebase origin/dev
去解决冲突
git rebase --continue
git reset --mixed HEAD~4
git add .
git commit -m "update"
git checkout origin/dev3
git branch -D vali-dev2
git branch
git checkout -b vali-dev3
git log --oneline
在feature1.0分支上分别提交了 bc17f25、1bba452、59e67d 三个commit
现在需要把 1bba452、59e67d 这两次提交的内容合并到feature2.0分支上。
切换到feature2.0分支上。然后执行 git cherry-pick 1bba452 59e67d ,然后执行git push origin feature2.0 就搞定了。
git统计提交行数
git log --since="2003-01-01" --until="2024-01-11" --author="提交者帐号" --pretty=tformat: --numstat |grep -v 'vendor/'|awk '{ add +=$1;subs +=$2; loc += $1 - $2} END { printf "Added lines: %s,Removed lines: %s, Total lines: %s\n", add, subs, loc }' -
calculate.sh
#!/bin/sh
root_dir="/home/liuch/code-stats"
for dir in "$root_dir"/*; do
if [ -d "$dir" ]; then
echo "counting dir: $dir"
cd $dir
git log --since="2000-01-01" --until="2020-04-12" --pretty=tformat: --numstat | grep -v 'vendor/' | grep - v third_party | grep -v 'pkg/k8s/sdk' | grep -v '.pb.go'| grep -v 'pb.validate.go' | awk '{ add += $1; subs +=$2; loc += $1 - $2 } END { printf "Added lines: %s, Removed lines: %s, Total lines: %s\n", add, subs, loc }' -
echo ""
fi
done