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

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

内容简介:对于软件开发人员来说,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,看这篇就够了 欢迎关注我的微信公众号,及时获取最新分享


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

查看所有标签

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

Tales from Facebook

Tales from Facebook

Daniel Miller / Polity Press / 2011-4-1 / GBP 55.00

Facebook is now used by nearly 500 million people throughout the world, many of whom spend several hours a day on this site. Once the preserve of youth, the largest increase in usage today is amongst ......一起来看看 《Tales from Facebook》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具