zoukankan      html  css  js  c++  java
  • git常用操作

    工作中git常用操作记录,自己用的也不是特别熟练,希望大家多多指教,以后会继续完善。

    1. 基础使用
    # git clone url <asName> 从现有的repository克隆到本地,最后的asName是别名,可选项

    #新建本地仓库 (安装git后)在要创建git仓库repository的地方右键 git bash here
    $git init repository
    cd repositoryName 命令行进入git仓库

    #如果是已有代码,可以先命令行进入代码目录,运行git init 即可

    # git status 查看当前git仓库的状况,能知道是否有更新需要暂存add,是否有暂存需要commit 或 reset, 以及commit to push
    # git add /rm. add 的作用很多,可以track新文件, 添加修改到stage, rm filename : 移除文件

    git add 的使用有不同方式,
    # git add <filename> -- 单独一个文件名
    # git add <dirname> -- 目录名

    # git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .来一次添加所有改变的文件。注意 -A 选项后面还有一个句点。
    # git add -A 表示添加所有内容
    # git add . 表示添加新文件和编辑过的文件不包括删除的文件;
    # git add -u 表示添加编辑或者删除的文件,不包括新添加的文件

    # git commit -m "comment"

    # git push 推送到远程repository

    如果远程库有更新,则需要先更新后再提交
    # git pull 拉取最新的内容

    建议频繁使用
    git status
    git add
    git commit
    git push

    一些配置文件可能和本地的设定有关,团队中每个人不一样,如引入本地包的绝对路径等,这就需要忽略这些已经纳入git中的文件:

    设定:

    git update-index --assume-unchanged <files>

    取消设定:

    git update-index --no-assume-unchanged <files> 

    追加提交

    git commit --amend


    2. 从已有项目创建git repository

    #连接到远程仓库并为该仓库repository创建别名 , 别名为origin . 这个别名是自定义的,通常用origin ; 远程repository地址
    git remote add origin 添加远程仓库地址

    #查看远程仓库

    git remote -v  查看远程仓库地址

    git remote show origin  查看远程仓库的基本信息

    #创建一个 upStream (上传流),并将本地代码通过这个 upStream 推送到 别名为 origin 的仓库中的 master 分支上
    git push -u origin master

    远程分支已经有内容时:
    push远程分支报错:refusing to merge unrelated histories
    git pull origin master --allow-unrelated-histories

    3. git 分支
    git branch -a --列出所有分支 有 * 的是当前分支
    git branch -v --所有分支最后提交信息
    git branch newbranch --创建分支
    git checkout branch --切换分支,需要先commit所有内容

    git push --set-upstream origin newbranch  -- 向新分支提交,需要先设置upstream

    git merge branchName --合并分支到当前分支,有冲突时不会提交,需要合并后commit

    git branch -d branchName --删除分支
    以上都是本地分支,建议频繁使用分支

    删除远程分支

    git push origin -delete branchname

    tag
    git tag   -- 查看tag lsit

    git tag -a tagname -m 'comment'  -- 创建tag

    git push origin tagname -- 推送到远程库

    git tag -d tagnme  --删除tag

    git push origin :refs/tags/tagname  -- 删除远程的tag


    4. git撤销
    a. 在工作区的改动,未add之前 --恢复工作区的内容
    使用git checkout . 恢复全部内容( . ),当然也可以使用git checkout <filename> 或git checkout <dirname>

    b. 改动已经执行过add命令 --恢复暂存区的内容
    git reset HEAD . -- 全部恢复
    git reset HEAD <filename>

    c. 改动已经commit,但是未push --恢复本地仓库的内容
    先git log 查看提交历史中的commitid
    git reset <commitid> --退到工作空间,即把commit 回退 、add 回退,工作目录里面的修改还在

    git reset --soft <commitid> --退到暂存区,即把commit 回退 add 不回退
    git reset --mixed <commitid> --退到工作空间,默认行为,即把commit 回退 add 不回退

    ************不可轻用,会丢失工作区和暂存区的内容***********************
    git reset --hard <commitid> --退到上次commit的位置,即把commit 回退 add 回退 工作空间回退 
    ************不可轻用***********************

    git reset 会丢失提交log,可以用git reflog 查看, 再用git reset reflogid 恢复

    d. 改动已经push --恢复本地仓库的内容
    先git log 查看提交历史中的commitid
    git reset <commitid> --退到工作空间,即把commit 回退 、add 回退,工作目录里面的修改还在,【git log 会丢失,恢复:git status 查看,working tree clean , 再git pull】

    git reset --soft <commitid> --退到暂存区,即把commit 回退 add 不回退,【git log 会丢失,恢复:git status 查看,working tree clean , 再git pull】
    git reset --mixed <commitid> --退到工作空间,默认行为,即把commit 回退 add 不回退

    ************不可轻用,会丢失工作区和暂存区的内容***********************
    git reset --hard <commitid> --退到上次commit的位置,即把commit 回退 add 回退 工作空间回退 【git log 会丢失,恢复:git pull】
    ************不可轻用***********************

    git revert 也可以恢复,但会添加一个新的提交

    5.暂存工作区内容:

    #可以加注释

    git stash save 'comment'

    #查看暂存的内容

    git stash show

    #查看暂存列表

    git stash list

    #应用所有的暂存内容

    git stash apply  

    # 应用一条暂存,$是对应的序号

    git stash apply stash@{$}

    # 删除一条暂存,$是对应的序号

    git stash drop stash@{$}

    #清除所有暂存

    git stash clear 


    6. 用户名配置

    # fatal: unable to access错误时执行如下操作
    # 1.清除缓存中的配置信息
    # 运行一下命令缓存输入的用户名和密码:
    # git config --global credential.helper wincred
    # 清除掉缓存在git中的用户名和密码
    # git credential-manager uninstall

    git config --global user.name shiyuan #设置用户名
    git config --global user.email shiyuan##@163.com #设置用户邮箱

    git config user.name shiyuan #设置本目录的用户名
    git config user.email shiyuan##@163.com #设置本目录的用户邮箱

    # 然后再push,输入一次用户名密码后再执行2,缓存用户、密码
    # 2.创建文件存储GIT用户名和密码
    # git config --global credential.helper store


    # 执行完后查看%HOME%目录下的.gitconfig文件,会多了一项: ****重新开启git bash***
    #   [credential]
    #   helper = store
    #   重新开启git bash会发现git push时不用再输入用户名和密码

     #3.配置ssh key

    首先在git bush客户端中输入:

      ssh-keygen -t rsa -C 'youMailAddress@163.com'

    enter键,可根据提示输入生成的key的地址,打开~/.ssh/id_rsa.pub,复制其中的内容,

    到github或gitlab的 Settings-->SSH Keys--->Add SSH Key,填写名称并保存,之后就可以使用ssh的方式拉取、提交代码了。

    代码库IP地址变化时


     需要更新~/.ssh/known_hosts文件,可以直接删除即可

    The ECDSA host key for github***.com has changed,                          
    and the key for the corresponding IP address 111.111.111.111                      
    is unknown.
     

    TODO:
    rebase

  • 相关阅读:
    windows 设置nginx开机自启动
    vue js中解决二进制转图片显示问题
    oracle 各种问题
    Nginx安装及配置详解包括windows linux 环境
    AOP-切面是如何织入到目标对象中的
    AOP-通知-笔记
    AOP-方法拦截器-笔记
    JdkDynamicAopProxy-笔记
    Joinpoint继承体系-笔记
    AOP-Pointcut-笔记
  • 原文地址:https://www.cnblogs.com/jyughynj/p/11207897.html
Copyright © 2011-2022 走看看