Git使用简易教程(命令)

Git使用简易教程(命令)

Git是目前世界上最先进的分布式版本控制系统,没有之一,学到就是赚到!
这里记录了一些我在学习git使用时,最实用的方法和命令集合。

Git安装(Windows)

  • 首先直接在官网下载Git安装程序,按照默认选项进行安装
  • 安装完成后,在开始菜单找到Git->Git Bash应用程序,点击后弹出命令行窗口就说明安装成功啦!
  • 设置机器信息
    git config --global user.name "Your Name"
    git config --global user.email "email@example.com" 
    
    –global为全局参数,表示当前机器上的所有仓库都会使用这个配置

创建版本库

版本库也就是仓库(repository),可以理解为一个目录,该目录下的所有文件都可以使用Git管理。

  • 选择一个合适的地方,创建空目录
    $ mkdir gitlearning
    $ cd gitlearning
    $ pwd
    /d/git-repository/gitlearning
    
  • 通过git init命令把这个目录变成Git可以管理的仓库:
    $ git init
    Initialized empty Git repository in /d/$ git-repository/gitlearning
    

文件添加和提交

  • 将文件修改添加到暂存区(stage)
    $ git add <file> 
    $ git add readme.txt //示例
    
  • 将文件从暂存区提交到当前分支
    $ git commit -m <message>  //-m添加说明参数,最好不要省略
    $ git commit -m "add 1 file"  //示例
    

版本回退

  • 版本控制历史记录

    $ git log
    $ git log --pretty=oneline
    
  • 版本回退

    $ git reset --hard HEAD^  //HEAD指向当前版本,HEAD^就是上一个版本,HEAD^^就是上上个版本
    $ git reset --hard <commit id>  //commit id可以通过git log查找
    $ git reset --hard 4c805e2 //示例,id只需能够唯一标识该条提交的前若干位数字
    
  • 命令历史记录

    $ git reflog  //查看历史命令
    
  • 查看状态

    $ git status
    

撤销修改

  • 撤销工作区文件修改(该文件还未添加到暂存区中)

    $ git checkout -- file
    $ git checkout -- readme.txt  //示例
    
  • 文件已经添加到暂存区,先撤销暂存区修改,再撤销工作区修改

    $ git reset HEAD <file>
    $ git reset HEAD readme.txt  //示例
    
  • 已经提交了不合适的版本到版本库,且还未推送到远程仓库,撤销修改即版本回退,参考前文。

删除文件

一般情况下,我们可以直接再文件管理器中删除指定文件,或者使用rm命令删除

但此时,工作区和版本库就不一致了,git status命令会告诉我们哪些文件被删除了

此时有两种情形

  • 同步工作区和版本库,从版本库中删除该文件

    $ git rm <file>
    $ git rm test.txt  //示例
    $ git commit -m "remove test.txt"  //删除后记得git commit提交
    
  • 删错了,将文件恢复到版本库的最新版本,“一键还原”

    $ git checkout -- <file>
    $ git checkout -- test.txt  //示例
    // 没有添加到版本库就被删除的文件是无法回复的。
    

远程仓库

  • 关联远程仓库

    $ git remote add orign git@server-name:path/repo-name.git  //origin为远程仓库命名,默认为origin
    
  • 将本地内容推送到远程仓库

    //第一次推送master分支所有内容
    $ git push -u origin master
    //之后每次本地master提交修改后,推送修改内容
    $ git push origin master
    //简写
    $ git push
    
  • 从远程仓库克隆到本地

    $ git clone git@server-name:path/repo-name.git
    

分支管理

  • 查看分支

    $ git branch  //*表示当前分支
    
  • 创建分支

    $ git branch <name>
    $ git branch dev  //创建dev分支示例
    
  • 切换分支

    $ git checkout <name>
    $ git checkout dev  //切换到dev分支示例
    
    $ git switch <name>
    $ git switch dev  //切换到dev分支示例
    //最新版本Git提供的switch命令更科学,推荐使用
    
  • 创建并切换分支

    $ git checkout -b <name>
    $ git switch -c <name>
    
  • 删除分支

    $ git branch -d dev
    
  • 合并分支

    //切换到masetr分支,使用`git merge`将dev分支合并到master分支示例
    $ git switch master
    $ git merge dev  
    
  • 分支冲突

    合并分支时,如果同时对同一处做了修改,会产生冲突。
    先解决冲突,再提交合并。

    $ git branch --graph  //查看分支合并情况,按q退出查看
    
  • 分支合并策略

    $ git merge --no-ff -m "message" dev
    // --no-ff参数可以使用普通模式合并,可以看出曾经合并的分支,fast forward合并看不出来
    
  • BUG 分支

    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;

    在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick \<commit\>命令,把bug提交的修改“复制”到当前分支,避免重复劳动

    $ git stash  //储藏工作现场
    $ git stash list  //查看工作现场
    
    $ git stash pop  //恢复工作现场,同时删除stash内容
    
    $ git cherry-pick <commit id>  //复制一个特定的提交到当前分支
    
    $ git branch -D <branchname>  //强制删除一个没有合并过的分支
    

多人协作

  • 查看远程库信息

    $ git remote
    $ git remote -v
    
  • 从远程抓取远程的新提交

    $ git pull
    
  • 从本地推送分支

    $ git push origin <branchname>
    
  • 在本地创建和远程分支对应的分支

    $ git checkout -b <branch> origin/<branch>  //本地和远程的分支名称最好一致
    
  • 建立本地分支和远程分支的关联

    $ git branch --set-upstream <branch> origin/<branch>
    

标签管理(版本管理)

  • 查看所有标签

    $ git tag
    
  • 添加新标签

    $ git tag <tagname>
    $ git tag v1.0  //默认标签搭载最新提交的commit上
    
    $ git tag <tagname> <commit id>  //为指定commit打标签
    
    $ git tag -a <tagname> -m "message" <commit id>  //-a指定标签名,-m指定说明文字
    
  • 推送标签到远程

    $ git push origin <tagname>  //指定标签
    $ git push origin --tags  //一次性推送全部尚未推送到远程的标签
    
  • 删除标签

    //删除本地标签
    $ git tag -d <tagname>
    
    //删除已经推送到远程的标签
    $ git tag -d <tagname>  //先从本地删除
    $ git push origin :refs/tags/<tagname>
    

配置别名

我们可以为我们常用的git命令单词配置别名,简化输入

  • 使用alias关键字
    //为status配置别名st,git status = git st
    $ git config --global alias. st status
    
    //为checkout配置别名co
    $ git config --global alias. co checkout
    
    --global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用,不加--global,只对当前仓库起作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值