git的基本使用
- 首先需要下载git
- 基本使用
- 初始化操作:
git init
- 初始化以后就会产生一个.git的文件这个就类似于一个git的本地仓库
- 初始化操作:
更新一下工作区域和暂存区的概念!
- 首先创建一个本地的git仓库,然后创建一个README.md和demo.txt两个文件
- 然后这个时候电脑上的文件区域就是工作区,用来保存对文件的一些改动,然后在命令行中执行
git status
- 这个时候因为在工作区中新增加了两个文件,但是没有提交到暂存区,然后就会提示错误
nothing added to commit but untracked files present (use "git add" to track)
大致意思就是使用git add命令来提交文件到暂存区。
- 暂存区: 暂存区就是文件在工作区(本地文件) 中修改以后使用
git add
命令提交到暂存区。暂存区会保存修改文件;
- 如果想要提交的版本库,还需要使用
git commit -m '提交说明'
这一命令来提交到版本库,当初始化一个git仓库以后 就会默认生成一个master
主分支,并且HEAD
指针头部就指向了当前提交版本上面,而跳转到上一个版本或者其他版本都是基于HEAD指针的移动。
git 的一些常用操作
- 常用命令
- 添加一个文件
git add 文件名字
- 把一个文件上传到本地仓库。
- 完成提交 `git commit -m “提交时候的概述”
- 这个时候 就会显示提交的版本号和提交记录
- 查看自己的提交记录
git log
- 这个时候会显示提交的记录和版本号
- 返回到上次提交的地方
git reset --hard HEAD^
- 这个时候就返回到了上一个版本
- 查看历史操作记录这里主要方便的是自己如果回到了上一个版本这个时候查看git log 是查看不到后面的提交记录的所以这个命令就可以找到后面的版本号
git reflog
- 会显示操作的历史信息同时前面显示版本号
- 如果知道版本号的话就可以直接使用版本号码来回到某一个版本
git reset --hard 版本号
- 这个时候就回到了当前版本号的版本。
- 添加一个文件
关于分支的一些操作
- 查看本地的分支:
git branch
带有 * 表示当前处于这个分支状态 - 查看远程服务器分支:
git branch -a
- 把本地分支推送到远程分支,并且关联
git push -u origin '你本地的分支名称'
- 新增加本地分支
git branch 你要增加的分支的名字
- 把当前分支推送到服务器分支:
git push origin 你新创建的分支的名字
- 切换到某一个分支:
git checkout 你要切换的分支
- 删除本地分支:
git branch -d 你要删除的分支
- 在某一个分支下面建立一个新的分支:
git branch 要建立的子分支的名字 主分支的名字
额外介绍: 如果远程服务器的操作比当前的版本高的话,可能需要强制覆盖命令是: git push -f origin
注意 这样做是十分危险的,很容易造成覆盖他人代码的情况,所以要谨慎使用
分支合并操作。例子(把dev分支代码合并到master)
- 首先切换到master
git checkout master
- 然后合并代码
git merge dev
有关提交代码冲突问题
a和b拉取了一份代码,然后a修改了其中一个文件中的内容,然后推送到远程库中去了,这个时候b也修改了这个文件的内容,然后推送远程库的时候执行pull命令就会提示需要进行代码冲突的解决。这个时候就可以打开上面提示需要进行代码合并的文件,打开以后大致就是下面这个样子:
你好!
B增加了hello.txt
<<<<<<< HEAD
B又修改了hello.txt文件
=======
A又增加了内容
>>>>>>> 372b753ac0c05d910e5fecb6731d83a64aa6253c
其中<<<<<<<HEAD
到 =======
中间的内容部分是自己修改的内容和远程库中的内容有冲突的部分,而=======
到>>>>>>>Id号码部分
是原来文件中的部分,然后就可以选择解决冲突,可以选择是保存自己修改的或者是保存远程库中的内容,或者是两个部分都保存。然后删除这些标志重新push就可以了。
有关多个分支分别开发的解决方案
可能遇到这种情况,
master分支
存放着代码,同时希望在不修改这一部分内容的前提下,对项目进行重构,也就是说两者独立开发(例如:项目的重构)
- 上面的需求就可以通过git分支来做到。master分支存放着主要代码,然后如果需要其他开发,首先创建一个子分支这里使用develop作为子分支名字(主分支是master) ,命令是:
git branch develop mastere
- 然后切换到develop分支 命令:
git checkout develop
- 在develop 上进行开发,在开发的时候一旦修改了工作区代码,就需要 add 和 commit 不然再切换到master分支的时候就会把修改的内容也带过去。
- 上面的方式可以做到两个分支独立编码互不影响,但是如果再develop分支上没有必要进行commit呢?这里可以使用 git stash
git stash
用于保存当前进度: 命令:git stash save "保存的时候填写的备注信息"
使用这一个命令以后再次使用git status
发现工作区是干净的。然后就可以切换的其他分支继续工作不会把当前更改带到其他分支去。- 使用
git stash list
可以查看保存进度的列表 - 使用
git satsh pop
恢复最新的一次保存状态,并且删除列表
- 通过上面的操作就可以实现两个分支独立开发互不影响了。
- 上面的操作是我们可以在本地进行内容的提交,这个时候就可以结合github进行提交自己的有关的内容了。
- 首先需要生成自己的git的SSH密钥。可以先利用
git config --list
查看自己的配置有关信息,然后可以利用cd ~/.ssh
来查看自己是否生成了ssh密钥,如果生成了会有文件夹的如果失败了就是没有创建。 - 这个时候如果查看到了含有 id_rsa id_rsa.pub 说明ssh账号已经创建成功了。
- 然后就是检测是否添加成功可以使用
ssh -T git@github.com
来进行检测如果输出的内容包含sucess则说明创建成功了。 - 如果没有包含上述两个文件说明没有创建ssh密钥,这个时候可以创建属于自己的密钥。可以使用命令
ssh-keygen -t rsa -C "email@email.com"
来创建密钥,而密钥就保存在id_rsa.pub 这里可以在git窗口中使用cat命令打开然后复制到github中就可以了。
- 首先需要生成自己的git的SSH密钥。可以先利用
-
然后介绍一个怎么使用github来创建一个文件库,这里首先需要在github上面注册一个账号,然后建立一个库,这个库就是一个公开的库,然后就可以使用本地git同步本地文件和gitHub文件一致了,首先我们需要保证我们本地的ssh密钥保存在了github上面了,然后我们本地在文件夹中就可以执行
git clone '你的github库地址'
-
执行完上面的步骤你会发现自己就会有和github上面一样的内容,这个时候就可以像上面一样进行本地的操作,然后提交。
-
如果需要形成一个版本提交到远程的github仓库,这个时候就可以使用push的功能了,但是如果有的时候和远程库的内容存在版本差异的话就需要先执行
git pull
命令来拉去远程的库然后在此次进行提交。 -
提交的时候我们需要先执行
git remote
来查看自己远程库的名字,然后 就可以进行当前版本的提交了。 -
提交使用的命令是
git push '你的远程库名字一般都是origin' master'这里是默认分支'
-
这个时候如果我们删除了一个文件就需要重新进行提交但是这个时候我们如果是通过window窗口提交的,而不是通过git操作窗口提交这个时候
git add *
是不起作用的,这个时候需要使用git add -A
来进行提交然后继续进行上面的提交。
- 上面提到的内容就是有关git的基本操作,同时git还提供了多人协作开发,这里就简单介绍一下利用git进行多人协作开发。
- 首先就是clone一个项目,这里可以使用
git clone '你要cloe的地址'
来进行clone操作。
- 首先就是clone一个项目,这里可以使用
如果在master上开辟一个分支,那么把代码push到那个分支上的命令是: git push origin master:分支名字