GIT使用详解

Git SSH配置,分为三步

  1. 配置基本用户信息
  2. 配置SSH公钥和密钥
  3. 配置远程仓库公钥

Git Bash配置

1)$ git config --global user.name “huangyu”

2)$ git config --global user.email huangyu@qq.com

Get Clone

使用git clone从现有Git仓库中拷贝项目

Git clone <repo> <directory>

将仓库克隆指定的目录

克隆Ruby语言的Git代码仓库Grit,可以用下面的命令

$ git clone git://github.com/schacon/grit.git

执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个.git的目录,用于保存下载下来的所有版本记录。

如果要自己定义新建的项目目录名称,可以在末尾指定新的名字:

$ git clone git://github.com/schacon/grit.git mygrit

git clone时,可以使用不同的协议,包括sshgithttps等,其中最常用的是ssh,因为速度快,还可以配置公钥免输入密码

git clone git@github.com:fsliurujie/test.git         --SSH协议

git clone git://github.com/fsliurujie/test.git          --GIT协议

git clone https://github.com/fsliurujie/test.git      --HTTPS协议

配置ssh公钥和私钥

ssh-keygen rsa -C your email

rsa为加密算法,-C为注释信息

生成的公钥路径为~/.ssh/id_rsa.pub 私钥为~/.ssh/id_rsa

配置远程仓库公钥

拷贝内容,cat ~/.ssh/id_rsa.pub,复制到远程ssh key下即可

提交代码的步骤

git st #查看上次更新后的更改或者写入缓存的改动

git add <file> #添加修改或新增文件至缓存区

HEAD commit版本

Index staged版本

git diff  #比较工作目录和暂存区域之间的差异

git diff --cached  #查看已经暂存起来的文件(staged)和仓库之间(HEAD)的差异

git diff HEAD  #显示工作版本(working tree)和HEAD的差别

git diff --stat  #显示摘要而非整个diff

git commit -m xxx  #将缓存区内容添加到仓库中

git reset HEAD <file>  #用于取消已缓存的内容

git rm <file>  #git中移除某个文件

git rm -f <file>  #如果删除之前已经修改过并且已经放到暂存区域的话,使用-f

git rm --cached <file>  #从暂存区域移除,但仍希望保存在当前目录中

git rm -r *  #递归删除该目录下的所有文件和子文件

git mv <old filename> <new filename> #用于移动或者重命名一个文件、目录、软连接

分支管理

1)git branch <branch name> #创建分支命令

2)git checkout <branch name> #切换分支

3)git checkout -b develop origin/develop #checkout远程Release分支,在本地起名为develop分支,并切换到本地develop分支

4)git branch -d <filename> #删除分支命令

git log -x  #查看前x条提交信息

git log --online  #查看历史记录的简洁版本

git log --graph  #查看历史什么时候出现

git标签

git tag -a <标签>  #为最近一次提交打上(HEAD)“v1.0”标签

git tag --decorate  #查看标签

git tag -a v0.9 85fc7e7  #为某次提交追加标签

git log --oneline --decorate --graph  

git tag  #查看标签

git tag -a <tagname> -m runoob.com标签” #指定标签信息命令

git checkout --readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

1)readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态

2)readme.txt已经添加到暂存区后,又作了修改,现在,撤销就是回到添加到暂存区后的状态

3)readme.txt已将添加到暂存区,并且提交了后,又作了修改,现在,撤销啥也没有,打开readme.txt回到修改之前的状态

撤销修改,已经commit

git revert -m 1 HEAD #创建一个新的commit,并且回到合并之前的状态

git reset --hard commid_id/HEAD~ #回退到指定的commit节点 #将本地仓库、暂存区、工作目录恢复到上一个版本(所有的修改都将失去)

git reset --mixed HEAD~ #将本地仓库、暂存区恢复到上一个版本,工作目录保存着修改

git reset --soft HEAD~ #将本地仓库、上一个版本、暂存区、工作目录保存着修改

没有commit前提下

