git版本管理有什么用?git版本管理如何使用?

TheDisguiser 2020-04-06 15:02:14 java常见问答 6770

Git相信程序员小伙伴们都不陌生,在开发中经常使用到git,今天小编就给大家详细介绍一下git是什么,git版本管理有什么用,请看下面。

Git 是一种分布式版本控制系统 (Distributed Version Control System DVCS) 。在这种系统下,客户端不只是简单地拉取某个版本的文件,而是把整个记录文件版本的数据库都克隆到本地系统上。如此,任何一处协同工作用的服务器如果发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。每一次的克隆工作,实际上都是对代码仓库的完整备份。

git不同区之间工作关系

git版本管理

Remote Repository: 远程仓库(克隆代码的原始仓库)

Local Repository: 本地仓库

Stage: 暂存区,用于临时存放你的改动

Workspace: 工作区,平时存放项目代码的地方

git开发模式

git版本管理

git开发流程

$ git clone http://xxxxx.git # 克隆代码
$ git branch test # 新创建一个test分支
#开发中...
#开发完毕...
$ git status # 查看修改了哪些文件
$ git add -A # 如果只add 某个文件 git add filename
$ git diff # 查看修改了哪些内容
$ git commit -a -m "修改的内容" # 确认没问题,提交修改的内容到本地仓库
$ git push # 将修改的内容推送到远程仓库
$ git checkout dev # 切到测试分支
$ git merge test # 将自己的分支合到dev测试分支
$ git checkout master # 切到master分支(上线)
$ git merge dev # 测试分支测试没问题将修改内容合到master分支
$ git push # 将master分支内容推到远程仓库

git常用命令简写

$ git config -–global alias.st status # git st == git status
$ git config -–global alias.co checkout # git co == git checkout
$ git config -–global alias.ci commit # git ci == git commit
$ git config -–global alias.br branch # git br == git branch
$ git config --global user.name "Mautea" # 你的github用户名,非昵称
$ git config --global user.email "xxx@qq.com" # 填写你的github注册邮箱

如何解决冲突

冲突原因:两个已经提交的分支的相同文件相同位置的的不同操作进行了合并. 比如说 如果我切换到分支dev ,修改了master 原本哪行的代码,提交.然后再切换到master.我不知道dev修改了这个文件.我也修改这一行的代码,并提交.好了,”两个分支相同文件相同位置的的不同操作” 我这个时候就在master merge dev 或在 dev上merge master. 冲突!!! 不解决冲突是没法提交和切换到别的分支的

假设我们在master 和 dev 上都修改了test.txt文件,目前我们把dev分支合到master分支

$ git checkout master
$ git merge dev
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

Git告诉我们,test.txt文件存在冲突,必须手动解决冲突后再提交,我们可以直接查看test.txt的内容

$ vim test.txt
Git tracks changes of files.
<<<<<<< HEAD
The boy is smart.
=======
The boy is smart a.
>>>>>>> dev

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,解决冲突的时候假设The boy is smart.是其他研发人员开发的, The boy is smart a.是你开发的,这时候如果你不确定要保留哪一行的时候,一定要和其他研发人员确认到底要保留哪一行,再进行修改,我们修改如下后保存:

Git tracks changes of files.
The boy is smart a.

再提交:

$ git add readme.txt
$ git commit -m "conflict fixed"

git版本回退

在开发过程中,总会遇到代码误提交或者将错误代码提交的情况,遇到这种情况不要慌,下面教你几招

例如 我有如下 三次提交

$ git log # 查看提交记录
commit 4dc08bb8996a6ee02f
Author: Mark
Date: Wed Sep 7 08:08:53 2016 +0800
something for test
commit 9cac9ba76574da2167
Author: xxx
Date: Tue Sep 6 22:18:59 2016 +0800
improved the requst
commit e377f60e28c8b84158
Author: xxx
Date: Tue Sep 6 14:42:44 2016 +0800
changed the password

只回滚本地代码

$ git reset --hard HEAD^ # 将代码回滚到上一个版本,即提交记录是“improved the requst” 的版本
$ git reset --hard e377f60e28c8b84158 # 
将本地代码回滚到e377f60e28c8b84158即提交记录是“changed the password” 的版本

回滚远程代码

$ git reset --hard e377f60e28c8b84158 # 
将本地代码回滚到e377f60e28c8b84158即提交记录是“changed the password” 的版本
$ git push -f origin xxx(分支名) # 强制回滚远程xxx分支到e377f60e28c8b84158 版本

撤销某一次提交 不影响中间别人提交的代码

$ git revert e377f60e28c8b84158 
# 撤销e377f60e28c8b84158 这次提交不影响9cac9ba76574da2167 和 4dc08bb8996a6ee02f 的提交

git常用命令

$ git clone # 克隆代码
$ git push # 推送代码到远程仓库
$ git pull # 拉取远端代码
$ git status # 查看改动的文件
$ git diff # 查看改动的内容
$ git add # add 修改到暂存区
$ git commit -a -m # 提交代码
$ git branch xxx(分支名) # 新建一个xxx 分支
$ git branch -d xxx # 删除本地xxx 分支
$ git push origin --delete xxx # 删除远端分支
$ git checkout xxx (分支名)# 切到xxx分支
$ git checkout xxx(文件名) # 撤销xxx修改的内容
$ git log # 查看提交记录
$ git relog # 查看操作记录

以上就是今天的所有内容,更多相关内容请持续关注本站。