Git常用命令

  • 新建仓库并提交

    # 初始化本地仓库
    git init 
    # 关联远程仓库
    git remote add origin git@vesync.com:cloudTeam/levi
    # 创建分支,切换分支
    git checkout -b feature-test
    # 添加文件, cd到要上传的文件夹下, add . 是上传所有文件
    # git add命令将要体检的文件的信息添加到索引库中,以准备为下一
    # 次提交分段的内容
    git add .
    # git commit命令用于将更改的记录提交到存储库,将索引的当前内
    # 容与描述信息一起存储在新的提交中
    git commit -m "commit"
    # git push命令用于将本地分支的更新推送到远程分支
    git push origin feature-test
    
    

  • 删除文件

    # 删除远程分支文件,不删除本地文件
    git rm --cached thisfile
    git commit -m "delete this file"
    git push origin feature-test
    # 删除远程分支文件夹,不删除本地
    git rm -r --cached thisfolder
    git commit -m "delete this folder"
    git push origin feature-test
    
  • git fetch

    # git fetch命令用于从另一个存储库下载对象和引用
    # 更新所有分支
    git fetch
    # 更新特定分支
    git fetch feature-test
    # 从远程命名空间复制所有分支,并将其存储到本地的
    # .git\refs\remotes\origin命名空间中
    git fetch origin
    
  • git pull

    # git pull命令的作用是:取回远程主机某个分支的更新,再与指定的
    # 本地分支合并,可以理解为 git fetch 后跟 
    # git merge FETCH_HEAD两个操作的集合
    # 更准确的说是:git pull使用给定的参数运行git fetch,并调用
    # git merge将检索到的分支头合并到当前的分支中
    
    # 获取远程分支feature—test,与本地master分支合并
    git pull origin feature-test:master
    # 获取远程分支与当前分支合并
    git pull origin feature-test
    
  • Git修改分支名称

    • 本地分支重命名(还未推送到远端)

      git branch -m oldName newName
      
    • 远程分支分支重命名

      1. 重命名远程分支对应的本地分支
      git branch -m oldName newName
      
      1. 删除远程分支
      git push --delete origin oldName
      
      1. 上传新命名的本地分支
      git push origin newName
      
      1. 把修改后的本地分支与远程分支关联
      git branch --set-upstream-to origin/newName
      
  • Git如何clone非master分支的代码

    # 先clone master分支
    git clone git@gitlab.xxx.com:xxxxx.git
    # 进入clone的文件夹,会看到当前的分支为master
    # 查看所有分支
    git branch -a
    # 切换到需要clone的分支
    git checkout origin/dev-xxx
    
  • 误删除了远程分支

    # 想办法找到最新一次的commit SHA值
    # SHA值可以通过gitLab上的提交记录查看,也可以使用git reflog命令
    git branch branchName SHA
    # 然后再将此分支推送到远端
    git push origin branchName
    
  • git pull出现冲突

    # 保留刚才本地修改的代码,并把git服务器上的代码pull到本地
    git stash
    git pull origin master
    git stash pop
    # 完全覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本
    git reset --hard
    git pull origin master
    
  • git pull后恢复到原来版本

    # git pull后发现不是想要的版本,需要回退
    # 查看本地分支的变动记录
    git reflog loacal_branch
    # 利用commit id恢复到之前的位置
    git reset --hard <COMMIT_ID>
    
  • 报错:Updates were rejected because the tip of your current branch is behind

    • 强制push,会使远程修改丢失

      git push -u origin master -f
      
    • 不想merge远程与本地,新建分支

      git branch newBranch
      git push -u origin newBranch
      
  • 撤销commit

    #仅撤回commit操作,代码依然保留
    #HEAD^指回退上一个版本
    git reset --soft HEAD^
    #若提交了2次commit,可以使用HEAD~2
    #参数区别
    #不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
    --mixed
    #不删除工作空间改动代码,撤销commit,不撤销git add . 
    --soft
    #删除工作空间改动代码,撤销commit,撤销git add . 
    --hard
    
  • 强制覆盖本地代码

    git reset --hard origin/dev
    git pull origin/dev