git merge --abort #丢弃正在进行的合并

储藏与清除

背景:如果在其他分支开发,突然有个更紧急的bug需要修复,怎么办?

此时只要切回master分支,继续其他分支开发就可以。但是,要留意你的工作目录和暂存区那些还没有被提交的修改,它可能会和你即将检出的分支产生冲突从而阻止git切换到该分支。最好的方法时,在你切换分支之前,保持一个干净的状态,有两个方法:①将修改的文件存储起来,②将修改的文件清除。

储存文件:指的是在当前分支先将目前修改的文件保存起来(保存进度(stashing)),完成任务之后再回到该分支恢复进度(apply)。

git stash  

默认情况下,git stash会缓存下列文件:

添加到暂存区的修改(staged changes

l Git跟踪的但并未添加到暂存区的修改(unstaged changes

但不会缓存以下文件:

在工作目录中新的文件(untracked files

被忽略的文件(ignored files

git stash --include-untracked(-u)  #将当前工作目录已跟踪的文件储藏起来,同时存储未跟踪的文件,使用-a或者--all命令可以stash当前目录下的所有修改。

git stash list 查看储藏列表

git stash apply 将最近一次储藏恢复到工作目录,但是恢复后,储藏内容并不删除

git stash apply stash@{<num>}  #恢复某个指定的缓存

git stash drop stash@{<num>}   #将某个缓存从列表中移除

git stash pop 恢复最近一次缓存,并立即从列表上移除

如果不小心删除了缓存,可以使用g'i't fsck --lost-found命令查看,找到你刚才stash@{0}时成功删除的id,使用git show <id>查看是否为丢弃的改动,是,直接git merge <id> 即可找回

清除文件

对于工作目录中一些工作或文件,你想做的不是储藏而是移除

git clean  移除未跟踪文件(不包括忽略的文件),恢复不了

git clean -d -f 移除工作目录中所有未跟踪的文件以及空的子目录

git clean -d -x 移除未跟踪文件(包括忽略的文件)

远程仓库使用

远程仓库是指托管在因特网或其他网络中的项目的版本库。其常使用的指令有如下:

git clone <url>   克隆远程仓库到本地

git remote  列出每个远程仓库的简短名字

git remote -v    列出每个远程仓库的简短名字与其对应的 URL

git remote show [remote-name]   查看某个远程仓库的详细信息

git remote rename [old name] [new name]  重命名远程仓库

git remote rm [remote-name]   移除某个远程仓库

git remote add <shortname> <url>  添加一个远程仓库

git fetch [remote-name]  从远程仓库数据拉取最新到本地,但不自动合并本地的修改

git  pull   [remote-name] [branch-name]  把远程仓库数据拉到本地,并自行合并

git pull 的魔法经常令人困惑所以通常单独显式地使用 fetch merge 命令会更好一些。

git  push [remote-name] [branch-name]    把本地代码推送到远程仓库,一般先执行git

pull、在执行git push  确保代码是最新的,不然会被拒绝

git push [remote-name] HEAD:refs/for/[your branch] 将本地分支push到远程分支,经过评审之后才能merge到远程

如果一个分支没有关联到远程分支上,使用以下命令:git branch --set-upstream-to=origin/<remote branch> <your branch>

***如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令:

git branch --set-upstream branch-name origin/branch-name

 

设置别名

 git config alias.br branch

git config alias.ci commit

git config alias.co checkout

git config alias.st staus

解决中文名字问题

git config core.quotepath false

 

 

Vim文件操作

退出vim

1)ESC

2)最下面出现一条能输入命令的地方->输入冒号:

3)输入命令

:w 保存文件但不退出
:w file 将修改另外保存到 file 中,不退出
:w! 强制保存,不退出
:wq 保存文件并退出
:wq! 强制保存文件,并退出
:q!不保存文件,强制退出
:e! 放弃所有修改,从上次保存文件开始再编辑

posted @ 2020-03-26 10:08  小黄鱼的圈子  阅读(115)  评论(0编辑  收藏  举报