目录
git用于项目管理,是每个程序员必须熟练使用的工具。
这里我直接看的黑马的视频:【黑马程序员Git全套教程,完整的git项目管理工具教程,一套精通git】https://www.bilibili.com/video/BV1MU4y1Y7h5?p=4&vd_source=70cd9a7d58eaf79ee46e9bddc1d0d53e
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
这里要注意,为了之后操作方便设置两个别名,操作如下:
?
?
操作步骤如下:
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,这里会显示上传的作者以及时间。
上述是新建一个文件如何提交到仓库。
那如何修改一个已有文件呢?
用编辑器修改: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,好困啊,明天再改。还有我感觉我要不要建设下我的github或者Gitee。