git config --global user.name "xxx" //设置用户名为xxx git config --global user.email "xxx" //设置邮箱为xxx克隆远程仓库
git clone <仓库名> // 克隆远程分支时,只会克隆master分支,其余分支需要单独检出初始化仓库
git init把工作区的文件添加到暂存区
git add . // 添加所有的文件到暂存区 git add <文件名> // 添加当前文件到暂存区把暂存区中的文件提交到本地仓库
git commit -m"初始化项目" //把所有的文件都提交到本地仓库,并带上描述信息查看当前分支的状态
git status // 会有一些提示,根据提示可做下一步的操作分支
git branch检查远程分支
git branch -r检查本地和远程分支
git branch -a创建分支,并切换
git switch -c dev //创建并切换到dev分支 // 如果已存在该分支,则报错 fatal: A branch named 'dev' already exists.切换本地分支
git switch dev //切换到dev分支检出远程分支
git checkout -b dev origin/dev //检出远程的dev分支到本地新创建的分支dev删除本地分支
git branch -d dev //删除本地dev分支 git branch -D dev //强制删除本地dev分支(当分支没有被合并使用的时候)远程分支与本地分支关联
git remote add origin <远程分支的名称> // 如果报错 fatal: remote origin already exists. git remote rm origin // 那么需要先删除与origin的远程库的关系远程分支与本地分支关联
git branch --set-upstream-to <本地分支的名称> origin/<远程分支的名称>查看提交历史
git log q // 退出查看HEAD介绍
我们首先看一下 “HEAD”。HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。
git reset(用于本地撤销) git reset HEAD^ git reset HEAD~1数据从暂存区中 变更到了工作区 代码还是存在的
git revert(用于远程撤销) git revert HEAD //它会创建一个新的提交,为当前提交的上一个提交信息最后提交并push远程即可
git restore --staged . // 所有文件都退回到工作区 git restore --staged <文件名> // 当前文件退回到工作区文件从工作区删除
git restore . // 撤销所有文件的修改 git restore <文件名> // 撤销当前文件的修改移动提交记录
git cherry-pick git cherry-pick <提交号> //可以是多个提交号如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, cherry-pick 是最直接的方式了,通常用于bug分支合并到其他分支中(还需要先提交原有分支,而后解决冲突即可)
git rebase假设一个master(C1)分支中创建了一个dev分支,进行开发,开发到一半的时候,发现线上有一个bug,于是我们就切换到了master分支下面去创建一个bug分支,进行修复bug,最后合并到的master分支(此时为C2),而后切换到dev分支,并使用git cherry-pick <提交号> 修复bug。
git rebase master //有冲突,解决---start git add . git rebase --continue //有冲突,解决---end git push origin dev 切换到master分支 git switch master //合并dev分支到master git merge dev git push origin master远程拉取
git pull // 切换到当前分支下,简写 git pull origin master --allow-unrelated-histories //拉区不下来的时候,强制合并提交分支到远程
git push origin master // 提交master分支到远程注意:需要先切到当前分支中
git commit --amend输入 i 进入输入模式
应用场景:
在上面介绍的git rebase例子中,有一步的做法有些不合理,当我在dev分支中开发的时候,线上发现一个bug,那么需要从master分支中切出一个bug分支,在 dev分支切换到master分支的时候,此时dev分支是否需要提交?显然是不应该提交的,因为dev分支我才进行了一半,那要怎么办,我既想保留dev中的代码,又不想提交代码生成提交记录。有一个命令可以做到,即 git stash,余下流程还是按照之前的走
git stash //作用:可以把当前工作现场储藏起来,此时再去查看工作树,发现它是干净的,这样你就可以愉快的解决bug了