创建一个版本库
git init
git add 文件名
git commit –m “说明信息”
git log 查看版本(commit 完后才能看到)
git log --pretty=online
git log --graph --pretty=oneline
git reflog 查看所有分支的所有操作记录
git status 查看文件状态
版本回退到某一个版本:
HEAD(当前版本) HEAD^ HEAD~1(上一个版本)
git reset --hard HEAD^
恢复到历史版本:
git reset --hard 版本号
关闭终端后看不到版本号时
git reflog 查看历史操作记录
工作区和暂存区
工作区: git 管理的目录,
![]() |
版本库(.git)其中最重要的就是称为stage(或者叫index)的暂存区
查看当前工作区 git status
git管理的文件修改,它只会提交暂存区的修改来创建版本
撤销修改
(丢弃工作区的改动(文件git commit 后才能对文件管理))
git checkout -- 文件名
(丢弃暂存区的改动)
git reset HEAD 文件名 取消暂存
后使用 git checkout -- 文件名
(提交到版本库)
恢复版本 git reset --hard HEAD~num
对比工作区和某个版本中文件的不同
使用:git diff HEAD -- 文件名
--- 代表HEAD当前版本
+++代表 工作区的文件
无加减的表示两个文件都有的内容
对比两个版本间文件的不同
git diff HEAD HEAD^ -- 文件名
删除文件: 只能恢复提交到暂存区过的文件(git 记录暂存区的操作,刚新建的文件git 还没记录操作需要add操作git才能跟踪文件)
(1) 删除工作区 rm 文件名 恢复 git checkout – 文件名
(2) 删除文件提交到暂存区 恢复
① git reset HEAD 文件名 恢复到工作区
②git checkout -- 文件名 恢复文件
分支
创建分支 git branch 分支名
创建并进入分支 git branch –b 分支名
切换分支 git checkout 分支名
合并到当前分支 git merg 分支名
删除分支 git branch –d 分支名
git log –graph –pretty=online 查看分支结构
解决合并冲突
编辑冲突文件修改 -> git add 冲突文件 -> git commit –m “提交说明信息”
git分支管理策略(merg 默认快速合并)
通常,合并分支时,如果可能,git会用fast forward模式,但是有些快速合并并不能成功而且合并时没有冲突,这个时候合并之后并做一次新的提交。
mater 和 分支都有提交版本 ,但修改的不是同一文件,merg 合并时会合并提交一个版本。
禁止快速合并 git merge –no-ff –m “提示信息’” 分支名
(箭头理解成分支圆圈理解成版本库)
下图为master和dev分支都进行了提交,合并时应该禁止快速合并
bug 分支
git stash
切换到bug所在的分支,并创建并切换到一个临时的分支,修复bug,修复完bug之后切换到bug分支,并合并分支使用 --no-ff 模式 ,删除临时分支,切换回工作分支
git stash pop
使用gitHub
创建ssh
git config --global --list 查看配置
如未配置,则执行以下命令进行配置:
git config --global user.name "这里换上你的用户名"
git config --global user.email "这里换上你的邮箱"
然后执行以下命令生成秘钥:
ssh-keygen -t rsa -C "这里换上你的邮箱"
文件保存在C:/user/当前用户/.ssh
C:/user/当前用户/.gitconfig (用户名及邮箱)
推送分支 git push origin 分支名
将本地分支跟踪服务分支 git branch –set-upstream=orgin/远程分支名 本地分支名
commit 后 使用 git status 查看与远程分支的差异
拉取远程分支代码 git pull orgin 分支名
关联到远程仓库
git remote add origin 远程仓库地址
将远程仓库与本地仓库同步合并
git pull --rebase origin master
把本地仓库代码内容推送到远程仓库
git push -u origin master
撤销修改
撤销文件在工作区的修改:
git checkout -- 文件名
撤销文件在缓存区的修改:
git reset 文件名 # 撤销指定文件的git add操作,即在缓存区的修改
git reset # 撤销之前所有的git add操作,即在缓存区的修改
注意:
1、git push -u origin master报错如下:
$ git push -u origin master
To gitee.com:g/My.git
! [rejected] master -> master (non-fast-forward)
error: 无法推送一些引用到 'git@gitee.com:g/M.git'
提示:更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。
提示:检出该分支并整合远程变更(如 'git pull ...'),然后再推送。详见
提示:'git push --help' 中的 'Note about fast-forwards' 小节。
解决办法:
执行:git push -u origin master -f 以及 git push origin master
初始化本地文件件,下载远程仓库中代码\
1.新建文件夹进入 git init
2.关联远程仓库地址 git remote add orgin 远程仓库地址
3.下载远程仓库代码到本地 git pull
提示问题
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=orgin/<branch> master
解决:
git pull --rebase
git pull orgin master
git pull 显示Already up to date
1、git rebase HEAD;
2、git checkout .