完成一个项目需要哪些git命令?

前段时间,项目整体从svn迁移到git上,所以不得不学习git基本操作。真是汗颜,感觉已经不是一个世界了,别人的家的公司早就用git管理代码了,而我们却刚刚开始切换。

git 是一个代码仓库管理工具,现在越来越多的公司从svn切到git上来,那么git整体流程是如何的呢?

  • 1.workspace:工作区
    坦白讲就是本地编辑的代码工具IDE。
  • 2.staging area:暂存区/缓存区
    也就是在执行了add 之后
  • 3.local repository:版本库或本地仓库
    在你执行commit之后,代码就会到本地仓库,也就是你每次ckeckout 其实是从本次仓库拉取,而非远程仓库,这个指的注意。
  • 4.remote repository:远程仓库
    执行push之后,本地仓库的代码就会推送到远程仓库。
    来源网络

这张图来自网上,我感觉这张图很好的说明git的整个流程。从上面的流程图中能够更加直观看出命令之间的关系以及执行命令后仓库之间的转换关系。

其实这个图在学完基本命令之后看会更加直观,放在这主要是想让你对git整个工作流有个大概的认识,然后再了解下面的命令会更有方向性。

注:下面所有的命令都在windows下面操作的,在Linux有稍微的区别

  • 1.从云端复制代码
git clone https://your_repository_url.git

这个估计很多人都会,有的甚至就止步于此,哈哈哈。

  • 2.提交代码
    修改代码之后需要提交代码,则可以通过下面的命令进行提交。
git add filepath// .表示所有文件 
git commit -s "日志"
git push origin your_branch //提交到your_branch分支上

很多在同学在github搞个项目玩玩这个是必不可少的一步。

  • 3.重新拉去代码
    若你想放弃本地代码,可以通过下面两个命令中任何一个即可:
git checkout .//拉取的是本地代码,若是你commit过,这是代码也无法恢复到远程仓库的代码。
git fetch . //拉取远程仓库代码。

.代表所有的文件夹,若想指定定文件,将.换成文件路径即可。
上面这个命令会覆盖本地代码,若你不想覆盖代码,只是想更新服务器最新代码,可以通过下面的命令。

git pull origin your_branch //更新并合并your_branch分支代码
  • 4.删除文件夹
git rm your_file -r -f

删除之后你需要走提交流程,否则代码不会同步到云端。

  • 5.冲突处理
    冲突解决是项目中最常见的,除非你是一个人开发。虽然会自动帮你融合,但是总存在无法融合的,需要自己手动处理:
git stash //将本地已经编辑的代码,暂存起来
git pull origin your_branch //从your_branch分支中拉取最新的代码
git stash pop //将本地代码还原

解决冲突代码后,走提交流程,否则代码同步到云端。

6.开分支
为了开发某个功能或者验证某个问题,为了不影响整个流程的开发,我们需要零时开发分支,可以用下面的命令。

git branch //查看本地分支,标*为当前分支
git branch -a //查看所有分支
git branch your_branch //创建your_branch分支
git branch -d your_delete_branch //删除your_delete_branch分支

等到功能开发完成,在合并到主线,又不会干预主线的流程,也能够继续开发,岂不是很爽。

  • 7.切换分支
    切换分支也是很常⻅的命令,在实际的开发中,为了验证自己的想法或者做某些功能都有可能开分支,分支之间的切换是必要的。
git switch your_another_branch //切换到your_another_branch
git clean -f -xd //删除不属于该分支的本地文件
git pull origin your_another_branch //更新并合并your_another_branch分支 

还有一种切分支的方法

git checkout your_branch

其实有一种很常见的场景就是,两个分支代码可能有点文件数量上不一样,这是该怎么办呢?

git clean -f -xd 

将会把多余的文件给删除掉,只保留当下分支的代码。

  • 8.submodule 相关
    第一步:添加submodule
git submodule add https://***.git local_folder

若是“local_folder” 不写,默认为仓库的名称,若写了,则拉下来的代码会存放到项目根目录下的local_folder文件夹下。
第二步:更新submodule

git submodule init //初始化
git submodule update //更新子模块
git submodule sync //同步子模块

第三步:删除submodule

git submodule -d your_submodule

若是submodule修改了,在拉去最新代码之前,则需要git submodule stash 进行暂存修改,然后通过git submodule update拉取最新代码, 然后再通过git stash pop把之前的数据进行恢复。和之前拉取代码的流程是一样的。

坑:
submodule 提交很容出现,head指针问题,特别是新手。我先讲讲出现这中问题的原因。

每次提交都会产生一个commitID,其实就是md5值,但是此时已经在本地仓库了,但是submodule还没有push,很有可能是push失败了。这是你在主工程push你代码成功了。你到远程仓库发现,submodule的head指针有问题。

所以在submodule提交代码时,一定要注意两点:
1.submodule一定是push成功。
2.🐷工程也要push成功。

可能你会觉得,我觉得我都提交成功了,有没有什么验证机制呢,答案是有的。

你回到主项目用status命令查看submodule的修改状态,有修改状态则说明submodule没有成功提交,否则就成功提交了。

  • 9.查看日志
git log
git log -p//查看每个提交的明细

10.查看本地修改的文件

git status

11.合并代码

如果你想讲分支A的代码合并到B分支上,你首先需要切换到分支B上,在通过下面的命令进行合并

git switch B
git merg A

12.回退版本

git reset commit_id

commit_id可以通过git log 中查看。

学习git就是一个动手的过程,遇到问题千万不要删除代码重新拉去,这样你永远学不会。

遇到问题,我们需要分析问题在哪,如何解决,现在互联网这么发达,很多问题都有现成的解决方案。久而久之,你就能掌握很多git的技巧,以实际问题驱动你学习git,这是最好的办法,也是唯一能够验证你学的怎么样的方法。

欢迎一起交流git的使用方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术人Howzit

钱不钱的无所谓,这是一种鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值