命令行高效操作Git,看这篇就够了

栏目: 编程工具 · 发布时间: 5年前

内容简介:对于软件开发人员来说,git几乎是每天都需要接触的工具。但对于相处如此亲密的工作伙伴,你对它的了解又有多少,是不是还在傻瓜式地打开一个GUI工具,点击提交按钮,然后“卧槽,又冲突了”,一脸懵逼到不知所措,责怪谁又在你前面提交了,谁又改了你的代码。博主从一开始接触git,就没用过任何GUI工具,都是通过命令行进行操作,发现这种方式不仅对git的理解更深,效率也更高,遇到问题时一般都知道如何来处理,故做此分享。本文所有知识与操作只涉及日常使用场景,更多详细内容可自行查阅其它资料。本文Git版本为 windows

对于软件开发人员来说,git几乎是每天都需要接触的工具。但对于相处如此亲密的工作伙伴,你对它的了解又有多少,是不是还在傻瓜式地打开一个GUI工具,点击提交按钮,然后“卧槽,又冲突了”,一脸懵逼到不知所措,责怪谁又在你前面提交了,谁又改了你的代码。

博主从一开始接触git,就没用过任何GUI工具,都是通过命令行进行操作,发现这种方式不仅对git的理解更深,效率也更高,遇到问题时一般都知道如何来处理,故做此分享。本文所有知识与操作只涉及日常使用场景,更多详细内容可自行查阅其它资料。本文Git版本为 windows-2.20.1版。

基础理论

git的理论知识,对使用者来说只需要知道它是分布式版本控制系统,了解如下三个概念即可,

  • 工作区:就是你直接操作的文件目录与内容
  • 暂存区:暂时为你保存还没将内容提交到版本库的一个区域,对应.git目录下的stage或index文件
  • 版本库:分本地版本库与远程版本库,本地版本库就理解为对应.git目录即可,远程版本库就是远程仓库,如gitlab或github的repository。

如下图,我们平时提交代码的过程基本都是从工作区 add 到暂存区,然后再 commit 到本地仓库,最后 push 到远程仓库。

命令行高效操作Git,看这篇就够了

基本命令

对于日常工作,掌握如下几个基本命令一般就够了

git status
git pull origin master
git add file
git commit -m "commit message"
git push origin master

对大部分日常工作来说, 上面几个命令基本就够用了。

新建项目

1. 从本地到远程

项目开发的时候,有时候是先在本地建一个项目,再提交到远程仓库的。

  1. 创建项目目录(或通过IDE创建),命令行cd到项目目录
  2. 执行 git init , 将在项目目录创建.git目录
  3. 执行 git add * ,将所有文件添加到暂存区,这里要先创建一个.gitignore文件,将不需要版本维护的文件添加进去忽略,不然各种IDE编译文件夹,环境相关文件都加到版本库去了。删除文件用 git rm file_name
  4. 执行 git commit -m "upload project" ,提交到本地仓库
  5. 在gitlab或github上创建一个仓库,并将仓库地址复制下来
  6. 执行 git remote add origin git@server-name:path/repo-name.git ,关联远程仓库,仓库地址如果是http开头则要用户名密码,如果是git开头,则是走的ssh协议,需要将你本机的ssh公钥添加到远程仓库服务上。
  7. 执行 git push -u origin master ,推送本地仓库内容到远程仓库

这样在远程仓库目录,就能看到你提交上去的文件内容了。

2. 从远程到本地

更多的时候,是远程仓库已有项目了,需要下载到本地开发。

git clone git@server-name:path/repo-name.git
git add *
git commit -m "fix xxx issue"
git push -u origin master

版本回退

有时候改了文件,想反悔怎么办,git给你“后悔药”。

单个文件的还原:

git checkout file_name
git reset HEAD file_name

这里涉及几个场景

git checkout file_name
git reset HEAD file_name

整个版本的还原:

git reset --hard HEAD^^
git reset --hard 3628164

找不到commit_id? git reflog 可查看每一个命令的历史记录,获取对应操作的commit_id。 git log [--pretty=oneline] , 可查看commit记录

上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写成HEAD~100。3628164 是具体某个commit_id,不需要写全,只需要唯一确定就行,可往前进也可往后退。(git windows2.20.1版貌似不支持对HEAD^的操作)

多人协作

git push origin branch_name
git pull
git push origin branch-name

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name

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

分支管理

平时开发时需要创建子分支来实现你的功能模块,然后再合并到主分支中。

git checkout -b your_branch_name
git branch
git merge dev
git merge --no-ff -m "merge with no-ff" dev
git branch -d dev

git checkout -b dev = git branch dev + git checkout dev

Fast-forward合并,“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。存在冲突的不能fast forward。 git merge --no-ff -m "merge with no-ff" dev Fast forward模式下,删除分支后,会丢掉分支信息。如果强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

标签管理

当发布版本时,一般需要对当前版本进行标签记录,以便后续进行版本查看或回退。

git tag tag_name
git tag
git tag v0.9 6224937
git show tag_name
git tag -a v0.1 -m "version 0.1 released" 3628164
git tag -d v0.1
git push origin tag_name
git push origin --tags

删除已经推送到远程的标签:

git tag -d v0.9
git push origin :refs/tags/v0.9

提高效率的Tips

  1. 配置命令别名

    git config --global alias.st status # 后面可以用git st 来代替git status了
    git config --global alias.ck checkout  # 后面可以用 git ck 来代替 git checkout了
    git config --global alias.cm 'commit -m' # 后面可以用git cm 来代替 git commit -m 了
    
  2. git pull origin mastergit push origin master , 可直接 git pullgit push , 如果出现“no tracking information”的提示,则说明本地分支和远程分支的链接关系没有创建,用命令 git branch --set-upstream-to=origin/master master 建立关联即可。

总结

以上命令虽然看起来多,但平常用的最频繁的应该是“基本命令”与“分支管理”部分,只要多用几次,自然便能记住,应付日常工作完全没有问题,彻底脱离GUI操作,让工作更有效率。

我的个人博客地址: http://blog.jboost.cn

我的头条空间: https://www.toutiao.com/c/user/5833678517/#mid=1636101215791112

我的github地址: https://github.com/ronwxy

我的微信公众号:jboost-ksxy

————————————————————————————————————————

命令行高效操作Git,看这篇就够了 欢迎关注我的微信公众号,及时获取最新分享


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解Java虚拟机(第2版)

深入理解Java虚拟机(第2版)

周志明 / 机械工业出版社 / 2013-9-1 / 79.00元

《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》内容简介:第1版两年内印刷近10次,4家网上书店的评论近4?000条,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的改进:根据最新的JDK 1.7对全书内容进行了全面的升级和补充;增加了大量处理各种常见JVM问题的技巧和最佳实践;增加了若干......一起来看看 《深入理解Java虚拟机(第2版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具