在项目中使用git 新的体会
一 Git是什么?
Git是世界上最先进的分布式版本控制系统
二 SVN 和 Git 的区别是什么?
SVN 是集中式版本控制系统
Git是分布式版本控制系统
三 如何操作
详细的操作步骤 笔者这里不做过多解释 此篇文章是做一个提升
1.通过命令 git init 把这个目录变成git可以管理的仓库,如下:
![](https://img.haomeiwen.com/i2820327/b8b4088fda077059.jpg)
这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。
首先要明确下,所有的版本控制系统没法跟踪图像的具体变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。
2.暂存区 仓库、工作区与暂存区的概念及区别
git add
---提交到暂存区
git commit
----提交到仓库
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
3.对比
git diff readme.txt
对比还没将文件提交到仓库时,该文件修改了哪些部分 ,如下图所示:
![](https://img.haomeiwen.com/i2820327/1910778d89d9f27a.jpg)
4.查看历史记录
git log
![](https://img.haomeiwen.com/i2820327/28296a80b1d5cb40.jpg)
git log –pretty=oneline
![](https://img.haomeiwen.com/i2820327/716754dd357463d1.jpg)
git reflog
可查看到已撤退过的历史记录
![](https://img.haomeiwen.com/i2820327/0d245e7ab20d8b77.jpg)
5.撤销与修改
git reset –hard HEAD^
撤销
git checkout –readme.txt
撤销修改
git checkout — b.txt
删除时未commit 可恢复
6.远程仓库
在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置:
ssh-keygen -t rsa –C "youremail@example.com"
第一次推送时;git push -u origin master
将本地分支与远程分支关联
之后就可以直接用:git push origin master
1)远程库的默认名称是origin
2)当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了
3)要查看远程库的详细信息 使用 git remote –v
4)小伙伴最新提交的和我试图推送的有冲突,解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。
5)git pull时,指定本地dev分支与远程origin/dev分支的链接
![](https://img.haomeiwen.com/i2820327/869d8e367f9e3127.jpg)
8.总结思想
因此:多人协作工作模式一般是这样的:
首先,可以试图用git push origin branch-name推送自己的修改.
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
补充:
当在项目文件下以dev的分支创建了一个test1的文件,进行git add test1 并git commit -m 后,切换到新的分支bamboo后,会发现当前分支下并没有该文件。
当切换到dev分支时,进行访问该项目,可以访问到该test1文件;如果切换到bamboo分支时,进行访问该项目,访问不到该test1文件。
切换分支:
多人团队一起合作时,肯定会有多个分支,或者是当要解决bug时,就会新开一个分支,解决完成后,再将新分支和主分支合并。不过,需要注意的是,当在新开启的分支里进行了代码修改后,需要进行commit后,再切换回其他分支或是主分支,不然其他分支或主分支就会也被修改。即:切换分支之前,确保当前分支没有未提交的修改
网友评论