git和svn的区别
常用命令
查看git版本号:git --version
设置用户签名
初始化本地仓库:git init
,会在某一个目录下面初始化一个.git
目录,用于管理当前git项目
所有的代码必须先提交到暂存区后,从暂存区中再次提交到master中才会被赋予历史版本号。
提交暂存区
通过git add
将文件提交到暂存区。git add 1.txt
将该文件提交到暂存区,通过git status
查看当前暂存区中的文件。文件为绿色代表在暂存区。
通过git rm --cache 1.txt
将暂存区中的文件删除,删除后再次使用git status
查看暂存区,发现如图红色,代表当前文件在工作区
git add --all
将当前工作区所有的文件全部上传到暂存区。该语法等价于git add .
或git add -A
。如果一个目录下有多个文件,将这些文件全部上传到历史区后想修改某个文件再次提交,可以直接使用git add .
提交全部代码,git会自动帮助里面识别哪些文件是修改的,只重新提交修改的代码
提交历史区
将暂存区的内容提交到历史区后才能查看到版本信息。必须在git add
命令之后使用git commit -m "注释说明"
,显示结果如图代表提交成功。之后就可以使用git log
查看版本信息
历史版本选择
在上面的图中可以发现,每次提交到历史区都会有一个HEAD或master
提示,这代表当前指向的历史版本,如果只有一个分支,那么这两个选项是保持同步的。HEAD或master
类似指针指向,只需要修改当前的指向,就可以指定版本号实现回退效果,注意回退到之前的版本号,现有的版本并不是直接删除的。
添加四个记录,每一个记录都对于一个git操作,查看当前历史版本
如果想回退历史版本,使用如下命令
git reset --hard HEAD^
:一个^
回退上一个版本git reset --hard HEAD^^
:两个个^^
回退上上个版本git reset --hard HEAD~2
:等价于两个^^
,回退上上个版本
如下操作回退到上一个版本,即从4回退到3,发现工作区的代码也会跟着变,同时暂存区会被清空。
如果想在从当前版本恢复过去,即从3恢复到4该如何处理。首先可以使用git reflog
查看当前的所有操作,该命令比git log
输出的操作信息详细。git reflog
命令类似可以查到当前所有操作对于的编号,该编号就是HEAD
所指向的历史版本号。可以根据该编号实现选择版本号,注意只能选择6位。
git reset --hard 1e77653
:找到4历史版本对应的编号并恢复到该版本。
将工作区的代码编写如下提交
然后使用该命令:git reset --soft HEAD^
也是回退到上一个版本,但是和git reset --hard HEAD^
有什么区别?查看工作区的代码并没有发生改变。--soft
是从历史区回退到暂存区,方便用于可以重修修改注释等,--head
是直接从历史区跳到过暂存区直接到工作区
git分支
使用git branch
可以查看当前已有分支和当前选择的分支
使用git branch 分支名
即可创建新分支,但目前还是未选中该分支
使用git checkout 分支名
实现切换分支
当前分支下新建一个目录,然后提交。提交后使用git checkout master
查看文件效果。新分支和旧分支的内容是一模一样的,只不过新分支比旧分支多了自己的新功能。因此设计到分支合并的问题的时候实际是让旧分支往前移动到新分支的位置即可。
想实现master合并到新分支,首先必须切换到master分支进行操作。注意此时master分支中的文件还是旧的。
使用git merge 分支
实现合并分支的效果,用于实现将旧分支(主要是master)合并到新分支的位置,同时拥有新分支的数据。使用git merge twobranch
实现从master分支合并到twobranch分支。查看文件效果如下
这个时候就发现次分支就没有使用的必要了,就可以进行删除了,git branch -d 分支
实现删除分支效果。d代表delete缩写
分支合并冲突
创建一个文件编写代码,并在master分支上提交
然后创建新分支并选中
在新分支中修改刚才的代码并提交,然后切换回master分支,正确情况该分支中的bug文件并无新分支的内容才正常。
在master分支中添加自己的新内容并提交
然后再当前master分支中合并到刚才的分支中,这个时候就会出现分支合并的错误失败提示,这里提示告知自动合并失败,因为新分支中有修改过改文件,旧分支中也有修改过改文件,这个时候就需要手动进行合并了。可以借助vscode打开该文件。
可以发现vscode的颜色也不同了,可以根据灰色字体提示选择如何合并分支
github上传
首先必须先创建一个仓库
创建完成后会跳转如下页面,使用git remote add
命令添加远程仓库地址,其中origin
是一个地址别名,代表后面的地址。可以随便起。
添加仓库地址后可以使用git remote -v
查看当前地址情况
然后使用git push origin master
命令开始推送,其中git push
是固定的,origin
代表别名地址,master
代表将本地master分支推送到远程地址的master分支,属于简写形式。
如果是第一次推送会出现如下界面,然后点击授权方式即可。成功后出现如下界面
这个时候如果本地查看分支git branch -a
则可以查看到远程仓库的分支
以下为练习,修改已经上传到github的代码,在本地工作区中修改并重新提交,如果在推送的时候使用了git push -u origin master
其中-u
代表设置当前推送为默认地址,以后每次推送的时候只需要使用git push
即可,都会像默认地址推送。
假设在gihub中直接修改了代码,想同步到本地,就需要拉去github中的代码。使用git pull origin master
命令,拉去github中master分支到本地master分支中,origin为别名地址,如果直接使用过-u,则可以省略后面的代码。拉去的代码默认会和本地的代码进行合并,因此注意合并冲突问题。 出现如图代表成功
只要合并代码出现如图就代表出现了冲突问题,需要手动解决
假设有两个人共同操作这个项目,另一个人先获取项目:使用git clone 项目地址
直接获取服务器数据
在clone获取的文件中添加自己的代码xiao.txt,然后推送到github中。但是这个时候假设原来的人项目中是没有这个新推送的项目文件的,但是又修改了代码尝试推送,这个时候就会报错,提示告诉先用git pull
获取代码,这是因为当前的项目落后于远程仓库的,建议先拉取最新的代码在进行修改。
如果是两个账号,则需要作者先将另一个人设置为成员
分支管理
将本地其他分支的代码推送到远程仓库的对应分支中。git push origin bugbranch
会自动在远程仓库中创建对于的分支
然后其他成员如果想获取该分支的项目,就使用git pull origin bugbranch
获取远程仓库该分支到本地。
获取远程仓库分支的时候查看分支,查看的是远程的分支,一旦使用命令创建对于分支就会自动和对于的远程仓库连接起来。
删除远程仓库的分支。假设远程仓库存在一个分支,但是不需要使用了bugfix,如何实现远程分支删除
首先切回本地主分支git checkout master
,然后使用 git push origin :bugfix
命令删除远程分支,:bugfix
代表本地分支同步远程,这里本地分支没有,类似删除的意思,所以远程仓库的该分支也会被删除。
然后再讲本地的分支删除即可
vscode可视化工具
加号类似git add
命令,√类似git commit
命令