git复习

git的一般工作流程不外乎是:

0.本地新建一个git仓库和项目,将本地仓库关联到一个远程仓库上,将项目push到远程仓库。

1.其他人在各自电脑上获取该项目,在本地分支上进行开发任务

2.在给项目添加新特性的时候,开发者往往会创建一个本地的新分支进行开发试验

3.在分布式开发的过程中,不时会有人提交更新,所以大家会定期pull或执行git fetch同步origin的更新

  执行git pull时,远程分支指向origin的最新commit,远程分支和本地分支都会获取更新,同时将更新整合到工作区

  执行git fetch时,远程分支指向origin的最新commit,远程分支获取更新,但是本地master分支不受影响,工作区也不受影响

4.新特性开发完后,将该分支push到远程仓库进行审查。

下面是我们工作中常用的git命令:

创建ssh key

本地工作常用:

git init 创建本地git仓库

git remote add <remote_name> <remote_url>    关联某个远程仓库

git clone url name(本地项目文件夹名称)    克隆repo到本地

git remote -v 查看远程仓库信息

git add filename 工作区文件加到暂存区 

git commit -m 'message' 暂存区文件加到本地repo 

git status 查看工作区和暂缓区项目文件状态   untract的文件是工作区中已修改但未被提交到暂缓区的文件

git diff 查看工作区与暂缓区相比更新了哪些内容 

git log 查看过往提交的版本 

git show HEAD 查看当前本地depo版本信息 

git checkout HEAD filename 将工作区恢复到上次提交的版本 

git reset HEAD filename 只是将缓存区恢复到上次提交的版本 

git reset commit_SHA 项目回滚 

git branch 查看本地分支 

git branch -r 查看远程分支 

git branch -a 查看所有分支(包括远程跟踪分支)

git branch fencing 创建名为fencing的分支 

git checkout fencing 切换到分支fencing 分支上有master的历史commit 记录,同样使用add、commit命令提交更新

上面两步可以简写为:git checkout -b fencing

合并分支到master :

  git checkout master 

  git merge fencing 

删除分支:

git branch -d fencing 删除分支 

git branch -D  fencing 强制删除

关于fork:

fork作为动词是分叉的意思,在github中是一种克隆仓库的行为。当我们使用fork的时候,往往是想要更新别人的项目,或在别人的项目基础上添加新东西。比如大卫在github上开源了一个新项目express,你发现了其中的某个bug,你可以在该项目的github仓库页面右上角点击fork按钮,将之fork到你的github上,这时候你的github就有该项目的一个副本仓库yourname/express,然后你可以git clone到本地进行改bug,更新了这个forked仓库之后就可以发起pull request给该项目的维护者让他审查。

fork并不是命令,只是一种参与/贡献代码的方式,以克隆repo-更新代码-发起pull request-审查更新 的方式体现。

这里有些概念要理清:origin和upstream

当我们clone一个第三方源repo时,因为我们不是该repo的contributor,我们是不能发起pull request的,我们只能通过git fetch同步该仓库的更新,此时该仓库称为我们本地仓库的upstream,而不是origin。

当我们作为项目的开发者的时,我们将远程项目仓库clone到本地,该远程项目仓库的url默认称为origin。

当我们fork了一个源repo,我们的github上出现了一个forked repo。我们将forked repo克隆到本地,此时forked repo就是我们本地repo的origin。因为是自己的仓库,我们可以对origin进行pull和push操作,因为origin是我们自己的仓库。

关于分支:

      假设远程仓库除了master分支还有分支A、B,其他人在各自电脑上获取该项目时,git clone默认将远程仓库的URL命名为origin,并在本地创建对应于远程仓库的remote-tracking branches(即远程跟踪分支,这里会有origin/master、origin/A、origin/B三个远程跟踪分支)和一个本地分支master(内容和origin/master相同)

即,git clone时会在本地创建两种分支:

  本地分支:master,本地分支是我们日常开发的地方

  远程跟踪分支:远程仓库中有多少个分支,就创建多少个对应的跟踪分支。

本地开发时,本地的版本演进方向会和远程仓库origin的演进出现分流,可以通过git fetch将本机的远程分支与origin保持同步。

推送分支:git push origin branchname

别人在fetch的时候,就会获取到一个新的远程分支(即你提交的分支,origin/branchname)

创建一个远程分支的本地分支:git checkout -b branchname origin/branchname(然后就可以在本地继续开发了)

将远程分支合并到当前本地分支:git merge origin/branchname

跟踪分支:

根据上面命令,由远程分支checkout出来的本地分支,会和对应的远程分支有直接联系。在本地分支执行:

git push //向对应的服务器/分支推送

git pull //获取所有远程索引(历史commit),合并到本地分支

克隆一个分支:

git clone 默认创建一个master分支跟踪origin/master

git checkout -b [分支名] [远程名]/[分支名]

git checkout --track origin/branchname

删除远程分支:

git push [远程名]:[分支名]

比如 git push origin:branchname

添加多个远程仓库:

git remote add <name> <url>

git push <name> <branch>


参考:https://git-scm.com/doc

         https://segmentfault.com/q/1010000008366409

         git分支-远程分支

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值