概念
工作区:本地的文件
暂存区(stage):已经保存到一个虚拟空间,但尚未提交
版本库(repository):github中的文件
HEAD:用于git内部追踪当前位置
工作树:整个过程
 
 
在github中使用gh-pages预览自己上传的网页
 
创建本地库和远程库
  1. 在要建立版本库的地方,右键,git bash here
  2.   git init (初始化本地仓库)
  3.   git add . (将本地所有文件加到仓库里)
  4.   git commit -m "message" (设置提交信息,message为注释信息)
  5.   git remote add origin git@github.com:Royccc/Learn.git(本地仓库链接远程仓库)
  6.   git push -u origin master (push文件到仓库中)

创建GitHub page

  1.  在github的setting中创建GitHub page,选择主题
  2.  查看分支,新增了gh-pages
从远程库克隆
  1.  git clone http://github.com/Royccc/Learn.git (将远程仓库克隆到本地)(或git clone git@github.com:Royccc/Learn.git )
  2.  cd Learn (进入到你克隆仓库的本地文件夹)
  3.  git checkout gh-pages(将master分支切换到gh-pages分支上)
  4.  将本地克隆的文件删除,只留下.git, 然后把你想要展示demo页面相关的文件粘进去
重新上传到github的gh-page分支
  1. git add . (将本地所有文件加到仓库里) 
  2. git commit -m "message" (设置提交信息) 
  3. git remote add origin http://github.com/Royccc/Learn.git (本地仓库链接远程仓库) 
  4. git push -u origin gh-pages (push文件到仓库中)
修改地址,将地址添加到read.me
  1. 查看github给的网址
  2. 在后面加上html: https://royccc.github.io/Learn/blog.html 
 
 
撤销提交的多种情况
  • 还原正在手头上修改,还没被添加到缓存区的文件(未add)
        git checkout -- <file>
  • 删除已添加到缓存区的文件(已add,未commit)
        git reset HEAD -- <file>
  • 撤销最近一个commit操作
        git reset --hard <file> 不产生新的提交
        git revert <file>  产生一个新的提交
  • 撤销以前的多次commit操作
        git rebase --onto <D G^ H>  撤销多个,(例子是删除E,F) 
        git revert 一次只撤销一个
  • 执行merge操作,但是遇到conflict,想要撤销merge操作
        git reset --hard HEAD
 
 
 操作指令及混淆点
基本操作
  • 添加文件(添加文件到暂存区) 
git add .  全部文件
git add -u 只添加已提交过的文件
git add -p 只添加文件修改的一部分
git add -i 用对话形式显示添加在缓存区的文件
  • 提交更改(把暂存区的内容提交到当前分支)
git commit -m “message” 指令提交“提交信息”
git commit -a 检测出修改的文件 (不包括新添加的文件),将其添加至索引并提交
  • 显示修改的文件清单
git status
git status -s 不显示讲解
git status -s -b 不显示讲解,但显示分支的名称。
  • 查看修改文件的差异
git duff 显示工作树和索引的差异。
git duff-cached 选项可以显示缓存区与HEAD的差异。如果指定HEAD或提交,则可以显示工作树和指定HEAD之间的差异。
  • 显示提交记录
git log 若要查看特定文件的提交记录,请指定文件名称。
  • 查看提交的详细记录
git show 命令的参数可以指定log命令参阅的提交与HEAD。
  • 修改,移动文件的名称或目录的名称
git mv <oldfilename> <newfilename>
  • 删除文件
git rm <file>
  • 删除非管理对象的文件
git clean
git clean -n 查看即将被删除的文件
git clean -n -f 立即删除文件
git clean -n -f -x 此时.gitignore指定的文件也成为删除对象了。
  • 显示分支清单
git branch
git branch -a 包括远端分支在内的分支清单。
  • 创建分支
git branch <branchname>
  • 修改分支的名称
git branch -m <oldbranch> <newbranch>
  • 删除分支
git branch -d <branchname> 若有未合并到HEAD的提交,则不能。git branch -d -D <branchname> 强制删除未提交的分支
  • 切换分支
git checkout <branch>
git checkout -b <branch>  创建分支并进行切换。
  • 合并分支
git merge <branch>
git merge <branch> --no-ff 是fast-forward合并也可以建立合并提交。这是记录分支存在过的非常有用的选项。
 
 
操作标签
  • 查看标签列表
git tag
git tag -n 显示标签的注解
  • 建立标签
git tag <tagname>
git tag -a <tagname> 建立含批注的标签
  • 删除标签
git tag -d <tagname>
 
操作提交记录     
  • 修改最近一次的提交内容和注释
git commit --amend 
  • 修改过去的提交记录,(- 在push之前,重新输入正确的提交注解;- 清楚地汇合内容含义相同的提交; - 添加最近提交时漏掉的档案;
  1. git rebase -i <commit>   选择要修改的提交
  2. 打开文本编辑器,在清单里找出要修改的提交,将该行的pick改成edit,之后保存并退出。
  3. git add 添加文件;git commit -m "message" 修改message; git commit --amend保存修改
  4. git rebase --continue  通知提交的操作已经结束
  • 查看HEAD指向过去的提交清单。
git reflog 显示已删除的提交和藉着rebase等所汇集的提交。
git reflog <ref> 指定分支名称,查看分支前面的移动历史记录
  • 中途停止rebase
git rebase --abort  分支会回到rebase开始前的状态。
  • 放弃rebase
git reset --hard <commit>
首先使用reflog命令查找rebase以前的提交,确认提交的信号值或「HEAD@{数字}」值。查找出来的信号值或「HEAD@{数字}」值以<commit>指令,然后执行reset命令。把被rebase移动过的分支前面的位置恢复到提交rebase之前的位置,由此取消rebase。
  • 放弃最近的提交
git reset --hard HEAD~
  • 取消最近的reset
git reset --hard ORIG_HEAD
  • 复制提交
git cherry-pick "<commit>" 把指定<commit>的提交复制到现在的分支。
  • 查找包含特定注解的提交
git log --grep "<pattern>" 只显示提交记录里包含指定<pattern>文字的提交。
切换分支
 
  • 复制现有的远程数据库
git clone <url>
  • 复制本地仓库链接远程数据库
git remote add <name> <url>
  • 显示远程数据库列表
git remote
git remote -v 显示远程数据库的详细情况。
  • 通过远程数据库的分支创建本地数据库的分支
git checkout <branch>
  • 通过远程数据库创建分支/反映修改内容到分支
git push <repository> <refspec>
git push -u <repository> <refspec> 追踪在远程数据库的目标分支。 <远程数据库名称> <要削除的标签>
  • 查看远程数据库分支的修改内容
git fetch <repository> <refspec>
  • 读取远程数据库的分支的修改内容
git pull <repository> <refspec>
  • 删除远程数据库的分支
git push --delete <repository> <branchname>
  • 修改已注册的远程数据库
git remote rename <old> <new>
 
 
Stash
  • git stash save 暂时保存现状的操作
  • git stash list 显示暂存列表
  • git stash pop 恢复暂存的操作
  • git stash drop 删除暂存的操作
  • git stash clear 删除所有暂存的操作
 
 
常见的操作指令:
易混淆点:
  • merge是合并。当遇到两个分支同时更新时,把别人的分支pull下来再进行合并操作,存在历史记录。rebase是把自己分支的每个提交(commit)取消,把他们临时保存为补丁(patch),然后合并到别人的分支中。后者只有一次提交记录。http://blog.csdn.net/hudashi/article/details/7664631
  • pull = 查看(fetch) + 合并(merge)
 
 
其他一些理解