设置仓库用户名
bash
#全局配置,
#项目单独配置,写入项目中.git/config
git config --global user.name "name"
git config --global user.email "xxxxxxxxxx@qq.com"
vscode 不显示远程分支
bash
git remote update origin --prune
撤销上一次提交
bash
git log
git reset --hard 需要回退的版本的hash值
git push origin HEAD --force
修改上一次提交的commit信息
bash
git commit --amend
#或
git commit --amend -m "msg"
git 合并某个提交commit到指定的分支上
git cherry-pick 62ecb3
将一个分支的某个提交合并到另一个分支
git cherry-pick 命令可以将某个分支上的特定提交应用到当前分支上。
找到提交的哈希值
bash
git log 源分支
Cherry-pick 提交
使用 cherry-pick 命令将该提交合并到当前分支。
bash
git cherry-pick 提交的哈希值
解决冲突
解决冲突后,添加解决冲突后的文件:
git add 解决冲突后的文件
继续 cherry-pick 过程:
bash
git cherry-pick --continue
链接:https://blog.csdn.net/qq_41883423/article/details/140776493
合并某个分支上的一系列commits
在一些特性情况下,合并单个commit并不够,你需要合并一系列相连的commits。这种情况下就不要选择cherry-pick了,rebase 更适合。还以上例为例,假设你需要合并feature分支的commit76cada ~62ecb3 到master分支。
首先需要基于feature创建一个新的分支,并指明新分支的最后一个commit:
git checkout -bnewbranch 62ecb3
1
然后,rebase这个新分支的commit到master(--ontomaster)。76cada^ 指明你想从哪个特定的commit开始。
git rebase --ontomaster 76cada^
1
得到的结果就是feature分支的commit 76cada ~62ecb3 都被合并到了master分支。
常用
列出所有本地分支
bash
git branch
列出所有远程分支
bash
git branch -r
删除本地分支xxx
bash
git branch -D xxx
管理远程仓库的列表
bash
git remote
切换分支xxx(切换远程分支,自动关联远程分支)
bash
git checkout xxx
撤销暂存区中某个文件的修改
bash
git checkout xxx.c
撤销暂存区中所有修改
bash
git checkout .
新建并切换分支xxx
bash
git checkout -b xxx
从远程仓库拉取最新的提交,但不会自动合并到当前分支。
bash
git fetch
从远程仓库拉取最新的提交并合并当前分支
bash
git pull
所以有人说git pull = git fetch + git merge
生成最近的1次commit的patch
bash
git format-patch HEAD^
将名字为0001-limit-log-function.patch的patch打上
bash
git am 0001-limit-log-function.patch
临时保存分支修改的内容就像是,切换分支使用,git stash可以保存多次修改内容
bash
git stash
恢复最近一次stash的修改的内容
bash
git stash pop
恢复之前多次stash中的具体那次的保存修改内容
bash
git stash apply xxx
列出当前工作区stash的所有记录
bash
git stash list
删除stash的所有记录
bash
git stash clear
回退你已提交具体的commitID,并将commit的修改内容放回到暂存区
bash
git reset --hard commitID
清空工作目录下编译出来的中间产物
bash
git clean -df
重命名分支
bash
git branch -m oldNme newName
生成某个区间的patch
bash
git format-patch commitID..commitID > lsdkall.patch
制作历史提交具体某次的补丁
bash
git format-patch commitID -1
对比出修改了哪些内容
bash
git diff
生成某个区间的patch
bash
git format-patch 97010ef958a502c60d7080212bba353af32d2057..f2f35bbfc16b384f447a30dd0b240637331fd132 > lsdkall.patch
生成最后第N次提交产生的补丁
bash
git format-patch -N
回退之前的某个具体版本xxxx
bash
git reset --hard xxxx
显示一个提交的详细信息。
bash
git show
显示某个具体commit ID提交的详细信息。
bash
git show commitID
显示历史提交记录
bash
git log
将文件添加到Git的暂存区。
bash
git add .
从暂存区和工作目录中删除文件
bash
git rm xx.c
将暂存区内容添加到本地仓库中
bash
git commit
commit内容分段提交
bash
git commit -s 分段提交内容
ctrl + o
回车
ctrl + x
对之前最近一次没合入仓库的commit 提交进行再次修改可以是文件内容也可以是commit 信息
bash
git commit --amend
将本地提交推送到远程仓库
bash
git push
有时候本地代码和远程仓库有冲突的时候,就需要强推到仓库
bash
git push -f
显示工作目录和暂存区的状态。
bash
git status
显示历史提交记录
bash
git log
从log历史记录中查找关键字touchpanel
bash
git log --grep="touchpanel"
仅显示指定John作者相关的提交
bash
git log --author="John"
仅显示指定提交者John相关的提交
bash
git log --committer="John"
查看某个时间段的提交记录
bash
git log --after="2020-9-23 00:00:00" --before="2020-9-23 23:59:59"
查看具体某个目录drivers/media/i2c下的修改历史提交记录
bash
git log --oneline drivers/media/i2c
从仓库中删除已提交的某个文件
bash
git reset -f xxx.txt
查看所有标签
bash
git tag
根据patch id来打标签,一般是出版本的人打tag
bash
git tag -a v0.9 85fc7e7
展示标签内容
bash
git show v1.0
删除标签
bash
git tag -d v1.1
将A分支提交内容移动到B分支
bash
git checkpick
下载github上的提交
bash
git clone xxx.git
另外推荐两个Linux上有两个查看git log历史记录的工具是gitk,tig
gitk是图形化查看git提交的目录
tig是命令去看历史提交的目录