概念

工作区:本地的文件
暂存区(stage):已经保存到一个虚拟空间,但尚未提交
版本库(repository):github中的文件
HEAD:用于git内部追踪当前位置
工作树:整个过程
在github中使用gh-pages预览自己上传的网页
创建本地库和远程库
- 在要建立版本库的地方,右键,git bash here
- git init (初始化本地仓库)
- git add . (将本地所有文件加到仓库里)
- git commit -m "message" (设置提交信息,message为注释信息)
- git remote add origin git@github.com:Royccc/Learn.git(本地仓库链接远程仓库)
- git push -u origin master (push文件到仓库中)
创建GitHub page
- 在github的setting中创建GitHub page,选择主题
- 查看分支,新增了gh-pages
从远程库克隆
- git clone http://github.com/Royccc/Learn.git (将远程仓库克隆到本地)(或git clone git@github.com:Royccc/Learn.git )
- cd Learn (进入到你克隆仓库的本地文件夹)
- git checkout gh-pages(将master分支切换到gh-pages分支上)
- 将本地克隆的文件删除,只留下.git, 然后把你想要展示demo页面相关的文件粘进去
重新上传到github的gh-page分支
- git add . (将本地所有文件加到仓库里)
- git commit -m "message" (设置提交信息)
- git remote add origin http://github.com/Royccc/Learn.git (本地仓库链接远程仓库)
- git push -u origin gh-pages (push文件到仓库中)
修改地址,将地址添加到read.me
- 查看github给的网址
- 在后面加上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
git reflog 显示已删除的提交和藉着rebase等所汇集的提交。
git reflog <ref> 指定分支名称,查看分支前面的移动历史记录
git rebase --abort 分支会回到rebase开始前的状态。
git reset --hard <commit>
首先使用reflog命令查找rebase以前的提交,确认提交的信号值或「HEAD@{数字}」值。查找出来的信号值或「HEAD@{数字}」值以<commit>指令,然后执行reset命令。把被rebase移动过的分支前面的位置恢复到提交rebase之前的位置,由此取消rebase。
git reset --hard HEAD~
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
|
| 常见的操作指令: |
|
易混淆点:
|
其他一些理解
浙公网安备 33010602011771号