搜索
github大神项目
git
配置
git config --global user.name "jh"
git config --global user.email "jh2k15@qq.com"
git config --get remote.origin.url "http://"
基本用法
git clone git@github.com:jh2k15/demo.git //克隆gihub上的repositories
git init //初始化仓库
git add . //跟踪文件 添加新创建或修改的文件到本地的缓存区(Index)*
git commit -m 'jh2k' //提交到本地仓库repository -m添加本次修改的注释
git remote add origin https://jh2k.git //将本地仓库和远程仓库链接起来 origin是远程仓库默认的叫法
git push -u origin master //推送到GitHub上
创建版本库
#克隆远程版本库
$ git init #初始化本地版本库
修改和提交
内容
$ git add . #跟踪所有改动过文件 多个文件之间用空格分隔 输入完整的文件名
$ git add #跟踪指定文件
$ git mv #文件名更改
$ git rm #删除文件
$ git rm --cached #停止跟踪文件但不删除
$ git commit -m "commit message" #提交所有更新过的文件
$ git commit --amend #修改最后一次提交
查看提交历史
#查看指定文件的提交历史
$ git blame #以列表方式查看指定文件的提交历史
$ git status #查看当前git仓库的状态 working tree的状态
撤销
文件的修改内容
$ git checkout HEAD # 撤销指定的未提交文件的修改内容
$ git revert #撤销指定的提交
分支与标签
显示所有本地分支
$ git checkout #切换到指定分支或标签
$ git branch #创建新分支
$ git branch -d #删除本地分支
$ git tag #列出所有本地标签
$ git tag #基于最新提交创建标签
$ git tag -d #删除标签
合并与衍合
#合并指定分支到当前分支
$ git rebase #衍并指定分支到当前分支
远程操作
#查看指定远程版本库信息
$ git remote add #添加远程版本库
$ git fetch # 从远程库获取代码
$ git pull # 下载代码及快速合并 等于git fetch ;git merge
$ git push #上传代码及快速合并
$ git push : #删除远程分支或标签
$ git push --tags #上传所有标签
branch
git branch -f master HEAD~3 //移动master位置
git branch -d //只能删除那些已经被当前分支的合并的分支
git branch –D //强制删除某个分支的话就用
git branch -u
git branch -a
tag
git tag tagName indexName #前面8位即可
git tag中使用-a, -s 或是 -u三个参数中任意一个,都会创建一个标签对象,并且需要一个标签消息(tag message)来为tag添加注释。 如果没有-m 或是 -F 这些参数,命令执行时会启动一个编辑器来让用户输入标签消息
切换分支(checkout)
git checkout . //还原所有文件到index存档文件
git checkout -b branchName master //新建分支名称
拉取与推送
git pull --rebase
git pull fetch;git rebase
git push origin foo~:master
git fetch origin master:foo
$ git push --tags #上传所有标签
删除与撤销
git reset //处于未加入暂存区 变更还在
git reset --hard HEAD^ //撤销一个合并
$ git reset --hard HEAD #撤销工作目录中所有未提交文件的修改内容
$ git checkout HEAD #撤销指定的未提交文件的修改内容
$ git revert #撤销指定的提交
$ git log --before="1 days" #退回到之前1天的版本
查看
git diff --cached //查看缓存区中哪些文件被修改了。q退出
git diff test --stat //统计一下有哪些文件被改动
git help diff详细查看其他参数和功能
git log --stat //打印详细的提交记录
git log --pretty=short //oneline,medium,full,fuller,email 或raw
--graph 选项可以可视化你的提交图
--topo-order提交会按逆时间顺序显示
git log --pretty=format:'%h : %s' --topo-order --graph
其他
git revert
git cherry-pick C1 C2; //复制到master
git rebase -i //重新排序interactive
git rebase caption master
git bisect
git describe master
git commit -a -m 'jh2k' #-a命令不会添加新建的文件
.gitignore规则不生效
.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中(通俗一点的说法就是,改项目已经提交了一次,但那次提交并没有加入.gitignore文件,或者就是提交至少一次之后,再添加.gitignore文件),则.gitignore是无效的,不会起作用的。解决方法就是先把本地缓存删除,然后再提交:
$ git rm -r --cached .
$ git add .