正常基本操作
本地操作
初始化本地库
git init
查看本地库状态
git status
添加暂存区
git add <file name>
注:全部提交<file name> = .
从暂存区中删除
git rm --cached <file name>
将暂存区中的修改提交至本地库
git commit -m "提交信息" <file name>
注:全部提交 <file name> = null
涉及远端的操作
远端代码拉取
git fetch origin 分支名
获取远端分支代码数据,并存储到.git/FETCH_HEAD文件中
远端代码merge到本地分支
git merge FETCH_HEAD
将远端获取得到的FETCH_HEAD版本merge到当前分支
远端代码拉取和合并
git pull origin 分支名
等于git fetch origin 分支名 + git merge FETCH_HEAD
拉取远端分支并合并到当前分支上
远端代码推送
git push origin 本地分支名:远端分支名
将本地分支推送到远端分支上并合并
分支操作
查看分支
git branch
查看本地分支
git branch -r
查看远程分支
git branch -a
查看本地和远程所有分支(远程为红色字体)
创建本地分支
git branch 新分支名 <新分支初始内容来源>
创建以新分支初始内容来源(可为远端)为副本的新分支
缺省新分支初始内容来源时以当前分支为副本
git checkout -b 新分支名 <新分支初始内容来源>
创建以新分支初始内容来源(可为远端)为副本的新分支并切换到新分支
缺省新分支初始内容来源时以当前分支为副本
git checkout -b 新分支名 origin/远端分支名
创建以远端分支名为副本的新分支,并切换至新分支
创建远程分支
git push origin 本地分支名:远端分支名
其实为推送命令,但当远端不存在该分支时会自动创建
删除本地分支
git branch -d 分支名
删除分支(遇到某些问题时,会提示将-d改为-D)
删除远程分支
git push origin --delete 远程分支
删除远程分支
本地分支与远程分支关联
git branch --set-upstream-to origin/远程分支名 本地分支名
将本地分支与远程分支关联,之后可直接用git pull或git push进行关联分支间的推送
本地分支合并
git merge 分支名
将分合并指当前分支,出现冲突时会进入merging状态
Merge冲突的解决
本地merge冲突
处理方法
冲突时进入merging状态
此时进入编辑器可以发现冲突文件中存在如下情况:
介于 <<<<<<<HEAD 和 ======= 之间的内容是代码块A中内容 介于 ======= 和 >>>>>>> 之间的内容是代码块B中内容,处理该部分冲突内容即可
返回命令行正常git add,git commit即可
git commit之后若处理完所有冲突文件的冲突内容,则会退出merging状态
版本管理、回退相关
注:远端的版本管理、回退一般先在本地进行,修复完成后push到远端进行覆盖
短时间内回退,错误版本并未产生大范围影响
本地历史版本查看
git reflog
查看本地当前分支版本信息(简要)和变更记录
git log
查看本地当前分支版本详细信息和变更记录(含变更人和提交时间)
本地版本回退
git reset --hard 版本号
将当前分支回退至命令中的版本号
远端版本覆盖
git push -f origin 远端分支名
长时间后回退,错误版本产生大范围影响(不建议使用,后续分支的merge可能出现修改被忽略的现象)
本地版本修改撤销
git revert HEAD
撤销上次提交
git revert HEAD~1
撤销上上次提交
git revert 版本号
撤销版本号对应的提交
远端版本覆盖
git push origin 分支名
git撤销修改
修改文件后未提交到暂存区
git checkout --<file>
撤销文件的修改
注:撤销全部文件修改为git checkout .
修改文件后提交到暂存区,但未合并至分支
git reset HEAD <file>
将文件从暂存区撤回至普通修改,后续可按照未提交至暂存区继续撤销
注:撤销全部文件修改为git reset HEAD .
修改文件后已经合并至分支
使用版本回退操作
git保存本地修改,pull远端
存储当前分支下的所有改动
git stash
释放最近一次保存的内容,并且将该次保存的内容出栈
git stash pop
释放某次保存的内容
git stash pop stash@{n}
其中n为距离当前第n次的保存,其中stash@{0}表示最近一次保存