日常工作git命令总结
结合vscode会很强大
生成sshkey
ssh-keygen -t rsa -C "邮箱"cd ~/.ssh复制id_rsa.pub内容复制到git库中
配置信息以及查看
查看配置信息
git config --list
全局配置
git config --global user.name "yourname"git config --global user.email "your_email"
在不同
.git文件下config中设置不同的局部变量git config user.name "name"git config user.email "email"
常用的基本操作
初始化创建
.gitgit init -y// 加参数可以跳过填写信息
添加本地已有文件到
git远程仓库git remote add origin xxxx.git
查看分支
git branch// 当前本地分支git branch -a// 查看所有分支【本地+远程】
更新远程分支到本地分支
git checkout -b <localBranch> origin/<remoteBranch>// 更新远程分支remoteBranch在本地的localBranch分支上
临时存储
开发了一半还没完成突然线上出现了紧急问题,这个时候工作区未清空的状态下
git不允许签出和签入,此时不想commit的话,就要用到以下命令git stash// 将目前的改动存储起来git stash list// 查看stash了哪些git stash apply// 如果要使用其他个,git stash apply stash@{$num}num从0开始 结合vocode可以点击对应的就可以应用git stash clear// 清除掉stash
切换分支
git checkout <branch>
若想基于当前分支拉出来一个新的分支
git checkout -b <newBranch>- 推送到远程仓库
git push origin <newBranch>
删除本地和远程分支
git branch -d <branch>// 有时候不生效可能需要换成-Dgit push origin --delete <branch>
查看状态、将文件添加到缓冲区、提交到本地仓库
git statusgit loggit reflog// 相比git log它每一步操作都能看到(.git下的refs目录存储指向数据(分支、远程仓库和标签等)的提交对象的指针,所以猜测git reflog基本上跟refs有关)git add . | git add fileNamegit commit -m "msg"//-m参数表示可以直接输入后面的messagegit commit -a -m "msg"// 相当于执行了git add . + git commit -m "msg"
重置提交信息
git commit --amend//git push的时候需要校验message格式,如果第一次写错的话就无法push到远程仓库,可以用这个修改提交的message重新push
pull不下代码的情况git pull origin <branch>// 偶尔会遇到服务器上的代码一直pull不下来,可以加上origin <branch>
合并
- 个人习惯和原则:所有本地改动均已经推送到远程分支的前提
git merge <branch>// 将branch分支合并到当前分支- 简单的合并出现冲突,用
vscode解决掉冲突,重新add 、commit、 push就可以,但是一些有时候出现一些比较复杂的冲突导致合并失败,再次操作的时候会提示当前正在处于合并之中(分支名后带着|MERGING),需要git merge --abort选项会尝试恢复到你运行合并前的状态
如果已经合并发现合并错分支(所以合并的东西是不需要保留在工作空间的),可以使用git reset --hard HEAD~来还原到未合并之前,并且工作区是干净的状态 - 合并中出现
Swap file .MERGE_MSG.swp already exists的情况需要打开当前项目.git文件删除.MERGE_MSG.sw*文件,再继续操作
重置
git reset --(soft | mixed | hard ) < HEAD ~(num) > |- 用的比较多的是
soft和hard - 跟时间旅行一个道理,
git reset HEAD跟着HEAD@{1}(HEAD~) HEAD@{2}...或者分支的hash值可以将本地存储库切换到任意的版本 - 一种场景如果需要回退到某一次版本,并且不要那些版本的改动文件,可以使用
git reset --hard HEAD【硬回退】这个命名回回退到指定的版本并且删掉之前的改动文件,不会出现在暂存区。如果想回退到某次版本,并且需要暂存区看到改动的文件可以使用git reset --soft HEAD【软回退】 - 回退到某个之前的版本的话, 需要
git push origin <branch> --force推送到远程分支
推送
master分支推送可以直接使用git push- 非
master分支需要加上origin <remoteBranch>即:git push origin remoteBranch
不是很常用的几个
git命令git fetch// 有时候不需要合并的时候会用一下,git fetch和git pull的区别就是git pull = git fetch + git mergesubmodule的命令git submodule initgit submodule foreach git submodule updategit submodule update --init
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!