git学习及常用代码

记录一下学习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 "[email protected]" 配置邮件

  • 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://[email protected]/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系列教程共有九篇,讲的非常详细

你可能感兴趣的:(git学习及常用代码)