git最常用操作
1.初始化仓库
# 在文件夹下执行,形成工作区
git init
2、配置操作git的用户信息
1)当前仓库:局部
"""
>: git config user.name '用户名'
-- 用户名
>: git config user.email '用户邮箱'
-- 用户邮箱
注:在当前仓库下的config新建用户信息,只能在当前仓库下使用
"""
2)所有仓库:全局
"""
>: git config --global user.name '用户名'
>: git config --global user.email '用户邮箱'
注:在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用
"""
3、将本地文件提交到缓冲区(暂存区)
# 在文件价下执行
git add . # 将所有文件缓冲区
git add 文件名 # 添加指定文件
4、提交到本地仓库(归档区)
提交暂存区内容到版本库
# git commit -m "版本描述信息"
5、添加远程仓库
1)先在github或者gitee上创建仓库
2)本地添加远程仓库源(以gitee为例)
git remote add origin git@gitee.com:class-bob/test_git.git
6、推送本地归档区的文件到远程
git push -u origin master # 此时本地和远程都只有一个分支即master分支,操作会弹出输入密码,也可添加公钥以ssh的方式进行
<<<<<<< HEAD
7、git的回滚操作
1)查看仓库状态
"""
# 当仓库中有文件增加、删除、修改,都可以在仓库状态中查看
>: git status
-- 查看仓库状态
>: git status -s
-- 查看仓库状态的简约显示
"""
2)撤销工作区操作:改、删
"""
>: git checkout .
-- 撤销所有暂存区的提交
>: git checkout 文件名
-- 撤销某一文件的暂存区提交
"""
3)撤销暂存区提交:add的逆运算
"""
>: git reset HEAD .
-- 撤销所有暂存区的提交
>: git reset 文件名
-- 撤销某一文件的暂存区提交
"""
4)撤销版本库提交:commit的逆运算
"""
回滚暂存区已经提交到版本库的操作:
查看历史版本:
>: git log
>: git reflog
查看时间点之前|之后的日志:
>: git log --after 2018-6-1
>: git log --before 2018-6-1
>: git reflog --after 2018-6-1
>: git reflog --before 2018-6-1
查看指定开发者日志
>: git log --author author_name
>: git reflog --author author_name
回滚到指定版本:三种颗粒度
1、--hard 从存档区直接回滚所有,即将暂存区和工作区都回滚到上次commit的版本,力度最大
回滚到上一个版本:
>: git reset --hard HEAD^
>: git reset --hard HEAD~1
回滚到上三个版本:
>: git reset --hard HEAD^^^
>: git reset --hard HEAD~3
回滚到指定版本号的版本:
>: git reset --hard 版本号
>: eg: git reset --hard 35cb292
2、--mixed 存档区和暂存区回滚到上一版本,工作区处于未add的红色状态
git reset --mixed 版本号
3、--soft 仅仅存档区回滚,暂存区还处于add后的绿色状态
回滚上一版本
git reset --soft HEAD^
回滚到指定版本号的版本:
>: git reset --soft 版本号
"""
8、复杂回滚操作 git revert
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FIVu3mKX-1585574540926)(/Users/bobwang/Library/Application Support/typora-user-images/image-20200330193013063.png)]
操作:
git revert <改动2的版本号> # 会出现一个编辑页面,需要写新的提交描述,也可以不写,直接 :wq 退出,采用默认的修改描述,即下图
结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TIfeEW4I-1585574540932)(/Users/bobwang/Library/Application Support/typora-user-images/image-20200330193304502.png)]
9、创建切换分支
1)查看分支
git branch -v # 查看当前有哪些分支
2)创建并切换分支
git checkout -b dev
3)删除分支
git branch -d dev
10、合并分支
# 先切换到master分支,保证切换前分支已经将修改提交到了存档区
git checkout master
# 合并dev分支
git merge dev
# 合并成功后删除dev分支
git branch -d dev
<<<<<<< HEAD
11、解决冲突
# 假如b2,b1分支对同一份代码做了修改,b1先与master分支合并分支
模拟操作
1、(在b1上进行)
# 切换到b1
git checkout b1
# 提交修改
git add .
git commit -m'b1进行操作'
(同时b2也在做操作)
# 切换到b1
git checkout b2
# 提交修改
git add .
git commit -m'b2进行操作'
2、b1先进行跟主干的合并
git merge b1 # 此时在master上
3、b2后跟主干进行合并
git checkout master
git merge b2 # 出现冲突
4、解决冲突
# 先切换回b2
git checkout b2
# 将主干分支合并到b2,次步将b1分支代码合并到b2也可,毕竟b1和master完全一样
gie merge master
# 修改冲突代码
# 再次提交
git add .
git commit -m '解决b2合并冲突'
# 切换回master
git checkout master
# 再次合并
git merge b2
12、当远程版本落后本地版本时,git pull
git pull
# 相当于
git fetch
git merge origin/master
13、合并远程分支
如果远程有分支dev本地没有,
1)先用git fetch
2)在本地的创建对应的分支,git checkout -b dev
3)git pull
4)本地修改后直接上传远程dev git push origin dev
5)本地将dev分支的代码merge到master
6)将本地推送到远程master git push origin master 或者 git push
如果远程没有分支dev,本地有
1)确认本地所在的分支dev
2)push命令:git push --set-upstream origin dev