配置全局用户名及邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
创建ssh_keygen
ssh-keygen -t rsa -C "youremail@example.com"
创建本地仓库
-
git init
终端提示:Initialized empty Git repository git add . # 添加文件到仓库
git commit -m "提交" #提交已添加的文件到仓库
关联到远程仓库
git remote add origin git@github.com:qiyoon/webapp.git #添加关联
git remote -v #查看已关联的远程仓库
git push -u origin master #把本地库的所有内容推送到远程库上
分支、合并、推送到远程仓库
git branch -r #查看远程所有分支
git branch #查看本地所有分支
git branch -a #查看本地及远程的所有分支,如下图
图解:绿色代码表示当前使用的分支;remotes/origin····表示远程的分支
git branch xxxx # 创建分支
git checkout xxx #切换分支
git checkout -b xxxx #创建并切换分支
git branch -d xxx #删除分支
git merge dev #将dev分支合并到当前分支(当前分支不是dev分支)
用 git log --graph
命令可以看到分支合并图。
git merge --no-ff -m "merge with no-ff" dev #不使用快速策略,该合并可以查看合并历史
版本管理,时光机
git restore --staged . 取消暂存到工作区
git commit --amend 重新修改commit message的内容
git reset --hard HEAD^ #回退到上一个版本,如果有合并分支,忽略分支
git reset --soft HEAD^ 软回退版本库,回退后修改还存在
git restore . 丢弃工作区修改
git restore --staged . 恢复已提交到暂存区内容到工作区
git reset HEAD <file> #撤销暂存区的修改放回工作区
git checkout . # 撤销工作区所有文件的修改
git checkout -- readme.md # 撤销工作区或暂存区的某个文件的个性
git diff HEAD^^ -- readme.md #查询文件与前2个版本的差异
git diff HEAD d87adk -- readme.md #查询文件与历史某个版本的差异
跟踪远程分支
从远程分支 checkout 出来的本地分支,该分支和远程分支直接联系关系;
一般克隆远程仓库时,GIT是自动创建的一个名为master的分支来跟踪,但我们要使用另个分支,此时就可能使用命令
git checkout --track origin/xxxxx #跟踪远程分支并切换到该分支下
也可以设定不同于远程分支名的本地分支
git checkout -b xx origin/xxxxxx
git pull origin xxxx:yyyy # 拉取远程分支到本地 xxxx 远程名,yyyy本地名 并合并或新建拉取 ,不加yyyy远程分支将于当前分支合并
远程强制更新并合并到本地
git fetch --all
git reset --hard origin/xxxx # 覆盖本地分支
本地及远程分支管理
git push origin :xxxx #删除远程分支
orgit push --delete origin xxx
git branch -m old new # 修改本地分支名称
stash 暂存操作
在当前版本有变动需要切换分支时,不想提交修改文件时,可以使用此命令
git stash # 将已修复的内容存放到暂存区,
git pull origin develop3.12.9:develop3.12.9 #拉取项目
git stash pop #从暂存区取最近一次记录merge
git stash list #显示所有stash列表
git stash drop stash@{0} #这是删除第一个队列
git stash clear #清空stash
其他
git rm -r --cached . # 清除本地缓存(改变成未track状态)使用该命令本地所有文件夹及文件将被设置为未添加到版本库状态,不会删除文件
git rev-parse --abbrev-ref HEAD # 查询出当前使用的分支名称