当前位置:   article > 正文

git merge 回退_git教程

git回退merge branch

9676451ce79de4ae113cf29265e7cc8a.png

前言:公司也开始用git版本控制了,总结汇总下常用命令~

Git的思想和工作原理

git是一个内容寻址文件系统,并在此之上提供了一个版本控制系统的用户界面。

Git是一个分布式的版本控制系统

5c155899d0a5cc464ff20456862e3381.png

Git和之前版本控制系统的区别

Git 和其他版本控制系统的主要差别在于, Git 只关心文件数据的整体是否发生变化,而大多数其他系统则 只关心文件内容的具体差异。这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容:

其他系统在每个版本中记录着各个文件的具体差异:

66635a70da716c6f0db36ab94beadb34.png

Git 并不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。Git 的工作方式就如下图所示。

dedfedebea2af8eae1a9f4c134138d23.png

这是 Git 同其他系统的重要区别。它完全颠覆了传统版本控制的套路,并对各个环节的实现方式作了新的设计。Git 更像是个小型的文件系统,但它同时还提供了许多以此为基础的超强工具,而不只是一个简单的 VCS。

Git的基本概念

Workspace(本地工作目录) Index(暂存区) Local Repository(本地仓库) Remote Repository (远程)

dfed6109a4d26c90f27b25fee2d2e2c9.png

Git的分支

使用分支可以在不影响主线代码的情况下进行工作 Git 的分支相较 SVN 更加轻量,几乎所有操作都能瞬间完成 开发中,master 分支同步线上版本代码,所有开发人员统一在 dev 分支进行开发

57216d0c7b838023c41b543b77346d6f.png

Git的基本操作

1.进入项目主页,复制仓库的 url:

2.使用 git clone 命令将远程仓库的 master 分支拉取到本地。

3.日常开发在 dev 分支进行,使用 git checkout -b dev 来新建 dev 分支并切换到 dev 分支。

4.拉取成功后即可看到本地仓库。

5.使用 git branch --set-upstream-to=origin/dev dev 来将本地 dev 分支关联到远程的 dev分支,使用 git pull 拉取 dev 分支的最新修改。至此,前期准备完成,可以进行正式开发。

6.修改文件后,使用 git add . 和 git commit -m “message” 来将修改提交到 dev 分支。

7.使用 git push 将本地 dev 分支推送到远程 dev 分支,分享你的工作成果。

Git & Github & Gitlab

Git 是版本控制系统,Github 和 Gitlab 都是基于 Git 的代码托管平台。 Github 和 Gitlab 主要区别是 Gitlab 可以部署在自己的服务器上。

命令汇总

a83d110d9be14a97985b5b1028dcd06f.png

1) 远程仓库相关命令

  1. 检出仓库:$ git clone git://github.com/jquery/jquery.git
  2. 查看远程仓库:$ git remote -v
  3. 添加远程仓库:$ git remote add [name] [url]
  4. 删除远程仓库:$ git remote rm [name]
  5. 修改远程仓库:$ git remote set-url --push[name][newUrl]
  6. 拉取远程仓库:$ git pull [remoteName] [localBranchName]
  7. 推送远程仓库:$ git push [remoteName][localBranchName]

2)分支(branch)操作相关命令

  1. 查看本地分支:$ git branch
  2. 查看远程分支:$ git branch -r
  3. 创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
  4. 切换分支:$ git checkout [name]
  5. 创建新分支并立即切换到新分支:$ git checkout -b [name]
  6. 删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
  7. 合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
  8. 创建远程分支(本地分支push到远程):$ git push origin [name]
  9. 删除远程分支:$ git push origin :heads/[name]
  10. 我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。
  11. 如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
  12. $ git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
  13. $ git push origin test:test // 提交本地test分支作为远程的test分支
  14. 如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
  15. $ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心

3)版本(tag)操作相关命令

  1. 查看版本:$ git tag
  2. 创建版本:$ git tag [name]
  3. 删除版本:$ git tag -d [name]
  4. 查看远程版本:$ git tag -r
  5. 创建远程版本(本地版本push到远程):$ git push origin [name]
  6. 删除远程版本:$ git push origin :refs/tags/[name]

4) 子模块(submodule)相关操作命令

  1. 添加子模块:$ git submodule add [url] [path]
  2. 如:$ git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
  3. 初始化子模块:$ git submodule init ----只在首次检出仓库时运行一次就行
  4. 更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下
  5. 删除子模块:(分4步走哦)
  6. 1)$ git rm --cached [path]
  7. 2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
  8. 3) 编辑“.git/config”文件,将子模块的相关配置节点删除掉
  9. 4) 手动删除子模块残留的目录

5)忽略一些文件、文件夹不提交

  1. 在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
  2. target
  3. bin
  4. *.db

git操作-删除文件

  1. git删除文件
  2. rm add2.txt
  3. git rm add2.txt
  4. git commit -m "rm test"
  5. git push web
  6. -----------at server
  7. cd /var/www/foo.git;sudo git update-server-info
  8. ------------检查删除效果
  9. cd;rm foo3 -rf;git clone http://[某ip]/foo.git foo3
  10. ------------更新已经存在的local code
  11. cd;cd foo2
  12. git remote add web [某user]@[某ip]:/var/www/foo.git/
  13. git pull web master

常用

git 分支查看与切换

  1. # 1.查看所有分支
  2. > git branch -a
  3. # 2.查看当前使用分支(结果列表中前面标*号的表示当前使用分支)
  4. > git branch
  5. # 3.切换分支
  6. > git checkout 分支名
  7. // 删除分支
  8. git branch -d oldtonew
  9. git checkout -b oldtonew origin/oldtonew
  10. 创建分支: $ git branch mybranch
  11. 切换分支: $ git checkout mybranch
  12. 创建并切换分支: $ git checkout -b mybranch

git 推送本地分支到远程分支(无则创建远程分支) git push origin onlyrefund:onlyrefund

问题汇总

git merge后,如何回退

今天将feature分支的代码merge到develop分支后我后悔了,因为feature分支的功能还没有全部开发完成,我在feature分支上commit是可以的,但是这之后我又把它merge到了develop分支这就不合适了。

言归正传,那如何解决呢,总共分三步:

第一步:git checkout到你要恢复的那个分支上

git checkout develop

第二步:git reflog查出要回退到merge前的版本号

git reflog

第三步:git reset --hard [版本号]就回退到merge前的代码状态了

git reset --hard f82cfd2

如何修改提交分支后,将分支合并到测试分支

例子将onlyrefund分支合并到test分支,将test分支作为体验和测试版本分支。

第一步:在当前分支正常操作,git push。 第二步:切换到想要合并的分支(eg,我当前要切换到test分支) git checkout test

第三步:将要合并的分支合并过来。如果有冲突解决冲突。

git merge onlyrefund

第四步:提交到远程test分支。

git push

存储密码

569c95898af21a5e57e879bf0985345f.png
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/555852
推荐阅读
相关标签
  

闽ICP备14008679号