Git 分布式版本控制学习(开发中常用命令总结)

1. git介绍,安装请移步 第一章

2. 基本命令(查找个别命令使用请查看末尾总结)

   首先,选择一个合适的地方,创建一个空目录

     第二步,通过git init命令把这个目录变成Git可以管理的仓库,创建后是一个空的仓库
   
    提交文件到仓库--需先添加git add到暂缓区,在提交git commit至版本库(-m 表示提交的说明)

    

   可先添加多个文件在一次性提交

   再次修改info.log文件使用 git status命令可以让我们时刻掌握仓库当前的状态

    

    查看文件修改的内容(添加了dfff) 使用git diff命令

   

    再次提交后使用 git status查看状态显示 没有需要提交的并且目录很干净

    

    git log命令显示从最近到最远的提交日志

    用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个       版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100,

    回退至上一个版本使用 git reset --hard HEAD^ 命令,回退到指定版本 git reset --hard 提交ID

    提示: Git提供了一个命令git reflog用来记录你的每一次命令

     git checkout -- file可以丢弃工作区的修改

    git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,

    用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区

    在文件管理器中把没用的文件删了,或者用rm命令删了  git rm file 在 git commit

     连接远程仓库,从远程仓库获取代码请参考 远程同步与克隆

分支管理

    git checkout -b dev 表示创建并切换到dev分支, git checkout命令加上-b参数表示创建并切换,相当于以下两条命令

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

    用git branch命令查看当前分支,git branch命令会列出所有分支,当前分支前面会标一个*

    在当前 dev分支可添加和提交文件,我们可以使用 git checkout master命令 切换回master分支

    git merge命令用于合并指定分支到当前分支(当前为master分支)

使用 git branch -d dev命令 删除dev分支 在使用git branch 命令查看分支

git log --graph命令可以看到分支合并图

合并dev分支,请注意--no-ff参数,表示禁用Fast forward,Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了,类似下面这样


Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

存储命令 git stash, 用git stash list命令查看,


git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;


另一种方式是用git stash pop,恢复的同时把stash内容也删了

Bug分支

软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除

当你接到需修复一个代号101的bug的任务时,很自然地想创建一个分支issue-101来修复它,但是当前正在dev上进行的工作还没有提交这时候可以使用stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

步骤: 1.存储当前工作现场 git stash, 2.切换到需修复bug的分支并创建且切换到bug修复分支 ,3.完成后切换到主分支合并

         4.然后删除临时bug修复分支 5.恢复之前工作现场        

Feature分支

软件开发中,总有无穷无尽的新的功能要不断添加进来。

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并到主分支,最后,删除该feature分支

步骤: 1.在需添加功能的分支上创建并切换到新功能分支 2. 开发并测试完到主分支进行合并,3.最后删除功能分支

多人协作开发
查看远程库的信息,用 git remote 或者,用 git remote -v显示更详细的信息:

推送分支,就是把该分支上的所有本地提交推送到远程库 git push origin master

并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;

  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

抓取分支

当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支。

git clone git@github.com:michaelliao/learngit.git

当推送失败时,可能因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

若git pull 失败请先指定本地master分支与远程origin/master分支的链接

git branch --set-upstream-to=origin/master master

小结

  • 查看远程库信息,使用git remote -v

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

多人协作工作模式一般是这样的:
  1. 首先,可以试图用git push origin branch-name推送自己的修改.
  2. 如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
  3. 如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。

  Git基本常用命令如下:

  mkdir:         XX (创建一个空目录 XX指目录名)

  pwd:          显示当前目录的路径。

  git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。

  git add XX       把xx文件添加到暂存区去。

  git commit –m “XX”  提交文件 –m 后面的是注释。

  git status        查看仓库状态

  git diff  XX      查看XX文件修改了那些内容

  git log          查看历史记录

  git reset  --hard HEAD^ 或者 git reset  --hard HEAD~ 回退到上一个版本

  (如果想回退到100个版本,使用git reset –hard HEAD~100  建议使用 git reset  --hard 版本id 来恢复了)

  cat XX         查看XX文件内容

  git reflog       查看历史记录的版本号id

  git checkout -- XX  把XX文件在工作区的修改全部撤销。

  git rm XX          删除XX文件

  git remote add origin ssh://admin@ip:29418/sysbase/api.git  关联一个远程库

  git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库

  git clone ssh://admin@ip:29418/sysbase/api.git   从远程库中克隆

  git checkout –b dev  创建dev分支 并切换到dev分支上

  git branch  查看当前所有的分支

  git checkout master 切换回master分支

  git merge dev    在当前的分支上合并dev分支

  git branch –d dev 删除dev分支

  git branch name  创建分支

  git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作

  git stash list 查看所有被隐藏的文件列表

  git stash apply 恢复被隐藏的文件,但是内容不删除

  git stash drop 删除文件

  git stash pop 恢复文件的同时 也删除文件

  git remote 查看远程库的信息

  git remote –v 查看远程库的详细信息

  git push origin master  Git会把master分支推送到远程库对应的远程分支上

开发中命令大致的使用顺序

1. 从远程库中克隆项目  git clone ssh://admin@ip:29418/sysbase/api.git 

2. 切换到开发者分支     git checkout dev

3. 新增或修改文件后添加到 暂缓区  git add XX (多文件时需全部提交可使用 git add . )

4. 提交到版本库或回滚修改文件  git commit –m“描述”/  git checkout -- XX文件

5. 与远程库更新同步      git pull (更新后有冲突请先本地合并冲突文件)

6. push到远程库            git push origin dev

7. 切换到 主分支(默认 master)分支         git checkout master

8. 合并开发(dev)分支      git merge dev


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值