简介:
• 工作区
• stash:储藏区
• workspace/Working Directory: 工作区• Index/Stage:暂存区
• local repository:仓库区/本地仓库
• remote repository:远程仓库
• 分支
• 分支本质是指向单个commit 的可变指针。
• master分支不是特殊分支,只是约定的默认分支。
• HEAD是一个特殊指针,指向当前活动分支的最新一次提交
• 分支与TAG
• 标签本质上是也是指向某个commit的指针,但是这个指针不能移动
• 通常用于重要阶段的快照,例如上线版本等
常⽤用指令:
-
拉取远端分⽀支
• git clone 拷贝一个 Git 仓库到本地,不指定本地目录名时与Git 仓库同名
-b 拷贝一个指定的分支到本地,不指定本地目录名时以分支名命名
• git fetch 拉取远端分支到本地
• git pull 拉取远端分支到本地,并与指定分支合并,相当于fetch + merge
• git checkout –b (本地分支) (远端分支)
拉取远端分支并创建本地分支,不指定本地分支则不创建
-
工作分支常⽤用操作
• git stash
• git stash 将当前改动放入储藏区(包括放入暂存区的)
• git stash apply 将储藏区修改应用到工作区• git stash clear 清除储藏区
• git stash line 显示储藏区中的所有工作区内容的备份
• git stash pop 从储藏区将最近一次备份的修改恢复到工作区(可多次使用)• git diff
• git diff 对比工作区与HEAD的差异
• git diff --cached 对比暂存区与HEAD的差异• git diff --staged 对比暂存区与HEAD的差异
• git diff HEAD 对比工作版本与HEAD的差异,包括工作区和暂存区
• git add/stage
• git add . 提交所有新增文件和修改操作到暂存区,但不提交删除
• git add -A 提交所有变化到暂存区• git add -u 提交修改和删除操作到暂存区,但不提交新增文件
• git commit
• git commit -m 将暂存区改动提交到本地仓库
• git commit -am 将已追踪的文件的修改(包括未提交到暂存区)提交到本地仓库
• git commit –a –m 等价于-am,但注意不能写成-m -a• git reset【--soft commitId 不能撤销某个指定版本,而是head重置指向这个版本,这之后的commit都被撤销】
• git reset –-soft 版本id 只是撤销已提交的版本库,不会修改暂存区和工作区【撤销最近一次的commit(撤销commit,不撤销git add)】
• git reset --mixed 版本id 缺省模式,撤销已提交的版本库和暂存区,不会修改工作区【撤销最近一次的commit(撤销commit,撤销git add)】• git reset --hard 版本id 彻底将工作区、暂存区和版本库记录恢复到指定的版本库【撤销commit,撤销git add,工作区的代码改动将丢失。操作完成后回到上一次commit状态】
• git log
• git log 展示分支历史提交记录
• git log --oneline 以一行的形式简单展示分支历史提交记录• git log --stat 展示分支历史提交记录,每次提交展示详细的变更文件和变更行数
• git branch
• git branch -b 工作区切换到指定本地仓库分支
• git branch -d 从本地仓库中删除指定分支
• git merge
• git merge 将指定分支合并到当前工作区的分支
• git merge --abort 冲突时尝试将工作区恢复到合并前(当合并开始时如果存在未commit的文件,该指令可能无法完全正确执行)
• git rebase(用于撤销某个commit)
• git rebase 分支变基, 将当前分支相对目标分支的修改加在目标分支之后
• git merge --abort 冲突时尝试将工作区恢复到合并前
-
推送远程仓库操作
• git push
• git push (已关联远程分支)将本地分支推到远程仓库
• git push <远程主机名> <远程分支名>:<本地分支名>
将本地分支推到指定远程仓库的指定分支
• idea下使用Command + Shift + k
• 其他可视化工具
• SmartGit
• SourceTree
-
其他
git remote -v:查看所有关联的远程仓库git remote remove original:删除远程仓库