平凡也就两个字: 懒和惰;
成功也就两个字: 苦和勤;
优秀也就两个字: 你和我。
跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!
关注微信公众号【 IT特靠谱 】,每天都会分享技术心得~
git版本控制操作教程:基础操作
1 git简介
Git是一个免费的开源分布式版本控制系统,它可以快速高效地处理小到非常大的项目。
Git易于学习,占用空间小,性能快如闪电。它超越了SCM工具(比如:Subversion、CVS、Perforce和ClearCase),具有本地分支、便捷的暂存区域和多工作流等特性。
下图来源于:https://www.cnblogs.com/chenwolong/p/GIT.html
专业名词解释:
(1)Workspace:工作区
(2)Index / Stage:暂存区
(3)Repository:仓库区(或本地仓库),即git管理的本地仓库
(4)Remote:远程仓库
2 git基本操作
前提:确保已经成功安装了git客户端。
2.1 一般配置操作
(1)查看git的版本信息
git --version
(2)获取当前登录的用户
git config --global user.name
(3)获取当前登录用户的邮箱
git config --global user.email
(4)设置当前登录的用户
git config --global user.name “用户名”
(5)设置当前登录用户的邮箱
git config --global user.email “邮箱”
说明:以上global可以替换成local。local的优先级最高!如果global和local都配置了git用户名和邮箱,那么会以local为准。
2.2 新建代码仓库
(1)方式1:在【当前目录】新建一个Git代码库
git init
执行上述命令后当前目录会到一个.git的隐藏文件夹,也就意味着当前目录被git纳入管理了!
具体操作步骤:
1)在windows系统中任意目录下创建一个名为"gitTest"的文件夹。
2)在"gitTest"文件夹中右键鼠标,点击“Git Bash Here”。打开git命令输入框。
3)在git命令输入框中输入“git init”命令,就将"gitTest"文件夹创建成了能被git管理的版本仓库。我们的项目代码就放在"gitTest"版本仓库中。
说明:执行“git init”命令后,就会在"gitTest"文件夹中创建一个“.git”隐藏文件,这个隐藏文件中就是保存的git仓库的版本信息!一般不要手工去操作“.git”文件夹中的内容,而是通过各种git命令去操作它!
(2)方式2:新建一个项目文件夹(projecrt-name),并将其初始化为Git代码库
git init [project-name]
(3)方式3:从git远程仓库克隆一个项目和它的整个代码历史
git clone [url]
2.3 新建“README.md”和“.gitignore”文件
在gitTest项目仓库中添加README.md和.gitignore文件。
(1)创建一个空文件:touch README.md
编辑文件: vim README.md
(2)创建一个空文件:touch .gitignore
编辑文件: vim .gitignore
Tips:可在.gitignore文件里面添加被git忽略的文件或目录,支持正则表达式!
2.4 创建远程仓库--》将本地仓库与远程仓库绑定--》提交本地仓库修改到远程仓库
步骤如下:
(1)在github/gitlab等平台创建一个名为"gitTestRepository"的仓库(仓库名尽量与项目名"gitTest"保持一致,由于作者远程仓库中已经存在名为gitTest的仓库了,所以这里取名为gitTestRepository)。
(2)本地仓库和远程仓库建立连接,并推送本地仓库某分支到远程仓库
点击上图"create repository"按钮后就会创建一个名为"gitTestRepository"的远程仓库。由于我们已经创建了一个名为"gitTest"的本地仓库,因此我们采用下图中第2中方法来将本地仓库和远程仓库建立连接,建立连接后我们就可以将本地仓库的某分支推送到远程仓库了。
1) 本地仓库和远程仓库建立连接:git remote add origin https://github.com/xxxxx/gitTestRepository.git
2)推送本地仓库某分支到远程仓库
由于我们本地仓库有两个分支master和dev。因此我们需要将这两个分支分别推送到远程仓库。
推送本地仓库master分支到远程仓库:git push origin master:master
推送本地仓库dev分支到远程仓库:git push origin dev:dev
这时在远程仓库中就可以看到dev和master分支以及对应的文件内容了!
3)本地仓库分支与远程仓库分支建立追踪关系
上面git push origin dev:dev和git push origin master:master命令仅仅是将本地仓库的dev和master分支推送到了远程仓库,但是并没有将本地dev与远程dev、本地master与远程master分支建立追踪关系。如果没有建立追踪关系,那么我们git pull或git push的时候git会提示如下信息:
因此我们需要建立追踪关系:
1)本地仓库dev分支与远程仓库dev分支建立追踪关系:git branch --set-upstream-to=origin/dev dev
2)本地仓库master分支与远程仓库master分支建立追踪关系:git branch --set-upstream-to=origin/master master
2.5 将工作区的修改添加到暂存区
(1)将指定文件添加到暂存区
git add 文件名
(2)将工作区所有变更的文件添加到暂存区
git add .
2.6 将暂存区的文件提交到本地仓库
(1)暂存区的文件提交到本地仓库、并添加提交注释
git commit -m "commit备注"
2.7 查看状态和日志
(1)显示所有变更的文件
git status
(2)查看当前分支的提交版本历史
git log
(3)显示当前分支的提交或回退操作记录
git reflog
(4)比较当前分支【工作区】与【本地仓库】进行比较,显示出差异
git diff
(5)比较当前分支【暂存区】与【本地仓库】版本进行比较,显示出差异
git diff --cached
(6)比较当前分支【工作区】与【暂存区】进行比较,显示出差异
git diff HEAD
2.8 分支操作
(1)查看本地所有分支
git branch
(2)查看远程所有分支
git branch -r
(3)新建一个本地分支,但依然停留在当前分支
git branch 新分支名
(4)切换到指定分支,并更新工作区
git checkout 分支名
上面这个命令做的不过是将HEAD移到一个新的分支,然后更新工作目录。更新目录可能会覆盖本地的修改,Git强制你提交或者你自己缓存(git stash)工作目录中的所有更改,不然在checkout切换分支的时候这些更改都会丢失。
(5) 建立追踪关系,在现有分支与指定的远程分支之间建立关系
git branch --set-upstream [本地分支] [远程分支]
(6)删除本地分支
git branch -d 本地分支名
(7)本地存在一个分支,名称叫:dev1,但远程没有怎么办?
1) 将本地仓库dev1分支推送到远程仓库(远程仓库会自动创建一个dev1分支):git push origin dev1:dev1
2)本地dev1分支和远程dev1分支建立跟踪关系:git branch --set-upstream-to=origin/dev1 dev1
(8)将指定分支的代码合并到当前分支。
git merge 分支名称
(10)将远程仓库中的分支dev2拉取到本地仓库
场景:在远程仓库的dev分支的基础上,github/gitlab等网页方式新建一个远程分支dev2。此时dev2只存在于远程仓库,本地仓库并没有dev2分支。
目的:将远程仓库的dev2分支拉取到本地仓库中。
操作:
1)将远程分支拉取到本地:git pull origin dev2:dev2
2)将本地dev2分支与远程origin dev2分支建立追踪关系:git branch --set-upstream-to=origin/dev2 dev2
2.9 远程同步
(1)获取远程仓库的变化,并与本地分支合并。
git pull
这个命令其实执行了两步。1.获取远程仓库的变化; 2.将远程仓库的变化合并到本地分支。
(2)将本地分支的commit提交推送到远程仓库
git push
注意:
1)每次git push之前应该执行git pull。保证远程仓库与本地仓库节点一致,如果有冲突就先解决冲突,冲突解决完后执行git push就完成了将本地变更推送到远程仓库!
2)如果git push之前没有执行git pull,如果其它开发人员已经git push本地代码到远程仓库,那么你git push的时候就会提示代码有冲突,需要你手动merge冲突代码后执行git add-->commit-->push操作,将merge后的代码推送到远程仓库。
(1) 商务合作微信号:M9392W
(2) 购物商城: 扫码即可进入博主开发的小程序购物商城,享超大优惠购物,支持一下博主吧~
(3) 博主微信公众号:IT特靠谱,学习更多开发实战技巧!