记录一下学习git过程中的感悟和知识点
一
无意间在网上看到的图,将git的工作原理表现的淋漓尽致,特来分享下
2016083038416QQ20160830-0.png
解释一下:
- workspace就是工作区,可以理解问本地的代码工作区域,不与本地仓库挂钩,只要不提交,本地仓库就不会变。
- index 就是暂存区,因为workspace的代码在commit提交到本地仓库前需要先add到暂存区(进行检查,看查diff等操作)
- Repository 是本地的仓库,顾名思义就是存储本地代码和修改记录的地方,跟远程仓库其实是一样的,只不过是本地的而已,他是从远程clone下来的。
- Remote就是远程的仓库,里面存放代码和修改记录等信息,与本地仓不同的就是在网上放着, 不怕电脑GG,可以让其他clone到他们的本地。
操作:
- add,将本次工作修改的代码提交到暂存区(index)等待查看等,
- commit 将本次的修改提交到本地仓库,后缀本次修改的备注(一定要先add了再commit)
- checkout 新建一个本地的分支来工作,一般是在新添功能的时候做的,新建一个分支不影响主分支,完成后再合并到主分支
- push 将本地仓库的修改推到远程仓库分支,使远程仓库获取最新的代码,(一般都是要推到远程的分支的,一般远程的主分支是上线版本,不能轻易动的,远程分支上用来测试升级版的)
- fetch,默认情况下,取回所有分支的更新,如果只想取回特定分支的更新,可以指定分支名。
- clone ,完整的将仓库master分支上的代码全部clone下来
- pull 本地获取远程的更新。
最常用的一些git命令
配置
-
git init # 初始化本地git仓库(创建新仓库)
-
git config --global user.name "xxx" 配置用户名
-
git config --global user.email "xxx@xxx.com" 配置邮件
-
git config --global color.ui true 给git status等命令自动着色
-
git config --global color.status auto
-
git config --global color.diff auto
-
git config --global color.branch auto
-
git config --global color.interactive auto
正文
-
git clone git或者ssh://git@000.000.0.0/XX.git clone远程仓库
-
git status 查看当前版本状态(是否修改)
-
git add XXX 添加XXX文件至暂存区
-
git add . 增加当前子目录下所有更改过的文件至暂存区
-
git commit -m 'xxx' 提交(后面加本次提交信息,不写会报奇怪的错)
-
git commit --amend -m 'xxx' 合并上一次提交(用于反复修改)
-
git commit -am 'xxx' 将add和commit合为一步
-
git rm xxx 删除暂存区中的文件
-
git rm -r * 递归删除
-
git log 显示提交日志
-
git log -1 显示1行日志 -n为n行
- git log --stat 显示提交日志及相关变动文件
-
git show XXXXX 显示某个提交的详细内容
-
git tag 显示已存在的tag
-
git tag -a v2.0 -m 'xxx' 增加v2.0的tag
-
git show v2.0 显示v2.0的日志及详细内容
-
git log v2.0 显示v2.0的日志
-
git diff 显示所有未添加至暂存区的变更
-
git diff --cached 显示所有已添加index但还未commit的变更
-
git diff HEAD^ 比较与上一个版本的差异
-
git diff origin/master..master 比较本地master分支上没有的远程主分支区别
-
git remote add origin git+ssh:// 增加远程定义(用于push/pull/fetch)
-
git branch 显示本地分支
-
git branch --contains xxxx 显示包含提交xxxx的分支
-
git branch -a 显示所有分支,本地和远程的
-
git branch -r 显示所有原创分支
-
git branch --merged 显示所有已合并到当前分支的分支
-
git branch --no-merged 显示所有未合并到当前分支的分支
-
git branch -m master master_copy 本地分支改名
-
git checkout -b master_copy 从当前分支创建新分支master_copy并检出
-
git checkout v2.0 检出版本v2.0
-
git checkout -b XXXX origin/YYY 从远程分支XXXX创建新本地分支YYY并检出
-
git merge origin/master 合并远程master分支至当前分支
-
git cherry-pick XXX 合并提交XXX的修改
-
git push origin master 将当前分支push到远程master分支
-
git push origin :XXX/YYY 删除远程仓库的XXX/YYY分支
-
git push --tags 把所有tag推送到远程仓库
-
git fetch 获取所有远程分支(不更新本地分支,另需merge)
-
git fetch --prune 获取所有原创分支并清除服务器上已删掉的分支
-
git pull origin master 获取远程分支master并merge到当前分支
-
git reset --hard HEAD 将当前版本重置为HEAD(通常用于merge失败回退)
-
git branch -d XXX/YYY 删除分支XXX/YYY(本分支修改已合并到其他分支)
-
git branch -D XXX/YYY 强制删除分支XXX/YYY
-
git ls-files 列出git index包含的文件
-
git show-branch 图示当前分支历史
-
git show-branch --all 图示所有分支历史
-
git whatchanged 显示提交历史对应的文件修改
-
git revert XXXXXXXX 撤销提交
-
git stash 暂存当前修改,将所有至为HEAD状态
-
git stash list 查看所有暂存
-
git stash show -p stash@{0} 参考第一次暂存
-
git stash apply stash@{0} 应用第一次暂存
以后git用的多了 肯定会增加命令的 ,以后再补充吧
几篇学习git非常好的教程:
易佰网的git教程
伯乐在线的git系列教程共有九篇,讲的非常详细
网友评论