1

常用git操作总结记录

准备工作

安装Git
配置

$ git config --global user.name ""
$ git config --global user.email ""

本地创建版本库

$ git mkdir git
$ cd git
$ git init

备份并删除原有SSH

  1. 检查ssh是否存在

       $ cd ~/.ssh
  2. 如果存在,则备份并删除

       $ ls  
       id_rsa  id_rsa.pub  known_hosts
       $ mkdir key_backup                //创建备份目录
       $ cp id_rsa* key_backup           //备份
       $ rm id_rsa*                      //删除
    

添加远程仓库(github

  1. 创建SSH Key

       $ ssh-keygen -t rsa -C "email@example.com"

这时在用户目录下多出了两个文件:id_rsa(私钥)和id_rsa.pub(公钥),创建空文件known_hosts

  1. 登陆GitHub,打开Account settings/SSH Keys页面,点Add SSH Key,填上Title,在Key文本框里粘贴id_rsa.pub文件的内容。粘贴好以后点Add Key,你就应该看到已经添加的Key
  2. 点击Create repository,创建远程仓库。
  3. 添加远程仓库。

       $ git remote add origin git@github.com:username/repository.git
  4. 第一次推送并关联远程库

       $ git push -u origin master
    

克隆远程仓库

  1. 先在githubfork一个开源仓库,这时,这个仓库在你的账号中已经有了一个副本了。
  2. 克隆到本地。

       $ git clone git@github.com:username/repository.git
  3. 推送代码到自己的仓库后,pull reques到开源仓库。

基本操作

从工作区(Working Directory)添加到暂存区(stage/index

$ git add readme.md
$ git add .    //添加所有修改的文件

从暂存区提交到版本库(Repository/HEAD

$ git commit -m ""

从版本库推送到远程仓库master分支

$ git push origin master    

从远程仓库更新本地

$ git pull

从远程仓库获取最新文件并更新本地

$ git fetch origin master
$ git log -p master..origin/master    //查看不同
$ git merge origin master

查看本地文件状态

$ git status

查看文件修改内容

$ git diff

查看提交历史日志

$ git log
$ git log --pretty=oneline    //一行显示一次提交历史

查看命令历史

$ git reflog

查看远程库信息

$ git remote
$ git remote -v

撤销工作区的修改(找回被误删的工作区的文件)

$ git checkout -- readme.md    //回到最近一次add或commit时的状态

撤销提交到暂存区的文件

$ git reset HEAD readme.md

回退版本到该版本commit之前

$ git reset --hard HEAD^    //回退到上一个提交版本
$ git reset --hard HEAD^^    //回退到上两个提交版本
$ git reset --hard HEAD~100    //回退到上100个提交版本
$ git reset --hard 123456...    //回退到提交id为123456...的版本

删除文件

$ git rm readme.md
$ git commit -m "delete readme.md"

最后附图一张:

Git Data Transport Commands

分支

查看分支

$ git branch

创建分支dev

$ git branch dev

切换到分支dev

$ git checkout dev

创建并切换到分支dev

$ git checkout -b dev
$ git checkout -b dev origin/dev    //创建远程仓库分支到本地

指定远程仓库dev分支到本地dev分支的链接

$ git branch --set-upstream dev origin/dev   

合并分支dev

$ git merge dev
$ git merge --no-ff -m "merge with no-ff" dev    //生成一次commit,通过历史记录可以查询到。

删除分支dev

$ git branch -d dev
$ git branch -D dev    //删除没有合并的分支

保存现场

$ git stash

查看保存的现场

$ git stash list

删除现场

$ git stash pop    //恢复现场并删除stash
$ git stash apply    //恢复现场不删除stash
$ git stash drop    //删除现场

标签

查看标签

$ git tag

创建标签

$ git tag v1.0
$ git tag v0.9 123456...    //为提交id为123456...的版本创建标签
$ git tag -a v1.0 -m "v1.0 released" 123456...    //添加注释

查看标签信息

$ git show v1.0

推送标签到远程库

$ git push origin v1.0
$ git push origin --tags    //推送所有标签

删除标签

$ git tag -d v1.0
$ git push origin :refs/tags/v1.0    //删除远程库标签

配置

  • 通过配置。.gitignore文件忽略不需要添加到本地仓库的文件。
  • 配置别名。

       $ git config --global alias.st status
       $ git config --global alias.co checkout
       $ git config --global alias.ci commit
       $ git config --global alias.br branch
       $ git config --global alias.unstage 'reset HEAD'
       $ git config --global alias.last 'log -1'
       $ git config --global alias.lg 'log --pretty=oneline'

配置别名也可在.gitconfig文件中设置。
删除别名。在.git/config配置文件中删除对应的别名。


参考:廖雪峰Git教程
配置github的SSH key及GitHub项目上传方式一——使用终端命令行

转载请注明出处:https://segmentfault.com/a/11...

文章不定期更新完善,如果能对你有一点点启发,我将不胜荣幸。


hiYoHoo
2.2k 声望23 粉丝