##文件操作 本地仓库 -- 暂存区 -- 远程仓库
-
查看本地文件:
输入 ls
-
删除本地文件:
输入 rm 文件名
-
查看缓存区文件:
输入 git ls-files
-
删除缓存区文件:
输入 git rm 文件名
-
在根目录或者任何子目录中都可创建忽略文件:
输入 touch .gitignore
编辑文件(Git忽略语法),每个要忽略的文件占一行,如:
*.o code2.c .gitignore(忽略自己)
-
文件归档:
git archive
基于最新提交建立归档文件:
输入 git archive -o file.zip HEAD
只将部分文件(src,doc)建立到归档文件:
输入 git archive -o file.zip HEAD src doc
...
##常用命令
创建一个空文件夹files
-
将该文件夹初始为git仓库:
输入 git init
-
添加远程仓库地址:
输入 git remote add origin https://git.oschina.net/hustrenesaslab/Baby_Pro.git
-
修改远程仓库地址:
1.输入 git remote set-url origin [url] 2.修改./git/config 3.先删除后添加 git remote rm origin; git remote add origin [url]
-
拉取master分支下的文件:
输入 git pull origin master
注意:git pull = git fetch + git merge 多个开发者对同一文件的同一区域做了不同修改时,产生冲突将导致pull失败
输入 git ls-files -s
发生合并冲突的文件会显示大于0的暂存区编号,意为暂存区存在多个版本 编号为1的文件为冲突文件的父版本,其他为冲突子版本
可通过手工编辑或者图形化冲突解决工具解决冲突,重新提交
输入 git mergetool
-
添加文件到暂存区(*表示添加所有文件):
输入 git add */文件名
-
交互式添加文件到暂存区:
输入 git add -i
-
提交:
输入 git commit -m "注释"
-
修改提交:
输入 git commit --amend -m "注释"
-
允许空提交:
输入 git commit --allow-empty -m "注释"
-
查看提交记录:
输入 git log [--stat(查看文件变更信息)--oneline(简易显示)]
-
文件修改后,查看差异输出:
输入 git diff [文件名]
-
撤销未提交的修改(*表示撤销所有文件的修改):
输入 git checkout */文件名
-
保存当前进度:
输入 git stash [save "注释说明"]
-
查看保存的进度:
输入 git stash list
-
恢复保存的进度,继续之前的工作:
输入 git stash apply/pop(恢复后自动删除此进度区)
-
删除保存的所有进度:
输入 git stash clear
-
推送:
输入 git push origin master
注意单个文件不能大于100MB
-
查看分支:
输入 git branch [-v] (查看本地分支) 输入 git remote / branch -r (查看远程分支)
-
创建分支:
输入 git branch 分支名 [起点]
-
切换分支:
输入 git checkout 分支名
-
创建分支同时切换到该分支:
输入 git checkout -b 分支名
注意:创建分支后要
git push origin 分支名
才会在远程库生成分支 -
创建本地分支映射到远程分支:
输入 git checkout -b 本地分支名 origin/远程分支名
-
修改本地分支名称:
输入 git branch -m 本地分支原名称 本地分支新名称
-
删除分支:
输入 git branch -d/D 分支名(只是删除本地分支名) 输入 git push origin :分支名 或者 git push origin --delete 分支名(删除远程分支)
-
合并分支:
先切换到目的分支,再 输入 git merge 源分支
注意:要
git push origin 目的分支
才会在远程库更新合并后的目的分支 -
创建附注标签:
输入 git tag -a v0.0 -m "最初版本"
-
查看标签:
输入 git tag(查看当前分支下的标签) 输入 git show 标签名(查看某个标签的详细信息) 输入 git ls-remote --tags (查看远程分支)
-
删除标签:
输入 git tag -d 标签名 (删除本地标签) 输入 git push origin :标签名 (删除远程标签)
-
标签发布:
输入 git push origin 标签名 输入 git push origin --tags(一次性提交所有标签)
-
暂存区重置,本地库内容不受影响:
输入 git reset --soft 提交ID
-
本地库重置,即修改游标(慎用!此提交ID之后的数据再被彻底丢弃):
输入 git reset --hard 提交ID
重置之后,提交记录也被修改,git log已经查看不到此提交ID之后的信息
如何挽救错误的重置?查看.git/logs/refs/heads/master,记录了所有指向的变化。使用git reflog操作该文件:
查看文件内容:
输入 git reflog show master [| head -5(只显示前5条)]
重置master:
输入 git reset --hard <refname@{<n>}> <refname@{<n>}>为提交ID的简易符,例如:master@{2}
##图形化工具
Git自带的工具
-
浏览版本库:
输入 gitk
-
版本库操作:
输入 git gui 或者 git citool
需自行安装的工具
-
版本库浏览+操作 gitg、qgit:
输入 sudo aptitude install gitg/qgit 安装(linux) 输入 gitg/qgit & 启动
##Git管理工具
Git自带的工具
-
版本库清理、优化:
输入 git gc
按需自动执行优化:
输入 git gc --auto
##常见错误
-
git status [-s(精简格式输出)]
stderr: error: bad signature fatal: index file corrupt 输入 rm -f .git/index git reset
重启后,重新add,commit,push
Author : ZuoJiawei XiangcaiHuang Date : July 8,2017