初始化git目录
git init |
添加文件并提交
git add [filename01] git add [filename02] ... |
git commit -m "..." |
查看版本历史
git log |
git log --pretty=oneline |
git log --pretty=oneline --abbrev-commit |
回退版本
git reset HEAD^ | 上一个版本 |
git reset HEAD^^ | 往上第二个版本 |
git reset HEAD~100 | 网上第100个版本 |
撤销回退
git reset --hard [commit_id] | id写前几位就可以了,git会自动寻找 |
查看命令历史
git reflog | 可以查看commit_id |
工作区的状态
git status |
比较
git diff HEAD -- [filename] | 比较工作区与版本库最新的差别 |
撤销工作区的修改
git checkout -- [filename] |
撤销暂存区的修改
git reset HEAD |
删除文件
本地 rm [filename] ---> git rm [filname] |
如果本地误删,版本库还没有删除,可以用 |
git checkout -- [filname] 一键还原 |
创建远程仓库
github上创建一个仓库 |
git remote add origin git@github.com:liuyuexizhi/liuyuexizhi.git |
origin远程库的名字 |
克隆远程仓库
git clone |
查看修改用户名和邮箱
[root@10-8-47-142 repository]# git config user.name tyler [root@10-8-47-142 repository]# git config user.email liuyuexizhi@qq.com [root@10-8-47-142 repository]# git config --global user.name "liuyuexizhi" [root@10-8-47-142 repository]# git config user.name liuyuexizhi |
分支
git checkout -b dev -b 参数表示创建并切换 | git branch dev git checkout dev |
git branch | 查看当前分支 |
git checkout dev | 切换分支 |
git merge dev [master] | 合并分支 |
git branch -d dev | 删除分支 |
git merge --no-ff -m "merge with no-ff" dev | 普通模式合并分支,合并后的历史有分支,能看出来曾经做过合并 |
git stash | 保存工作区状态,清空工作区 |
git stash list | 查看保存的工作区状态 |
git stash drop [stashid] | 删除stash |
git stash apply [stashid] | 恢复工作区 |
git stash pop [stashid] | 恢复工作区并删除stash内容 |
git branch -D <name> | 删除未合并的分区 |
抓取分支
git branch --set-upstream-to=origin/dev dev | 指定本地与远程的分支连接 |
标签
创建标签,切换到需要的分支 | git tag v1.0 <commit id> |
查看标签 | git tag |
查看标签信息 | git show <tagname> |
删除本地标签 | git tag -d v1.0 |
推送一个标签 | git push origin v1.0 |
推送所有标签 | git push origin --tags |
删除远程标签,先删除本地标签 | git push origin:refs/tags/v1.0 |
checkout部分文件
Git1.7.0以后加入了Sparse Checkout模式,这使得Check Out指定文件或者文件夹成为可能。 具体实现如下:
$mkdir project_folder $cd project_folder $git init $git remote add -f origin <url>
上面的代码会帮助你创建一个空的本地仓库,同时将远程Git Server URL加入到Git Config文件中。 接下来,我们在Config中允许使用Sparse Checkout模式:
$git config core.sparsecheckout true
接下来你需要告诉Git哪些文件或者文件夹是你真正想Check Out的,你可以将它们作为一个列表保存在 .git/info/sparse-checkout 文件中。 例如:
$echo “libs” >> .git/info/sparse-checkout $echo “apps/register.go” >> .git/info/sparse-checkout $echo “resource/css” >> .git/info/sparse-checkout
最后,你只要以正常方式从你想要的分支中将你的项目拉下来就可以了:
$git pull origin master |