一. git初始化和相关操作:
- git初始化:
git init
- 设置用户名:
git config --global user.name '用户名'
- 设置用户名邮箱:
git config --global user.email '邮箱'
(不加 --global为仓库级别,否是为系统级别,仓库级别>系统级别) - 查看初始化配置:
git config --list
二. 提交命令:
-
工作区=>暂存区(可以把 . 替换成指定文件,. 表示全部文件)
git add .
-
暂存区=>git仓库(不指定文件名默认暂存区全部提交)
git commit -m "日志信息" [文件名]
-
查看提交状态
git status
-
查看没有暂存的文件
git diff
-
查看暂存但没有提交的文件
git diff --staged
-
查看暂存区的文件
git ls-files -s
-
撤销没有添加暂存区的工作区修改
git checkout [文件名]
三.控制版本
查看提交版本(head为指针,指向当前版本 )
git log //详细查看
git log --pretty=oneline //简洁查看,每条日志显示一行
git log --oneline //简洁显示前部分hash值(只显示当前可后退的版本日志)
git log --oneline --decorate --graph --all //查看整个项目的分支图
git reflog //显示每一次head变化记录
控制版本的前进后退
1: --soft移动本地仓库head指针,
2: --mixed移动本地仓库指针和重置暂存区,
3: --hard移动本地仓库指针、重置暂存区和工作区
git reset --hard 【索引值】 //根据索引值返回指定版本
git reset --hard HEAD^^^ //(^表示退一个版本,可以写多个)
git reset --hard HEAD~1 //(~后面的数字表示退后几个版本)
git reset --hard HEAD //(当前指针同步刷新)
四.分支操作
- 创建分支
git branch [分支名]
- 创建一个指定版本的分支
git branch [分支名] [指定版本的索引值]
- 创建一个分支并切换到创建的分支上
git checkout -b [分支名]
- 查看分支
git branch -v
- 切换分支
git checkout [分支名]
- 合并分支
//切换到被合并的分支上: git checkout [要合并的分支] //执行merge命令: git merge [有新内容要合并的分支]
- 强制删除分支
git branch -D [分支名]
- 删除分支,如果这个分支未被合并则删除失败
git branch -d [分支名]
- 不提交的状态下储存工作状态
git stash //储存工作状态 git stash list //查看存储 git stash apply [指定储存] //取出储存(如果不指定,git默认指定最近的储存) git stash pop //取出最近的存储后立即从栈删除
五.标签操作
- 查看标签列表
git tag
- 为当前版本创建标签
git tag [标签名]
- 指定版本创建标签
git tag [标签名] [哈希值]
- 删除标签
git tag -d [标签名]
- 回到指定标签查看
git checkout [标签名]
- 创建指定标签分支
git checkout -b [标签名]
六.远程github仓库操作
-
给远程项目地址取别名
git remote add [别名] [远程项目地址]
-
远程仓库复制到本地
git clone [远程地址]
-
发送到远程仓库
//如果远程仓库没有这个分支则会新建这个分支 git push [远程地址] [本地分支] //将指定本地分支提交到指定远程分支上 git push [远程地址] [本地分支]:[远程分支]
-
拉取远程库内容
(方法1)抓取远程库:git fetch [远程地址] [远程分支] 切换到到远程库分支查看内容:git checkout [远程地址/远程分支] 确认内容后切换回原来的分支:git checkout [分支名] 合并远程内容:git merge [远程地址/远程分支] (方法2)直接拉取远程内容合并当前本地分支:git pull [远程地址] [远程分支] //pull=fetch+merge 或:git pull [远程地址] [远程分支]:[本地分支] (将指定远程分支合并到指定本地分支上)
解决协同开发冲突:先拉取修改后在提交push