1,git基础操作
//克隆项目
git clone <项目地址>
//查看所有分支
git branch -a
//切换分支
git checkout <分支名>
//创建并切换分支
git checkout -b <分支名>
//创建并同步远程分支到本地
git checkout -b <分支名> origin/<分支名>
//拉取远端分支代码
git pull origin <分支名>
//把文件保存到暂存区
git add .
//将暂存区内容提交到本地版本库
git commit -m '提交备注信息'
//重新提交备注信息
git commit --amend
//推送本地内容到远端分支
git push origin <分支名>
//查看当前提交状态
git status
//查看commit记录
git log --oneline
//删除本地分支
git branch -d <分支名>
//删除远端分支
git push origin -d <分支名>
2,git中解决冲突
- 如果修改了本地分支代码并提交本地版本库后,没有拉取最新远端代码就git push会报错
解决:
1, git pull origin <分支名> 拉取远端最新代码
2, 全局搜索>>>,找到冲突的模块,处理冲突
3, git add .
4, git commit -m '备注'
5, git push origin <分支名> 推送本地修改到远端分支
- 如果修改本地分支代码,未保存到暂存区和本地代码库就拉取远端代码,会报错如下:
解决:
1, git add .
2, git commit -m '备注'
3, git pull origin <分支名> 拉取远端最新代码(如果有冲突需要4,5,6,7步骤,如果没有冲突,直接第7步)
4, 全局搜索>>>,找到冲突的模块,处理冲突
5, git add .
6, git commit -m '备注'
7, git push origin <分支名> 推送本地修改到远端分支
3,git中vim编辑
git commit 如果没有-m提交备注信息会报错如下:
如果遇到这种情况不要慌,此时是vim编辑器,按下面操作即可:
-
(1)在任意地方输入i,vim 即可进入编辑状态
-
(2) 编辑完后,按ESC退出编辑状态
-
(3) 输入小写冒号:wq,表示保存文件并退出vim
此时完成了commit的备注
4,git中合并多个commit
- (1) git rebase
git rebase -i <commit的SHA-1值>(指名要合并的版本之前的最后一个版本号,注意和并不包含这个版本)
或者
git rebase -i HEAD~<合并commit的个数>
上图合并rebase1\rebase2\rebase3时可以用一下两种方式
git rebase -i 62cf1bc
或者
git rebase -i HEAD~3
- (2) 选取要合并的提交
注意需要保留的commit前面的pick保持不变,把需要合并的commit前的pick改成's'或者'squash',
git会把前面为 'squash'的 commit 记录与它的上一条记录合并为一条。
修改完后按esc退出编辑状态
输入:wq保存并退出
- (3) 修改commit备注信息
-(4)完成修改,只会保留被pick的commit
注意至少保留一个pick,否则会报错:
可以选择git rebase --abort中断并重新开始rebase
- (5) 提交
如果是本地仓库commit,可以git push 继续接下来的操作
如果是远程代码库中的代码,可以通过git push -f 强制推送
5.版本回退
git reset --hard HEAD^^ 回到上个版本(一个^表示回退一次,有几个表示回退几次,HEAD^表示当前版本,HEAD^^表示上一次commit)
git reset --hard HEAD~100 回退100次版本(HEAD~1表示当前commit,HEAD~2表示上一次commit)
git reset --hard <commit的SHA-1值> 表示回退到具体某个commit版本
6.暂存
//存储已跟踪文件的改动和暂存区的内容,注意:未被跟踪的文件不会被暂存
git stash
或者
git stash save '备注信息'
//查看所有的暂存
git list
// 使用暂存
git stash apply stash名字 //取出后栈内还保存当前存储记录,下次可以再次取出当前存储,如git stash apply stash@{0}
git stash pop stash名字 // 取出后,栈内便删除当前存储记录,可以理解为数组的pop方法,如git stash pop stash@{0}
// 移除存储记录
git stash drop 存储记录的名字 //即git stash list每条记录开头显示的名字,如:git stash drop stash@{0}
// 暂存除了暂存区以外的改动
git stash save --keep-index
持续更新。。。