git 操作

一、git初始化和用户名密码配置

1.用户名和邮箱设置(--global 设置系统级别的用户可与远程代码库交互,不加--global管理的就是本地仓库)

git config --global user.name yourname  //设置用户名
git config --global user.email xxx@cc.com //设置邮箱

2.初始化本地仓库(初始化后,本地会保存一个隐藏文件 .git)

git init

3.远程拉取代码

git clone  xxxxxx       //git仓库拉取代码 具体根据ssh 或 http等

二、代码提交

1.代码管理分区:  工作区 -》暂存区 -》本地仓库 -》远程仓库

2.我们新建一个文件或修改一个文件内容后,需要先将代码提交到暂存区:

git add ./      #提交当前的所有文件到暂存区
git add a.txt   #提交a.txt文件到暂存区

3.查看状态:根据命令后的提示,可看到当前所在分支,文件是否修改(修改添加红色)

git status

4.如果提交到暂存区的修改需要否掉(清掉暂存区的修改,前一步或多个暂存区的修改新增会被清掉,慎用。) 

git checkout .

5.将暂存区的文件提交到本地仓库

git commit -m 'first commit xxx.txt'  xxx.txt   #将某个文件的修改提交到本地仓库xxx.txt是文件名
git commit -m 'all commit'                      #暂存区的所有修改、新增都提交到本地仓库

6.查看日志

git log                    #查看所有日志
git log --pretty=oneline   #每个日志一行
git reflog                 #查看简短日志

查看日志的作用是列出我们之前操作的步骤,每个步骤有生产一个哈希值记录步骤,用于跳转到某个版本,reflog 显示的是每个步骤哈希值得一部分(后面切换到之前的版本可以用简短的哈希值)

7.跳转到之前的某个版本(即基于哈希索引值切换版本,切换后发现代码回到了对应版本的状态)

git reset --hard 0024f6b  #切到0024f6b这个版本
git reset --hard HEAD^    #向后回退一步 一个 ^ 符号
git reset --hard HEAD^^   #向后回退两步 两个 ^^ 符号
git reset --hard HEAD~3   #向后回退3步

 版本切换 git reset  但是它的参数有三个不同的选择:   --soft --mixed --hard

--soft :   仅仅在本地仓库移动HEAD指针(版本)

--mixed:本地仓库移动HEAD指针,重置暂存区

--hard:  本地仓库移动HEAD指针,重置暂存区,重置工作区

soft 相当于本地库回退或前进了版本,前面的从暂存区提交到本地库的去掉了(相当于之前暂存区的版本没有提交到本地库)

mixed相当于本地库和暂存区回退或前进了版本,相当月工作区的没有提交到暂存区再提交本地库

hard 相当于 本地库、暂存区、工作区都回退、前进了版本,暂存区没有没提交本地仓库的代码、工作区没有要提交暂存区的新代码

 所以我们git版本回退操作,用hard比较多,因为三个区的代码在同一水平线

8.删除文件

当我们删除一个文件后,提交暂存区,提交到本地仓库。其实我们的版本库里并没有将删除的文件真的删除到,会把之前的文件放在之前的版本里,要找回文件,只需要回退到删除文件之前的版本,就可以找到文件。(注意:找回文件的前提是,之前的文件已经提交到了本地库,纳入了本地库版本管理

9.比较文件差异

git diff [文件名]      #将工作区的修改与暂存区的对比 不带文件名,就是比较多个文件
git diff HEAD [文件名] #暂存区的 与 本地库对比 HEAD可以用历史版本,即与历史版本比较

三、git的分支

1.什么是分支?

就是在版本管理中,同时推进多个任务的开发。

比如:a在主分支上开辟一条分支,a用户写a的功能代码,提交到a的分支上,b在主分支上开辟一条分支,b用户写b的功能代码,提交到b的分支上。

 2.分支开发的好处是:

2.1同时并行推进多个功能开发,提高开发效率

2.2各个分支开发过程中,如果某个分支开发失败,不会对其他的分支有任何的影响。将失败的分支删除重新开始即可。

3.分支操作

1.git status  可以看到 当前所在的分支

2.查看所有的分支,当前所在的分支

git branch -v
git branch

 

 3.创建分支

git branch test_fix   #创建名字为test_fix的分支

4.切换分支

git checkout test_fix  #切换到test_fix分支上去

 

 5.合并分支(如果要将 test_fix分支合并到master分支上,那么就需要先切换到master分支上,然后合并)

git merge test_fix

6.合并冲突

6.1 首先在master分支 某个文件的第6行添加 eee代码,add -》commit 提交到当前master版本库

6.2 切换到test_fix分支 在同一个文件上的第6行添加fff代码,add-》commit提交版本到当前test_fix分支上

6.3 在test_fix分支上将master分支上的代码合并过来,  git merge master   ####产生了冲突(也就是说,在不同的分支上,不同的用户修改的了同一个文件,产生了冲突)

 6.4手动编辑去掉冲突标记符号,编排整理代码到满意为止,保存, add-》commit,注意 commit的时候最后不要携带文件名。合并成功。

6.5切换到master分支, 因为在test_fix分支上解决了冲突,要将test_fix合并道master分支,直接merge即可,如果还是有冲突,则同样编辑解决。提交。

注意:冲突主要在于多个用户修改了同一个位置,或者,同一个文件的同一位置不统一,就出现了冲突。如果两个用户 在不同的行末加了代码,那么冲突会被git自行解决。

如在同一文件,不同行下添加一行各自写下各自的代码,git会自行解决冲突将,双方的代码整理排好。

四、git远程仓库

 1.将本地仓库代码提交到远程仓库,以及从远程仓库拉取最新代码

git push origin master    #提交代码到远程仓库主分支
git pull origin master    #从远程仓库master分支拉取代码

2.如果本地仓库与远程仓库出现冲突。

解决方式:

1.新建一个分支,

2.拉取远程仓库代码,

3.diff 对比新建分支和当前冲突分支的代码,解决冲突,

4.合并新分支到本地分支中,

5.提交代码到远程库上。

代码编辑器上一般一个集成了git版本管理,可以很方便的对比冲突,对代码进行合理编排,解决冲突。再合并。 

 上图中,phpstrom解决冲突界面,  三块 :左边当前代码   右边另一用户冲突代码   中间合并代码。 冲突的位置有  X  和  》   《   ,很好操作,

  X  就是去掉(不加如合并代码中) 

  》 就是把左侧的代码加入合并代码中

《   把右侧的代码加入合并代码中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值