GIT常用笔记
学习链接
安装Git
在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。
SSH Key
ssh-keygen -t rsa -C "youremail@example.com" # 创建SSH Key,记得换成自己的邮箱地址
说明: 在用户主目录下,看看有没有
.ssh
目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可放弃上一步直接跳到下一步。如果没有,打开Shell,创建SSH Key
把SSH Key的公钥添加到远程仓库服务器
事例流程: 登陆GitHub,打开“Account settings”,“SSH Keys”页面: 然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容: 点“Add Key”,你就应该看到已经添加的Key
配置Git信息
git config --global user.name "Your Name" # 用户名
git config --global user.email "youremail@example.com" # 邮箱 (换成自己的邮箱地址)
创建版本库
git init # 把当前目录变成Git可以管理的仓库,用ls -ah命令可以看到一个.git目录,说明仓库创建成功。
把修改添加到Git仓库
git add readme.txt # 把指定文件的修改添加到暂存区
git add . # 把所有修改添加到暂存区
git commit -m "此次提交的说明" # 把暂存区中存储的修改提交到当前分支
查看仓库的状态
git status # 查看工作区的状态
git diff # 查看具体修改了什么内容
查看提交的历史记录
git log # 查看完整记录信息
git log --pretty=oneline # 查看简要记录信息
git log --abbrev-commit # 记录信息中id简写
git log --graph # 查看分支的合并情况
git log --graph --pretty=oneline --abbrev-commit # 查看分支的合并情况并只显示简要信息
版本回退
git reset --hard HEAD^ # 回退到上一个commit提交的版本,HEAD^^上两个,HEAD^^^上三个,......
git reset --hard 1094a8c...... # 根据commit提交时生成的版本id回退到指定版本,id号比较长,通常输入前七位就可以自动匹配到
注意: 执行回退后,再执行
git log
查看,会发现最近一次提交的那个版本id已经看不到了,想再回到最近的一次提交已经回不去了,肿么办? 只要上面的命令行窗口还没有被关掉,你就可以顺着往上找,找到对应的版本id,再根据版本id回退。 如果命令行窗口关了怎么办? 每一次提交都对应一个版本id,问题就在于我们能不能找到那个版本的id,找到id后根据id回退就行。 那么关了后如何在找到id呢,上面说再执行git log
已经看不到最新的那个id了啊 o(╥﹏╥)o 。 通过git reflog
命令可以查看执行过的git命令记录,记录中会有版本id ^_^ 。
撤销修改
git checkout -- readme.txt # 把工作区中的修改撤销掉
解读: 命令
git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况: 一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。 总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
git reset HEAD readme.txt # 把暂存区的修改撤销掉,重新放回工作区
本地仓库与远程仓库
git remote add origin https://gitee.com/friendlysxw/learn-git.git # 本地仓库关联远程仓库
git remote -v # 查看远程仓库更详细的信息
git clone https://gitee.com/friendlysxw/learn-git.git # 直接在本地克隆远程仓库
git push origin <branchName> # 把指定分支推送到远程仓库
git push -u origin master # 第一次推送,-u参数 会把本地master分支和远程master分支关联,往后可以简写
git push # 把master分支推送到远程的简写方式
分支管理
git branch # 查看分支
git branch <branchName> # 创建分支
git branch -d <branchName> # 删除分支
git branch -D <branchName> # 强行删除分支
git branch --set-upstream-to=origin/<branchName> <branchName> # 创建本地分支<branchName>与远程分支origin/<branchName>的链接关系
git checkout <branchName> # 切换分支
git switch <branchName> # 切换分支 推荐使用
git checkout -b <branchName> origin/<branchName> # 创建远程分支到本地
git checkout -b <branchName> # 创建加切换分支
git switch -c <branchName> # 创建加切换分支 推荐使用
git merge <branchName> # 合并指定分支到当前分支 ,如果是快进方式提交,分支删了在记录中会丢失分支信息
git merge <branchName> --no-ff -m "禁止快进方式的合并" # 禁止快进方式合并,本次合并会有一次commit,所以加 -m 进行注释
工作现场(工作区当前未提交的变化)
git stash # 将当前工作现场存储起来
git stash list # 查看存储过的工作现场记录
git stash apply 0 # 根据记录索引恢复指定的工作现场
git stash drop 0 # 根据记录索引删除指定工作现场记录
git stash pop # 恢复上一次存储的工作现场,并从存储记录中删除上一次的记录
复制指定提交到当前分支
git cherry-pick <commitId>
标签管理
git tag <tagName> # 在最新一次提交上创建一个标签
git tag -a <tagName> -m "describe info" # 创建带有说明的标签
git tag <tagName> <commitId> # 在指定提交上创建一个标签
git tag # 查看所有标签名
git show <tagName> # 查看指定标签具体信息
git push origin <tagName> # 把指定标签推送到远程仓库
git push origin --tags # 把所有标签推送到远程仓库
查看执行过的git命令记录
git reflog
魔法
-
删除当前分支外的所有分支:
git branch | xargs git branch -d
-
删除分支名包含指定'dev'的分支:
git branch | grep 'dev*' | xargs git branch -d
-
删除除了main之外的其它分支
git branch | grep -v 'main' | xargs git branch -D
转载自:https://juejin.cn/post/6982851048939454472