Git的版本控制和分支管理
一、新建一个空文件夹(这个文件夹将被设置为仓库,我们的代码将被托管在此)
mkdir git_test
二、初始化Git(一定要在步骤一种的创建的文件的目录下使用git init命令)
git init //将当前目录设置为git的仓库
三、将代码从本地提交到缓冲去
git add test.py
四、将代码从缓冲区提交到Git仓库
git commit test.py
- git status 查看当前的代码修改状态
- git log 查看git日志
- git log --pretty=onelie 只显示提交的ID和日志内容
- git reset --hard HEAD^ 回滚到上一次
- git reset --hard 343... 回滚到指定版本
- git reflog 查看所有的操作记录(Q 退出reflog界面回到bash命令行)
- checkout 撤回到未修改之前的状态(未提交的状态)
- rm file 本地删除 然后再 git add/rm file 提交到暂存区
- git checkout --file 把工作区里的操作撤销
五、从远程克隆git项目
- http:可以直接下载
- ssh:必须输入用户名密码来认证(在github上添加响应密钥也可以不用输)
使用远程仓库管理项目的一般流程:
- 在github上新建一个仓库(gitTest)
- 然后使用git clone命令从远程下载上面已经创建好的仓 库(文件保存在执行该命令的目录下面)
$ git clone git@github.com:BobLiu1996/gitTest.git
-
进入这个项目,注意:只有在这个目录里面才能管理到项目。
-
当上面的提交本地仓库流程完成之后,使用一下命令和远程仓库建立连接(当然发可以使用https协议,这里建议使用ssh协议)
git remote add origin git@github.com:BobLiu1996/gitTest.git
-
再向远程仓库提交代码(如果再github上的添加有相应ssh客户端的密钥的话,则可以不使用这个参数)
git push -u origin master //-u参数表示要输入githu网站的用户名字
当然为了方便,我们可以再github上添加自己的ssh客户端的密钥(以Linux系统为例子,gitHub网站其实就是一个提供ssh和https服务的网站)
生成客户端的密钥:
$:ssh-keygen //生成ssh客户端的密钥
生成的密钥将保存在:~/.ssh/id_rsa.pub文件中,所以将这个密钥中的内容全部复制出来(注意,用vim打开的话,复制文本时会出现部分可是混乱,因此可以使用一下方法:
$:cat id_rsa.pub
将密钥打印到bash端,再使用复制命令黏贴即可
- 针对仓库中某一个项目进行设置
进入github中已经建立好的仓库,依次点击"Setting"----->"Deploy Keys"----->将上面复制的密钥进行响应粘贴即可(注意勾选写的权限)
- 针对仓库和中所有的项目进行设置
不再进入某个项目了,直接点击头像,依次点击"setting"---->"SSH and GPG GEN " ,将上面复制的密钥粘贴即可。
当向本地提交完后,再使用
$:git pussh origin master //向远程创库提交
注意:当使用https协议从github克隆下的项目时,而又想使用ssh向远程仓库提交文件时,只要更改.git中的config文件即可
$:vim .git/config
像下面改url
[remote "origin"]
url = git@github.com:BobLiu1996/gitTest.git //BobLiu1996为网站用户名,gitTest.git为你的项目名
六、分支管理
为什么要用分支管理?相当于操作系统中的多进程,这些个分支互不影响,举个例子:在在团开发过程中,加入你的代码还没完成,如果提交到仓库,则会导致其他人从仓库中下载的代码无法运行和调试,但是你又的保持你的开发进度,怎么办??使用git中的分支管理。
基本流程:
- 远程创建空仓库
- 把本地仓库推送到远程(本地已经有仓库)
git remote add origin git@github.com:BobLiu1996/gitTest.git
git push origin master (推送到远程仓库)
- 创建分支(平行宇宙,由于自己开发dev)
git checkout -b branch_name 创建并且切换到分支 git checkout branch_name 切换到分支
git pull //从远程更新代码跟新到本地
git push //把本地代码推送到远程
git merge dev //将分支(dev)合并到主库(master)
在合并的过程中可能会产生冲突,这种冲突经常是由于master分支和dev分支修改了同一个文件,这个时候需要我们自己手动解决冲突。
然后要将本地的无冲突的文件重新push上github仓库。由于这个文件可能是新文件,所以需要全套的流程git add . git commit -m "注释" git push
gti stash 把当前工作环境临时保存 git stash apply 恢复之前保存的临时工作环境 git stash list 查看临时保存的列表 git stash drop 删除当前临时保存的环境备份
git stash pop 恢复并删除临时保存的环境备份