安装之类的就略过了直入正题
工作区:本地代码未add commit之前都在工作区
暂存区:修改后进行暂存的代码.git,如add 之后进行了存储
本地代码库:commit到本地代码库
远程仓库:push提交远程
忽略文件:.girignore配置忽略
作为注释
/开头防递归/结尾指定目录
表示匹配零个或多个任意字符
?表示只匹配一个任意字符
!表示取反
[abc]表示匹配a,b,c
[0-9]表示匹配0-9
/a*z/表示匹配/a/z或/a/b/z或/a/b/c/d/z
配置提交代码时用户信息:
git config --global user.name "name"
git config --global user.email "xxx@email.com"
global为全局配置,如果想在某个独立项目中使用其他名字或邮箱去掉global即可
编辑git信息
git config -e 编辑当前仓库
git config -e --global 编辑所有仓库
查看配置信息:
git config --list
创建命令:
git init:初始化仓库在当前目录下生成.git目录
git init newrepo在newrepo目录下生成.git
git clone:远程仓库拷贝项目
git clone <repo> <directory>:拷贝到指定目录
提交与修改:
git add --<file>:添加文件到暂存区
git add .:添加所有文件到暂存区
git status:查看当前仓库状态 -s以紧凑格式输出
git diff:比较暂存区和工作区差异
git diff --cached/--staged查看已暂存要提交内容
git commit -m :注释说明"提交暂存区到本地仓库
git commit -a -m:合并add执行commit
git commit --amend:漏提文件或修改提交信息尝试重新提交
git rm:删除工作区文件
git rm --cached:移除文件追踪单不删除,可用于不小心提交了不想追踪文件且未添加.gitignore文件
git rm -f:强制删除暂存区文件
git mv from to:移动或重命名工作区文件
提交日志:
git log:查看历史提交记录
git log -p:查看每次提交差异-数字可以查看最近指定次数提交差异
git log --stat:每次提交简要信息
git log --oneline :简洁版历史提交记录
git log --graph:查看历史分支,合并
git log --reverse:逆向查看日志
git log --decorate:查看标签
git log --author="name" --oneline:查看指定用户提交日志
--since --before --until --after:查看指定日期或范围例:git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
git blame <file>:以列表形势查看指定文件修改记录
远程操作:
git remote:查看远程仓库操作-v显示仓库对应的URL
git ls-remote (remote):显式地获得远程引用完整列表
git remote show name:查看名为name的远程仓库信息
git remote add name url:添加一个新的远程仓库并用name替代url,后续可以直接用name操作
git remote rename from to:修改远程仓库简写名,同时修改远程分支名
git fetch name:结合上边命令使用从远程拉取代码
git fetch --all:抓取所有远程仓库
git fetch:抓去远程仓库代码需要手动合并
git pull:下载远程代码并合并
git push:上传远程代码并合并
git push origin a:b:将本地a分支推送到远程仓库b分支
git push origin --delete branchname:删除远程分支
分支管理:
git branch:查看本地分支
git branch (branchname):创建分支
git branch -d (branchname):删除指定分支
git branch -v:查看每个分支最后提交--merged与--no-merged过滤合并未合并
git branch -vv:列出本地分及其详细信息
信息git checkout (branchname):切换分支
git checkout -b (branchname):创建并切换到新创建分支
git rebase master:将当前分支所有修改移到变基移到master,然后再切换到master分支快速合并当前分支完成代码合并,减少提交历史
git rebase --onto master server client:取出 client分支,找出处于client分支和server分支的共同祖先之后的修改,然后把它们在 master分支上重演一遍,即排除server分之修改只将独属于client的修改重演到master分支
git rebase master server:将上边提到的server分支重演到master分支,切换到master再进行快速合并git merge server
尽量少用变基操作因为风险可能有点大,如果使用只在本地代码进行变基,如提交到远程确保不会再丢弃上传的变基
标签:
git tag -a <tagname>:添加标签用于记录关键节点
git tag -a <tagname> (提交id):在指定提交下追加标签
git tag -d <tagname>:删除标签
git tag:查看标签
git tag -a <tagname> -m "message":指定标签信息
git tag -a v1.2 9fceb02:历史提交打tag
git tag -s <tagname> -m "message":PGP签名标签
git log --oneline --decorate --graph --all:输出提交历史、各个分支的指向以及项目的分支分叉情况
git push origin tagname:显示提交标签后才能在远程仓库共享
git push origin --tags:推送所有标签到远程仓库
git checkout -b [branchname] [tagname]:在特定的标签上创建一个新分支
git show <tagname> :查看修改内容
撤销操作:
git reset:回退版本
git reset HEAD file:从暂存区恢复文件到已修改未暂存状态
git reset eb43bf file.txt:回退指定版本
git checkout --file:撤销文件修改到上次提交状态
git reset HEAD:覆盖暂存区,工作区不受影响HEAD~1/2/3指定版本
git reset --hard commitID:永指定版本覆盖工作区
git reset --hard HEAD:回到之前的状态或其他你想要恢复的状态
git rm --cached <file> :删除暂存区文件,工作区不变
git checkout .(全部替换)/git checkout -- <file>(替换文件),会清除工作区中未添加到暂存区的改动。
git checkout HEAD .(全部替换)/git checkout HEAD <file>(替换文件),会清除工作区未提交改动和暂存区未提交改动。
代码合并
git merge (branchname): 合并指定分支到当前分支
git merge --abort:有冲突时简单地退出合并并尝试恢复到合并前状态
网友评论