为什么要做版本控制:要保留之前所有的版本,以便回滚与修改
想要让git对一个目录进行版本控制需要以下步骤:
1. 进入要管理的文件夹
2. 执行初始化命令:git init
3. 管理目录下的文件状态
- 三种状态的变化:用git status查看状态时,工作区修改后以及新增的文件会变成红色,提交到暂存区后会变成绿色。暂存区的文件不需要提交到版本库的话,可以回滾回来。
- 红色:新增的文件/修改了的原老文件 -》git add 文件名
- 绿色:git已经管理起来的文件 -》 git commit -m ‘描述信息’
- 生成版本
4. 个人信息配置:用户名、邮箱(一次即可)
5. 将修改后的文件提交到暂存区:git add 文件名
6. 生成版本:git commit -m ‘描述信息’,提交到本地的版本库,push后才是推送到远端的库
7. 查看版本信息:git log
git remote add origin 对于远程分支名的理解
- 给远程库取别名:git remote add origin 远程仓库地址
- remote可以看做是一个人的电脑,假设有十个人合作,那么就有10个remote对象。为了方便大家同步,我们创建一个叫做origin的remote,大家都和这个origin同步,那么大家就可以达成一致了。
- git clone xxx就是把位于xxx的一个remote拷贝到本地,这个remote我们叫做origin。git remote # 查看有哪些remote,一般就一个,叫做origin
- git remote remove origin:删除,一般不用到
- git remote add origin xxx :新增,一般不用到。xxx 请用最开始的 git clone xxx 中的 xxx 替代
- git clone xxx 命令,可以看做是一个复合命令,它做了两件事:第一,下载文件,第二,执行 git remote add origin xxx
- 向远程推送代码:git push -u origin 分支;简单说,就是本地分支与远程的分支无任何联系,git push无法推上去,用-u(--up-stream)来建立本地分支与远程某个分支的关联,形成一个管道,之后 git push可以直接沿着管道到达关联的分支,而直接使用不带别的参数的git pull从之前push到的分支来pull,无需再加-u参数了。相当于第一次串门的时候你登了个记办了个vip。以后再来就知道是你来了,不用再搜身了。
- 从远程仓库克隆代码:git clone 远程仓库地址
- 切换分支:git checkout 分支名;git checkout -b 分支名:创建并切换到分支
回滚(git reset):
1. 回滚至之前版本
- git log查询版本号
- git reset --hard 版本号
2. 回滚至之后版本
- git reflog查询版本号
- git reset --hard 版本号
输入git reset --hard 版本号,回滾到上一个版本,再用git log打印时,会丢失回滾前的最后一个版本信息;git relog打印出来的信息还包含回滾前的最后一个版本。
合并分支(本地):在master分支上,输入git merge bug,就将bug分支合并到了master上。
git branch -d bug:删掉bug分支
分支冲突:可以找到冲突的文件,手动修复文件冲突
git rebase:合并提交记录
撤销对工作区文件的修改:git checkout -- <file>
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
提交到暂存区:git add <file>
从暂存区回退到已修改的状态:git reset HEAD <file>
其他命令:
- git reflog用来记录输入过的每一次命令
版本回退/前进:git reset --hard commit_id
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
git reflog用来记录输入过的每一次命令。要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
回退到上一版本:git reset --hard HEAD^。(用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^)
储藏工作区内容:git stash
查看储藏的工作区内容:git stash list
恢复工作区内容,从储藏区恢复到工作区:
- 1. 用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
- 2. 用git stash pop,恢复的同时把stash内容也删了
查看远程库的信息:git remote
- cherry pick的作用:把指定的commit,提交到一个新的分支上。