• Git基本指令


    Git学习笔记

    • git //检查git是否安装
    • sudo apt-get install git
    git config --global user.name "dzq"
    git config --global user.email "dingzhiqiang0107@qq.com"
    
    • 初始化一个Git仓库,使用git init命令。
    • 添加文件到Git仓库,分为两步:
      • 第一步,使用命令git add <file>,注意,可以多次反复的使用,添加多个文件;
      • 第二步,使用命令git commit -m “describe”,提交代码,并且描述此次修改的地方。

    版本回退

    • git log命令显示从最近到最远的提交日志,如果嫌输出信息太多,可以使用
      git log --pretty=oneline,显示前面的一串表示commit id(版本号)
    • git reset --hard HEAD^表示HEAD表示当前版本,HEAD^ 返回到上一个版本,HEAD^^回退上两个版本,如果比较多的版本,可以使用HEAD~100(前100个版本)
      查看命令使用cat,gedit;
    • 如果不记得commit id的话,可以使用git reflog,它记录每次的命令,可以看到id,这样确定回到未来的哪个版本。

    撤销修改

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

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

    • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
      工作区指的是我们当前能看到的目录,暂存区指的是使用add命令之后的区域。

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    删除文件 rm file执行工作区的删除命令。
    删除之后工作区和版本库就不一样了,有两种选择:

    • 1是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
    $ git rm test.txt
      rm 'test.txt'
    $ git commit -m "remove test.txt"
      [master d17efd8] remove test.txt
      1 file changed, 1 deletion(-)
      delete mode 100644 test.txt
    
    • 2是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
      $ git checkout -- test.txt
      git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
    • 3在第1步完成之后,需要还原的话,就使用撤销修改的场景2就行了。
      git reset HEAD test.txt;
      git checkout -- test.txt
      

    远程仓库 由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

    • 第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_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右上角找到“Create a new repo”按钮,创建一个新的仓库;我们根据GitHub的提示,在本地的learngit仓库下运行命令:
      $ git remote add origin git@github.com:michaelliao/learngit.git 请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。 添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
    • 把本地库的所有内容推送到远程库上:
      关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
      此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

    从远程库克隆
    用命令git clone克隆一个本地库。
    $ git clone git@github.com:michaelliao/gitskills.git

    要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
    Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
    分支管理

    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git checkout <name>

    创建+切换分支:git checkout -b <name>

    合并某分支到当前分支:git merge <name>

    删除分支:git branch -d <name>

    解决冲突

    冲突示意图

    两个分支对同一个文件进行不同的修改,那么在merge的时候就会出现冲突,没法merge。

    1) 使用git status查看冲突的文件;
    2) sudo gedit file查看文件冲突的具体内容,Git用 <<<<<<<,=======,>>>>>>> 标记出不同分支的内容,将冲突内容修改。
    3) 使用git add file;git commit -m "describe";
    4) 用git log --graph命令可以看到分支合并图,简化版使用 git log --graph --pretty=oneline --abbrev-commit
    分支管理策略
    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
    强制禁用Fast forward模式,使用--no-ff方式的git merge:,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
    就是说以前的fast forward会将分支合成一条线,而no-ff有多条线,不会删除分支。

  • 相关阅读:
    SpringCloud的Archaius
    一些技术博文,有时间整理一下!
    spring-oauth-server实践:授权方式四:client_credentials 模式的refresh_token?
    spring-oauth-server实践:授权方式四:client_credentials 模式下有效期内重复申请 access_token ?
    spring-oauth-server实践:使用授权方式四:client_credentials 模式的客户端和服务端交互
    api-gateway实践(03)新服务网关
    spring-oauth-server实践:使用授权方式四:client_credentials 模式下access_token做业务!!!
    spring-oauth-server实践:授权方式四:client_credentials 模式下access_token的产生
    spring-oauth-server实践:授权方式三:PASSWORD模式下 authorities:ROLE_{user.privillege}, ROLE_USER
    spring-oauth-server实践:授权方式1、2、3和授权方式4的token对象.authorities产生方式比较
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/9080469.html
Copyright © 2020-2023  润新知