Git学习笔记
作为学习git的自我笔记。
git简介
可实现版本控制,是分布式版本控制系统。
安装与配置
sudo apt-get install git #Ubuntu安装git
git #测试git是否安装成功
安装成功会显示git命令帮助文档。
版本库创建
执行该命令会在当前文件夹创建.git
隐藏目录,这是版本库目录
mkdir git_test
cd git_test
git init
ll
git命令
创建版本
‘版本1’仅是该版本解释说明,git会为版本生成唯一的序列号
git add code.txt
git commit –m '版本1'
查看版本记录
查看版本记录,一条记录四个信息分别为版本序列,作者,日期,版本说明
git log #版本详细信息
git log --pretty=oneline #版本简要信息(版本序列,版本说明)
git log --pretty=oneline --graph #还没弄懂
版本回退
-
方法一(适合紧邻版本切换,向旧版本迭代)
HEAD
表示当前最新版本HEAD^
表示当前版本的前一个版本,HEAD^^
表示当前版本的前两个版本HEAD~1
表示当前版本的前一个版本,HEAD~100
表示当前版本的前100版本
git reset --hard HEAD^
-
方法二(通过版本序列指定,可向前可向后)
git reset --hard 版本号
注:若找不到版本序列号了,可以执行
git reflog
命令查看操作记录,或许就可以查到想要的版本
工作区和暂存区&git运行过程
git的版本控制仅保存增删改操作,不是备份文件。
git版本控制流程如下:
工作区(写代码的工作目录)有一个隐藏目录.git
,是git
的版本库。其中包含暂存区以及版本控制相关结构(例如自动创建的master
以及指向当前版本的HEAD
)。文件往git
版本库里添加的时候分两步执行的:第一步是用git add
把文件修改添加到暂存区;第二步是用git commit
把暂存区的所有内容提交到当前分支的一个新版本。
查看当前工作目录状态
会显示未备份的文件、未跟踪的文件。并且有相关命令提示。
git status
撤销修改操作
- 未提交到暂存器,执行撤销修改
git restore <file>... #三个点:可批量文件操作
- 提交到暂存区,执行撤销修改(仅撤销到工作区)
git restore --staged <file>... #三个点:可批量文件操作
- 提交到版本库,则需要执行版本回退
对比文件不同
git diff <版本/文件> <版本/文件>
删除文件
rm
删除工作区中文件
- 确定删:
git rm <文件> #从暂存区删除 git commit -m '版本说明'
- 删错:
git restore --staged <file>... #恢复到暂存区
注:删除并提交到版本库则只能通过版本恢复
分支管理
git
把我们之前每次提交的版本串成一条时间线,这条时间线就是一个分支。
1. 一般master
分支为主分支。
2. HEAD
指向master
,master
指向当前版本。故HEAD
指向的就是当前分支。
git branch <name> #创建分支
git checkout <name> #切换分支
git checkout -b <name>#创建+切换分支
git merge <name> #合并某分支到当前分支
git branch -d <name>#删除分支
合并分支
git merge dev #将当前分支与指定分支(此处为dev)合并
dev
分支与master
分支没有分歧(dev
版本由master
所指版本而来,master
没有其他改动)
合并为快进模式(Fast-forward
为该模式提示信息)
dev
与master
都有改动,需要手动合并相应文件的差异代码
- 遇到bug要解决时,可创建一个bug分支作为临时分支。当前分支的工作可以通过以下命令保存和恢复
git stash #保存工作内容 git stash list #查看保存的工作内容 git stash pop #恢复工作内容
使用远程仓库
首先需要在远程仓库配置ssh密钥。
ssh-keygen -t rsa -C "邮箱地址" #生成密钥
执行完命令会在用户主目录产生.ssh
目录。
其中:公钥为id_rsa.pub
私钥为id_rsa
然后再在远程仓库添加,这里不做阐述。
git clone <仓库的ssh链接> #拉取远程代码
git push origin <分支名称> #推送本地代码
git branch --set-upstream-to=<origin/远程分支名称> <本地分支名称> #本地分支跟踪服务器分支
工作中使用git
项目经理:
(1)项目经理搭建项目的框架。
(2)搭建完项目框架之后,项目经理把项目框架代码放到服务器。
普通员工:
(1)在自己的电脑上,生成ssh公钥,然后把公钥给项目经理,项目经理把它添加的服务器上面。
(2)项目经理会给每个组员的项目代码的地址,组员把代码下载到自己的电脑上。
(3)创建本地的分支dev,在dev分支中进行每天的开发。
(4)每一个员工开发完自己的代码之后,都需要将代码发布远程的dev分支上。
Master:用户保存发布的项目代码。V1.0,V2.0
Dev:保存开发过程中的代码。