zoukankan      html  css  js  c++  java
  • Git学习小结

    现在已经使用git在项目中做版本控制工具,但是从来没有详细的学过一遍git的命令行操作方法,这次也是通过廖雪峰的git教程在来仔细的学习了一遍。这篇文字也是做一个学习的记录。
    廖雪峰Git教程

    git init

    命令把这个目录变成Git可以管理的仓库 创建仓库

    git add

    向仓库中添加文件,实际上是吧文件添加到暂存区

    $ git add <file> 
    

    git commit

    提交文件,实际上是把暂存区的所有内容提交到当前分支

    $ git commit -m "提交说明"
    

    git status

    命令可以让我们时刻掌握仓库当前的状态

    git diff

    顾名思义就是查看differencegit

    $ git diff <file> 
    
    $ git diff HEAD --<file>  该命令可以查看工作区和版本库里面最新版本的区别
    

    git log

    命令查看提交日志

    git log --pretty=oneline
    将日志简化显示 一行
    $ git log --graph
    查看分支合并日志
    $ git log --graph --pretty=oneline
    查看分支合并日志,并一行显示
    $ git log --graph --pretty=oneline --abbrev-commit
    查看分支合并日志,并一行显示,简化commit id 显示
    

    git reset

    $ git reset --hard HEAD^  
    退回上一个版本
    $ git reset --hard <commit id> 
    退回到指定的版本
    $ git reset HEAD <file> 
    可以把暂存区的修改撤销掉(unstage),重新放回工作区
    

    HEAD 表示是最新版本

    在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。

    git reflog

    用来记录你的每一次命令:提交切换版本id等

    git checkout -- filename

    文件在工作区的修改全部撤销,这里有两种情况:

    一种是自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    git rm

    $ git rm <file> 从版本库中删除文件
    

    Git跟踪并管理的是修改,而非文件。

    第一次修改 -> git add -> 第二次修改 -> git commit

    你看,我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

    撤销修改的小结:

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,可以使用退回版本,不过前提是没有推送到远程库。

    关联GitHUb

    SSH Key

    第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

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

    第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。

    本地仓库内容推送到GitHub仓库

    在本地仓库下使用一下命令,将本地仓库和GitHub仓库关联起来

    $ git remote add origin git@github.com:GitHub账户名/仓库名.git
    origin是默认的远程仓库名称,可以自己修改
    

    git push

    将本地的仓库推送到远程

    $ git push -u origin master
    

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    $ git push origin branchname
    在本地仓库提交后推送到远程仓库

    git pull

    将远程库拉下来(更新远程库的修改)

    注:如果pull失败,原因是本地的分支没有和远程的分支链接

    $ git branch --set-upstream localbranch origin/dev   
    localbranch:本地分支  origin/dev:远程库名/分支
    

    git clone

    远程Clone仓库

    $ git clone git@github.com:GitHub账户名/仓库名.git
    

    git branch

    查看分支

    git branch <name>
    创建分支
    git checkout <name>
    切换分支
    

    git checkout

    git checkout -b <name>
    创建+切换分支
    注:从远程库clone下来时,默认只能看到本地的master分支,如果想在clone下的库的其它分支开发可以用一下命令
    $ git checkout -b dev origin/dev  远程origin库的dev分支
    

    git merge

    合并某分支到当前分支:

    $ git merge --no-ff -m "commit content" branchname
    Git 默认的合并方式是 Fast forward 这种模式下,删除分支同样会删除分支信息
    以--no-ff模式合并分支,会生成一个新的commit,删除分支后能看见分支的历史信息
    默认 Fast forward模式
    

    git branch

    git branch -d <name>
    删除分支
    git branch -D <name>
    强行删除一个未合并的分支
    

    git stash

    把当前的工作区“存储”起来,可以切换的其他分支修改bug,用于当前开到一半,需要去别的分支修改bug 的情况

    git stash drop
    删除stash
    git stash list
    查看当前stash的列表
    git stash apply
    恢复stash,但stash内容并不删除 
    git stash apply stash@{0}
    当有多个stash列表的时候,可以指定stash id 恢复
    git stash pop
    恢复的同时把stash内容也删了
    

    git remote

    查看远程库的信息

    git remote -v 
    查看远程库的详细信息
    

    git tag

    tag就是给提交的一个commit绑定在一起,起一个更易于查找的名称。

    git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    git tag -a <tagname> -m "blablabla..."可以指定标签信息;
    git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
    git tag可以查看所有标签。
    
    git push origin <tagname>可以推送一个本地标签;
    git push origin --tags可以推送全部未推送过的本地标签;
    git tag -d <tagname>可以删除一个本地标签;
    git push origin :refs/tags/<tagname>可以删除一个远程标签。
  • 相关阅读:
    OLAP ODS项目的总结 平台选型,架构确定
    ORACLE ORA12520
    ORACLE管道函数
    ORACLE RAC JDBC 配置
    ORACLE RAC OCFS连接产生的错误
    ORACLE 启动和关闭详解
    OLAP ODS项目的总结 起步阶段
    ORACLE RAC 配置更改IP
    ORACLE RAC OCR cann't Access
    ORACLE RAC Debug 之路 CRS0184错误与CRS初始化
  • 原文地址:https://www.cnblogs.com/cloud9527/p/13161441.html
Copyright © 2011-2022 走看看