zoukankan      html  css  js  c++  java
  • git 常用命令

    //初始化仓库的用户信息,——global选项是用来偷懒的,以后新建仓库就不需要重新制定了
    git config --global user.name "StivenYang"
    git config --global user.email "StivenYang626@gmail.com"

    //初始化当前目录作为repod
    git init

    //向本地仓库提交更改
    git commit -m "xxx"

    //查看当前是否有更改需要commit
    git status

    //查看FILE是否被更改,更改的哪几行
    git diff FILE

    //git的版本控制,各种吃后悔药,哈哈
    git reset --hard CommitId
    git reglog
    git checkout -- FILE //又是一个后悔药:撤销工作区制定文件做过的修改, -- 可是很重要的,不要忘记写了,不然就成了切换分支了哦:-)
    git reset HEAD FILE //强力后悔药:可以把已经提交到暂存区的修改给撤销,舒服吧?

    //git的工作区,暂存区,和仓库repod的理解

    //添加远程仓库,很兴奋,有木有,有木有?
    ssh-keygen -t rsa -C "StivenYang626@gmail.com"
    //生成秘钥以后,需要把公钥添加到咱们的github setting或者码云 setting的ssh项里面,目的是让你可以为所欲为的修改远程仓库,哈哈,以后修改可是要小心了(有后悔药可以吃,不怕不怕啦)

    //把本地的仓库和远程的仓库进行关联,方便在不同的机器上面进行开发这个项目
    git remote add origin git@github.com:StivenYang/git.git

    git push -u origin master //-u参数是在第一次,也就是远程repo为空的时候使用的,目的是同步master分支,在以后的push和pull时可以简化命令

    //克隆远程的仓库到本地
    git clone git@github.com:StivenYang/git.git

    ///////////////////////////////////
    //下面是分支branch的概念和命令
    ///////////////////////////////////
    //创建分支并切换到该分支
    git checkout -b dev //可以分解为git branch dev 和 git checkout dev 两个命令

    //查看分支
    git branch

    //切换到主分支
    git checkout master

    //合并分支
    git merge dev

    //删除分支
    git branch -d dev

    //查看分支合并图
    git log --graph

    ////////////////////////////////////
    //下面是分支冲突
    ////////////////////////////////////
    情景1:你创建了一个分支,修改了这个分支以后,切换到了主分支;然后你没有合并分支,又在master分支上做了修改;修改完之后开始合并分支;这时候,次分支和主分支就会发生冲突,这时候应该怎么办?
    我的答案:首先手动解决冲突,然后再合并分支。比方说有一句话:hello world,主分支加了一个?,次分支加了一个!,并且都提交了,这时候合并分支的时候就会发生上述的错误,发生错误以后,这句话就会变成下面这样:
    hello world?
    也就是这个文件会把两次修改的都列出来让你选择,你需要删除某些你不用的,然后再次进行提交就行了,很方便,有木有?最后别忘了删除不用的分支哦。

    //git的Fast forward模式以及禁用该模式
    //如果想要在删除分支以后保存你在分支上的操作历史信息,你可能需要关闭fast forward模式
    git merge --no-ff -m "merge with no-ff" dev

    //在实际的开发里面,分支的管理有以下几个基本原则
    //1.master分支应该是非常稳定的,也就是仅用来发布新的版本,
    //2.工作的的分支应该是一个dev分支
    //3.每个人的分支应该是dev分支下面各自新建的分支
    //4.等到自己的活干完以后,然后才向dev分支发出合并请求

    //bug分支
    //在实际的开发中,如果开发过程中有一个bug被发现了,需要立即去修改bug & 但是我们现在的开发还没有完成 & 这时候怎么办呢? & 使用stash功能吧 & 这个命令可以暂存工作现场,& 之后我们就可以临时创建一个分支,用来修改bug,在修改完bug并merge到对应分支后,删除这个临时分支就OK了。
    //命令实现
    git status
    git stash
    git checkout master //假定主分支上有个bug要修复
    git checkout -b issue-101 //Bug代号为101
    git add file & git commit -m "xxx" //修复bug
    git checkout master //切换到主分支
    git merge --no-ff -m "merged bug fix 101" issue-101 //合并临时分支
    git branch -d issue-101 //删除临时分支
    git checkout dev //切换到工作分支
    git status //查看工作分支是否有要提交的,因为我们保存了现场,需要在stash列表里面恢复,所以在我们没有恢复之前,应该是没有提交的,接下来是恢复现场
    git stash list //查看保存的现场列表
    git stash pop || git stash apply //用第二种方式恢复以后,stash列表中的现场不会自动删除,需要我们自己使用git stash drop来手动删除;而使用第一种方式在恢复现场的同时,也会把stash列表中保存的现场内容也删除了,很方便
    git stash list //再次查看stash列表,确保操作无误
    //也可以多次stash,恢复的时候,先使用git stash list查看,然后再恢复,命令如下:
    git stash apply stash@{index} //index为list中显示的下标

    //Feature分支
    //添加新功能时,为了不把主分支搞乱,最好新建一个开发分支,开发分支完成之后,合并,删除feature分支
    git checkout -b feature-vulcan //新建分支
    git add file & git commit -m "xxx" //完成开发并提交
    git checkout dev //切回dev分支,准备合并
    git merge --no-ff -m "xxx" feature-vulcan //合并分支
    git branch -d feature-vulcan //删除分支
    //如果在开发过程中接到上级命令,新功能取消,那么需要省略合并步骤,直接删除该分支
    git branch -D feature-vulcan //强制删除该分支,即使修改没有提交

    //查看远程库的信息
    git remote
    git remote -v
    //推送分支
    git push origin master
    git push origin dev
    //如果推送失败,因为远程分支比本地更新,需要先使用git pull试图合并
    git pull
    //如果合并有冲突,则解决冲突,并在本地提交
    //如果没有冲突或者解决掉冲突后,再推送到远程仓库
    git push origin branch-name
    //如果git pull提示“no tracking informatiom",说明本地分支和远程分支的链接关系没有创建,用命令如下:
    git branch --set-upstream branch-name origin/branch-name

    //克隆指定分支
    git clone -b branch-name repo-address

    /////////////////////////////////////////////
    //下面是标签,主要用来管理版本
    /////////////////////////////////////////////
    //切换到需要打标签的分支上
    git branch //查看分支
    git checkout master //假如要打标签的分支是主分支
    git tag v1.0 //给当前分支打上标签
    git tag //查看当前所有的标签
    //如果忘了打标签,现在想起来了,怎么打?
    git log --pretty=oneline --abbrev-commit //找出历史提交的commit id
    git tag v0.9 123456 //给指定的版本打上标签
    git show //查看标签信息
    git tag -a v0.1 -m "version 0.1 released" 123456 //创建带有说明的标签
    //通过-s用私钥签名一个标签,需要先安装gpg
    git tag -s v0.2 -m "signed version 0.2 released" 123456
    //用PGP签名的标签是不可伪造的,因为可以验证PGP签名。
    /标签的管理/
    git tag -d v0.1 //删除标签
    git push origin v1.0 //推送标签到远程仓库
    git push origin --tags //推送所有尚未推送到远程的本地标签
    git push origin :refs/tags/v0.9 //推送删除标签到远程repo

    //////////////////////////////////////////
    //git的配置
    //////////////////////////////////////////
    git comfig --global color.ui true //显示颜色

    //忽略特殊文件
    在git的工作目录下创建一个特殊的.gitignore文件,把要忽略的文件丢进去就好了
    .gitignore的格式可以仿照https://github.com/github/gitignore书写
    //强制添加文件到Git
    git add -f filename

    //检查哪个规则错了
    git check-ignore -v filename

    //配置别名
    git config --global alias.st status //把status重建别名st
    git config --global alias.co checkout //为checkout重建别名co
    git config --global alias.ci commit //为commit重建别名ci
    git config --global alias.br branch //为branch重建别名br

    git config --global alias.unstage 'reset HEAD' //为reset重建别名unstage
    git config --global alias.last 'log -1' //为log -1重建别名last,显示最近一次提交的信息
    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

    //配置文件(.git/config)
    //当前用户的Git配置文件(用户主目录下的.gitconfig)

    //撤销本地所有修改
    git checkout .

    ///////////////////////////////////////////
    //开发到一半,有人给了一个改进的需求,这时候我们就需要保存当前的环境,然后切换到线上环境去解决需求,完成以后重新回到之前的环境继续开发
    ///////////////////////////////////////////
    //如果新的需求和当前修改的代码不在一个模块
    //可以先commit代码,不push,然后修改代码完成需求

    //但是如果写到一般的代码,就得去改另外一个bug了,这时候就需要保存当前环境了
    //将本地的修改暂存到堆栈缓冲区
    git stash
    git stash save "comment"

    //从堆栈缓冲区取出上一次暂存的修改,并应用到当前环境
    git stash pop
    //列出所有的堆栈缓冲区的修改记录
    git stash list
    //应用指定版本的环境上下文
    git stash apply stash@{?}

    /*下面是使用git时候出现的一些问题
    1.在新建git时候,选择了add gitignore和add license,然后在本地建好git仓库后,想要把远程仓库和本地仓库关联,失败了(错误为:error: failed to push some refs to 'git@github.com:StivenYang/Blog.git'

    解决办法:在关联之前要把远程仓库的文件也同步到本地,然后才能进行关联。先使用git pull --rebase origin master,然后再git push -u origin master即可关联并上传本地仓库代码到远程仓库。
    2.git乱码问题
    https://segmentfault.com/a/1190000000578037 ,项目如果使用utf-8提交的,注意对应的设置应该为utf-8

    起风了,努力生存
  • 相关阅读:
    HotRing: A Hotspot-Aware In-Memory Key-Value Store(FAST ’20)
    java中List 和 Set 的区别
    多线程编程(3)——synchronized原理以及使用
    从同步阻塞到异步非阻塞角度看网络编程
    多线程编程(2)—线程安全
    多线程编程(1)
    Maven项目下使用log4j
    LeetCode正则表达式匹配
    Java I/O模型及其底层原理
    这一年太快
  • 原文地址:https://www.cnblogs.com/StivenYang/p/12424431.html
Copyright © 2011-2022 走看看