git学习
目录
前言
git用于项目管理,是每个程序员必须熟练使用的工具。
这里我直接看的黑马的视频:【黑马程序员Git全套教程,完整的git项目管理工具教程,一套精通git】https://www.bilibili.com/video/BV1MU4y1Y7h5?p=4&vd_source=70cd9a7d58eaf79ee46e9bddc1d0d53e
Git教程
一、git是什么?
Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:本地仓库和远程仓库。
工作流程如下:
1.从远程仓库中克隆或拉取代码到本地仓库(clone/pull)
2.从本地进行代码修改
3.在提交前先将代码提交到暂存区
4.提交到本地仓库。本地仓库中保存修改的各个历史版本
5.修改完成后,需要和团队成员共享代码时,将代码push到远程仓库
git工作流程图:
命令如下
1.clone (克降):从远程仓库中克降代码到本地仓库
2.checkout (检出) :从本地仓库中检出一个仓库分支然后进行修订
3.add (添加):在提交前先将代码提交到暂存区
4.commit (提交):提交到本地仓库。本地仓库中保存修改的各个历史版本
5.fetch (抓取): 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6. pull(拉取): 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge
7.push (推送) :修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
用到的Linux指令:
Is/ll? ? 查看当前目录
ls -al 可以显示隐藏文件夹
cat? ? ?查看文件内容
touch 创建文件
vi? ? ? ?vi编辑器(还可以使用记事本、editPlus、notPad++等其它编辑器)
二、基本配置
1.打开Git Bash
2.设置用户信息
git config --global user.name “itcast"
git config --global user.email "hello@itcast.cn'
查看配置信息
git config --global user.name
git config --global user.email
这里要注意,为了之后操作方便设置两个别名,操作如下:
?
?
三、基础操作指令
1、新建一个文件到仓库
操作步骤如下:
git init? 为创建一个仓库
ll? ?为显示当前文件夹里的文件
touch xxxx.txt? ? ?为创建一个txt文件
git status? ?为显示当前状态(如图这里显示的是untracked files,即未跟踪)?
git add xxxx.txt? ?为将此文件从工作区添加到暂存区(如果写成git add .? 即将当前工作区的文件都添加到暂存区)
上述操作后,再次查看状态(git status),显示changes to be committed,即即将被提交到仓库。
提交:git commit -m "add file01"? ? ?这里是提交,“”双引号里面写的是注释消息。
用git log查看仓库里的list,这里会显示上传的作者以及时间。
上述是新建一个文件如何提交到仓库。
那如何修改一个已有文件呢?
2、修改一个已有文件
用编辑器修改:vi xxxx.txt
?进入编辑界面,键盘点击 inset 变为可编写,编写完成,点击ESC,输入 :wq保存退出( :是需要打的)
再git add . ;git commit -m "update file01"
git log显示如下,会有一个添加消息和一个更新消息:
?基础命令小结:
?这个“添加文件至忽略列表”实操一下:
新建 file01.a 和? .gitignore文件,用vi?.gitignore编辑.gitignore文件,然后insert加上 *.a ,按esc后“:wq”编辑完成。这里的意思就是说凡是.a的文件都被加入了忽略列表,之后执行工作区添加到缓存区等指令不会对其生效。
这个版本可以回退,找到修改前的版本恢复。比如:找到a975438,点击就复制了,按滚轮粘贴到--hard 后面,回车后就能看到回退到更新前的a9..版本了。
同时也能回到更新的版本:--hard后面加上更新的版本标识就可以恢复。
就算clear(也就没有更新的提交记录怎么办)了也能找回来
?
用到git reflog可以找回ID(标识),再用git reset --hard id,恢复完成。
所以,只要文件夹不删,提交过的都可以找回来。?
四、分支
实操一下:
git branch dev01 创建下新分支dev01
再将其上传至仓库
此时的仓库list:
这里的head->指向当前分支,我们只能对当前分支进行操作。
这里用git checkout dev01/master 来切换分支。
?上面是在dev01分支中加入新文件file02.txt,并将文件添加到仓库。可以看到不同的分支只能看到自己分支的内容,几个人在不同分支工作要怎么合起来呢?
合并分支:
一般将其他分支合到master里面去,所以首先要切换到master分支,
写git merge dev01
可以对比两个git-log后的结果,第二个结果可以看到dev01的add file02就已经在master下了。
解决冲突:
如果不同的人(就是不同的分支)改的同一个文件不一样怎么办?会合并失败。
上面新建一个分支,将file01里面的值改成2,但是又在master分支里将file01里面的值改成3,
会出问题,file01不知道去哪一个,合并会失败。
?
如何解决?暴力解决,打开file01,手动修改成想要的值。
看之后效果,可以看到合并成功
最后
小结:解决冲突
小结:
这里删除的d和D有区别:在一个分支上删除另一个分支的文件,用d不行,用大D可以。
补充一个合并的快进模式:
五、远程仓库
github、码云、gitlab,前两个直接用,后面这个要自己部署,之后在公司里也基本是用gitlab。
github会慢一点,但全球的资源还是蛮香的。这里课程写的Gitee,在国内还是会好用一点吧。
克隆?
克隆在分工合作里面用得比较少,
抓取和拉取比较多
远程解决冲突
类似于本地的解决冲突?
暴力改,改完再推,再pull更新一下就好了。
六、在idea中使用git
总结
还剩一点idea用git,好困啊,明天再改。还有我感觉我要不要建设下我的github或者Gitee。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!