git
配置操做
git config --list
git config [--local | --global | --system] user.name 'your_name'
git config [--local | --global | --system] user.email 'your_email@domain.com' #注:优先级为local > global > system
git config --unset [--local |--global | --system] user.name
git config --unset [--local |--global | --system] user.email
cherry-pick
git cherry-pick 1a2aa4b
git cherry-pick --skip
git cherry-pick --abort
rebase
git rebase -i 1a2aa4b^ #调整从这1a2aa4b次提交,到最后一次提交
git rebase -i HEAD~10 #调整最近10次提交的日志,或合并多次提交为1次,让log更好看
p pick = use commit
s squash = use commit but meld into previous commit
git rebase --abort
git rebase --continue
restore
git restore . #恢复所有工作区修改的文件
git restore --staged . #恢复所有暂存区中得文件 执行完次命令修改得内容将从暂存区移至工作区
branch
git branch 分支名 #创建 一个新分支,并不会自动切换到新分支中去
git branch #查看分支列表
git branch -d name #删除分支
git branch -a #查看所有分支,包括远程分支。
git branch -v #可以查看每一个分支的最后一次提交
git branch -m [old-branch-name] [new-branch-name]:重命名指定的分支。
git branch name commitHash 新建一个分支并且使分支指向对应的提交对象
git branch –merged 查看哪些分支已经合并到当前分支
git branch --no-merged 查看所有包含未合并工作的分支
git branch --set-upstream-to=origin/my_branch my_branch:将本地分支与远程分支关联起来。
git branch --unset-upstream [branch-name]:取消本地分支与远程分支的关联。
checkout
git checkout 分支名 切换分支
git checkout -b 分支名 #先创建分支,再切换到新创建的分支,相当于 git branch 分支名 和 git checkout 分支名两个命令。
git checkout -b [branch] [remotename]/[branch] #创建分枝a,并切换至分支a,并将分支a的上游分支设置为分支b
git checkout -- 文件名 将在工作目录中对文件的修改撤销
git checkout --track origin/daves #假设你想要从远程的daves分支签出到本地的daves #--track 是 git checkout -b [branch] [remotename]/[branch] 的简写)
git checkout [commit-hash] [file-name]: #恢复指定提交中的文件到工作区。
merge
git merge branchName #将branchName分支合并当前分支
git merge branchName --squash #将branchName分支合并当前分支,并将branchName上的所有提交合并成一次提交
pull
git pull #等同于 git fetch + git merge FETCH_HEAD
git pull --rebase origin [branchName] #等同于git fetch + git rebase FETCH_HEAD
stash
#暂存命令
git stash #暂存还没有提交的修改
git stash save '第一次暂存' #暂存+备注
git stash apply 重新应用暂存
git stash apply stash@{2} 如果不指定一个储藏, Git 认为指定的是最近的储藏
git stash list 查看存储
git stash pop #来应用储藏然后立即从栈上扔掉它
git stash drop stash@{2} #删除指定的暂存项
git stash clear #删除所有的暂存项
git stash show -p #显示最新的暂存文件具体的改动
git stash show -p stashname #显示指定的暂存文件具体的改动
commit
#修改最后一次提交
git commit –amend
reset
git reset --soft HEAD~/哈希值 #不会修改工作区和暂存区中的修改
git reset --[mixed] HEAD~/哈希值 #默认 不会修改工作区中的修改,暂存区中的修改会被清空
git reset --hard HEAD~/哈希值 #把工作和暂存区中的内容清空,HEAD指针移动至上一次提交的位置
revert
git revert commitId #非merge的commit 创建一个新的提交来反转以前的更改,当你想要撤销一个或多个特定的提交时,而不是删除它们就可以使用此命令
git revert -m [1/2] [commitId] #撤销merge类型的提交
log
#log中的一些操作
git log --oneline --decorate --graph --all 查看项目分叉历史
git log --author= 'name' 显示某个作者的日志
git log -p filepath 查看某个文件的详细修改
git log --grep='commitMessage' 按提交信息模糊搜索日志
git reflog #只要HEAD发生变化,reflog就会有记录
--oneline:以一行的形式显示提交历史,每个提交仅显示一行摘要信息。
--graph:在提交历史中显示 ASCII 图形表示的分支合并情况。
--all:显示所有分支的提交历史,包括主分支和其他分支。
--author=<author>:只显示指定作者的提交历史。
--since=<date>:只显示指定日期之后的提交历史。
--until=<date>:只显示指定日期之前的提交历史。
--grep=<pattern>:只显示包含指定模式的提交消息。
remote & push & show
#远程仓库的一些操作
git remote show [remote-name] #查看远程仓库信息
git remote rename pb paul #将远程仓库名pb改成paul 注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支现在成了 paul/master。
git remote add origin https://gitee.com/lidongkuishihaoren/shangpinhui-admin.git #添加远程仓库地址
git remote -v:#查看当前所有的远程仓库
git remote rm [name]:#删除指定名字的远程仓库。
git remote prune [name]:#删除指定远程仓库的所有已经不存在的远程分支。
git push --set-upstream origin master
git push origin --delete my-branch #删除远程分支
git show commitId #查看具体的修改信息
git show commitId --stat 查看某次提交修改了哪些文件
git show :my_file.txt #查看暂存区中my_file.txt
ls-file
git ls-file #可以列出Git仓库中当前跟踪的所有文件
git ls-files "*.txt" #过滤列出特定文件类型的文件
git ls-files -m #列出所有已修改但未被暂存的文件
git ls-files --delete #列出所有被删除但尚未提交的文件
git update-index --skip-worktree a.txt #忽略一个已经提交过的文件
git ls-files -v . | grep "^S" # 查看所有忽略过的文件
git update-index --no-skip-worktree a.txt # 不再忽略该文件
git rm --cached -r .idea #Git 会将指定的文件或目录从 Git 的索引中移除。但是它们仍然存在于工作目录中,不会被删除。这个命令通常用于忽略已经被 Git 追踪的文件或目录。例如,如果你不希望将某个敏感文件添加到版本控制中,但已经被错误地添加,你可以使用 `git rm --cached -r` 命令将其从 Git 索引中移除,然后将其添加到 `.gitignore` 文件中,以确保 Git 不再追踪它。
diff
git diff branch1 branch2 -- path/file.txt # 比较两个分支的相同文件
git diff HEAD HEAD~1 比较最近两次提交
git diff HEAD HEAD~2 比较最近和倒数第三次提交
git diff HEAD HEAD^ 比较最近两次提交
git diff HEAD HEAD^^ 比较最近和倒数第三次提交
#本地保存私钥,将公钥设置再gitee或github上,使用下面命令可以检查是否设置成功
ssh -T git@github.com
ssh -T git@gitee.com
#假设现在代码库中共有四次提交如下:
A -> B -> C -> D(HEAD)
HEAD^ #表示上一次提交 C
HEAD^^ #表示上两次提交 B
HEAD~ #表示上一次提交 C 同HEAD^
HEAD~2 #表示上两次提交 B
HEAD~3 #表示上三次提交 A