git简明教程

git是目前很强大且应用最广泛的版本控制系统。本文对git中最常用的操作命令做了一些总结。

配置ssh

使用http方式访问远程仓库时,pull、push这些操作都需要输入用户名和密码,很繁琐,使用SSH 公钥来进行授权会很方便。

在git配置SSH步骤如下:

生成ssh key

在terminal中输入以下:

ssh-keygen -t rsa -C "email@address.com"

会提示你输入密码,这个密码用来设置访问key的密码,可以为空。
之后在~.ssh这个目录会生成id_rsa和is_rsa.pub两个文件;

添加公钥到你的帐户,以github为例:

首先打开is_rsa.pub,拷贝所有信息;拷贝的时候最好使用cat,然后cmd + c或者pbcopy命令。用文本编辑器打开可能会产生多余的字符,导致校验错误。

登陆github帐户,点击头像进入profile setting -> 点击 SSH and GPG Keys -> 点击 New SSH key ,填写title和key。

测试你的ssh key是否正常使用:

ssh -T name@github.com

配置git

初始化git目录

git init

在你需要初始化的目录下输入init命令,即可生成.git目录,目录中有HEAD, config, description三个文件和branches, hooks, info, objects, refs五个文件夹。一个仓库便初始化完成了。

克隆已有的仓库

git clone

当你在github或者gitlab等平台手动创建仓库后,系统会再服务器上自动初始化完成仓库。之后调用clone命令就可以将远程的仓库克隆一份在本地。我们常说git是分布式版本控制,其分布式体现在去中心化。虽然日常使用中都有一个中心仓库,但每一个克隆下来的仓库都是一个完整的镜像,而每个仓库的地位都是平等的。

设置远程仓库地址

git remote set-url origin git@github.com:someaccount/someproject.git

如果本地init的仓库需要推送到新的远程仓库,或者要改变当前仓库的远程url,使用上述命令。

查看当前的远程地址:
git remote -v

config设置

git config --system   配置全局属性           
git config --global   配置当前用户属性      
git config --local    配置当前版本库,缺省值   
git config -l 查看所有属性
git config user.name <username>
git config user.email  <email>
git config core.editor  vim
git config core.color   auto

初始化完成仓库以后,我们常用的就是设置下自己的名字和邮箱等。使用git config -l 查看所有的属性,也可以直接对某个属性设置值。

git的使用

分支操作

git branch 将本地的分支打印出来
git branch -r 打印远程所有分支
git branch -a 将本地和远程所有分支打印出来
git branch -D branchName 删除branchName分支
git checkout branchName 切换到branchName分支
git checkout -b branchName 在当前分支基础上新建一个branchName分支

最常见的操作就是切换分支了,上述命令可以方便地切换或者新建分支。

提交操作

git status 查看当前状态
git add . 把工作空间中所有修改(包括新建和删除)的文件添加到索引库中
git commit 把索引中所有的修改提交到本地
git commit --amend 以追加形式提交
git fetch 将远程仓库拉取到本地镜像中
git pull  将远程仓库拉取到本地镜像并且合并到本地分支中 git pull = git fetch  + git merge
git pull --rebase 以rebase方式拉去仓库
git push origin branchName 将当前分支推送到远程仓库中

git的提交分为几个阶段:

  1. 加入索引:使用git add 命令将修改的文件加入到git的索引中,即受到版本控制了。
  2. 将索引内容添加到仓库中:使用git commit命令将索引中的内容添加到本地仓库,这条命令会产生一次提交记录,并且生成commit id。这条记录可以用来追踪历史的改动记录。
  3. 将本地仓库内容推送到远程:使用git push命令,将当前的分支上所有改动内容推送到远程仓库中。

合并操作

git merge branchName 将branchName分支合并到当前分支
git merge --squash branchName 将branchName中的所有commit合并为一个,并应用到当前分支
git cherry-pick commitId 将commitId对应的提交应用到当前分支
git rebase branchName:把你的当前分支里的每个提交(commit)回退,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把当前分支更新到branchName分支,最后把之前的补丁应用到当前分支上。

git可以方便地开新分支开发,完成后合并到主干分支。涉及到两个分支之间的合并操作主要有merge、cherry-pick、rebase三个操作。

回退操作

git reset commitId 如果想回到当前分支历史上任意一个commit,可以使用reset
git reset --hard commitId 与不加hard相比,不加hard虽然git上回退,但所有文件的修改都还保留;加hard连文件都会退掉。
git revert 撤销某次commit,但会将这次撤销也作为一次commit,即做一次反向修改。

reset和revert的区别是,reset是直接会退到历史版本,且删除此版本之后的所有修改;而revert是将某次commit做一个反向修改,并产生一个新的提交。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git简明教程 1. git四大域 git四大域:工作目录,暂存区,仓库,远程仓库。git对文件的操作都是在四大域...
    lavor阅读 11,102评论 27 435
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,737评论 9 163
  • 国庆过后,风刮的有种想穿棉袄的冲动,不知各位的多肉还安好? 今天馆长就要给大家介绍一种在风中,雨中,冬天中都可以给...
    我是阿甘呀阅读 241评论 0 1
  • 你什么时候觉得自己很孤独? --插不上话,融不进别人圈子的是时候。 --一个人出门发现忘记戴耳机的时候。 --睡午...
    荒芜寂静阅读 206评论 3 1
  • 我可没有这个意思,你居然能这么理解,你反观下自己吧!@ 对于修行的人,这句话可称为怼人的“万能金句” 也是我听到的...
    大白咚阅读 173评论 0 0