美文网首页
Git笔记(不定期更新)

Git笔记(不定期更新)

作者: 瓶子狗坏人 | 来源:发表于2019-04-17 17:51 被阅读0次

    Git Common Command

    git rm

    • 移除文件
      git rm <FilePath> 移除指定文件
      git rm <Folder> -r -f 移除文件夹及文件夹下的所用内容
    

    git stash

    • 暂存
    git stash save [<message>]
    保存当前更改到暂存区,可选择性的添加描述信息
    
    • 更新暂存区内容到工作区
      git stash pop [--index][<stashId>]
      恢复暂存区中最新的内容到工作区
      --index 可选命令,If the --index option is used, then tries to reinstate not only the working tree’s changes, 
      but also the index’s ones. However, this can fail, when you have conflicts (which are stored in the index,
      where you therefore can no longer apply the changes as they were originally).
      stashId,指定要恢复的stash
      恢复成功后会删除暂存区中的相应内容
      
      git stash apply [--index][<stashId>]
      功能与 pop 相同, 但是恢复成功后不会删除暂存区中对应内容
    
    • 其他
    git stash drop [<stashId>]
      删除最近的一次暂存区内容
      stashId, 删除指定的暂存区内容
    git stash clear
       清空暂存区
    git stash list 
       列出所有保存的进度列表
    git stash show [<stashId>]
    显示最近的更改
    stashId:显示指定的更改
    
    

    git config相关

    • git config
    使用时的优先级为 local -> global -> system
    
    配置用户名  
     
    git config --system user.name "(userName)"
    git config --global user.name "(userName)"   
    git config --local user.name "(userName)"
    
    --system 为对所有用户的所有仓库有效的配置信息
    --global 为对当前用户的所有仓库有效的配置信息
    --local 为对当前仓库有效的配置信息
    
    
    配置用户邮箱  
     
    git config --system user.email "(uesrEmail)"
    git config --global user.email "(userEmail)"
    git config --local user.email "(userEmail)"
    
    查看配置信息  
    
    git config --system --list
    git config --global --list
    git config --local --list
    
    

    查看日志信息

    • git log
     包含作者信息,提交信息(m)
     git log  
     
     git reflog  
     可以查看reset后的信息
     
     git log [-p:显示提交的更改详情][number:显示提交的数目]
     
     显示每次提交的增加删除行数
     git log --stat
    

    回退

    • git reset
    reset 是在指定的commit之后的提交都被撤销,HEAD是回退到指定的提交的
    git reset (commitId)  
    将HEAD指向回退到 commitId指定的地方,但不自动撤销之后修改的代码  
    可以通过手动修改并新建一个commit来保存修改
    git reset --hard (commitId)   
    回退并自动撤销之后修改的代码
    
    • get revert
     revert需要新建一个commit提交,HEAD是向后的
     git revert HEAD  
     回退前一次提交的代码
     git revert commitId
     回退指定的提交,并需要创建新的提交  
     除了指定的提交,其他的提交内容不会改变
    

    合并

    • git push
     本地分支上传合并到指定的远程分支  
     git push origin (localName):(remoteName)
    
    • git pull
     本地分支拉取合并指定的远程分支  
     git pull origin (remoteName) 
    
    • git merge
     合并某个分支  
     git merge (branchName) 
    
    • git cherry-pick
     cherry-pick命令的合并
     1.合并单次提交
     git cherry-pick (commitId) 
     2.合并多个提交 
     ^:区间[a,b];没有:区间(a,b]
     git cherry-pick (commitIdA)[^]..(commitIdB) 区间:[commitIdA,commitIdB]
     git cherry-pick (targetBranch~commitIdA)[^]..(targetBranch~commitIdB)
     3.遇到冲突
       解决冲突后,通过
         a. git add .
         b. git commit 
         c. git cherry-pick --continue
     继续cherry-pick
     4.一次只能存在一个cherry-pick, 如果要另起一个cheery-pick,则使用以下命令
         a. git cherry-pick --quit  取消操作并回到之前的状态
         Forget about the current operation in progress.   
         Can be used to clear the sequencer state after a failed cherry-pick or revert.
         b. git cherry-pick --abort 取消操作并回到之前的状态
         Cancel the operation and return to the pre-sequence state.
    
    • git rebase
     衍合分支,不会产生新的提交(与merge的不同)
     git rebase (branchName)
    
     衍合分支的分支(?,会自动切到grandsonBranchName分支下执行)
     1.1 git rebase --onto(parentBranchName) (sonBranchName) (grandsonBranchName)
     
      衍合分支的提交(commitId为parent切出分支的提交)  
     (^,表示[commitIdA,commitIdB],没有则是(commitIdA,commitIdB])
     1.2 git rebase --onto (parentBranchName) (commitIdA)[^] (commitIdB)
     
     [beginIndex,endIndex:索引值,倒数;beginIndex指向要包含的commit的前一次提交,endIndex要包含的最后一次提交]
     (beginIndex,endIndex],索引倒数从 0开始到正无穷
     1.3 git rebase --onto (parentBranchName) (sonBranchName~beginIndex) (sonBranchName~endIndex)
      遇到冲突,解决冲突后
      a. git add .
      b. git rebase --continue
     2. git checkout parentBranchName
     3. git merge grandsonBranchName
     
     其他命令
     1. git rebase --skip 跳过冲突,且不保留冲突的部分(谨慎操作)
     2. git rebase --quit 退出rebase, 保持当前状态
     3. git rebase --abort 退出rebase , 回到之前的状态
    
    

    分支创建

    • git checkout
     根据指定的远程分支创建本地分支  
     git checkout -b (localName) (remoteName) 
     
     从提交的节点[之前的内容,此次提交]创建分支  
     git checkout (commitId) -b (branchName) 
     
     从Tag创建分支  
     git checkout (tagName) -b (branchName) 
    
    

    Tag相关

     在本地创建tag  
     git tag -a (tagName) [commitId] -m"(description)"  
    
     推送tag到远程仓库
     git push origin (tagName)
     
     删除本地tag
     git tag -d (tagName)
    
     删除远程的tag
     git push origin :refs/tags (tagName)  
    
    

    删除相关

     删除本地分支  
     git branch -d[D:强制删除] (branchName) 
    
     删除远程分支  
     git push origin --delete(branchName) 
    
    

    克隆相关

    克隆全部
    git clone (remoteSourceUrl) (localName)
    
    克隆指定分支
    git clone -b (branchName) (remoteSourceUrl) (localName)
    
    

    其他

    • Android Studio 命令窗口,log日志乱码
    [git config --global i18n.commitencoding utf-8]
    [git config --global i18n.logoutputencoding utf-8]
    暂时性的: SET LESSCHARSET=utf-8
    持久性的: 在window 环境变量中配置 key: LESSCHARSET value:utf-8
    
    • 保持forked项目与源项目同步更新
      git remote -v
      查看本地项目的远程地址
      git remote add upstream (sourceRemoteURL)
      添加源项目的地址
      git fetch upstream
      获取更新
      git merge upstream/(localBranchName)
      将更新合并到本地分支
      git push
      将更新推送到自己的远程分支
    
    • 创建SSH Key
     在.ssh文件夹下执行
     1.配置用户信息
     git config --global user.name "(userName)"
     
     git config --global user.Email "(userEmail"
     
     2.创建
     ssh-keygen -t rsa -C "(userEmail)"
     a.自定义保存key文件的名字,默认为id_rsa就好, 自定义的话还要写一个配置文件。
     b.输入密码,不设置为空就好
     c.将生成的公钥,在Git服务端上配置
     3.ssh -T git@github.com 测试是否成功有效
    
    • 从远程仓库获取数据时出错(目前只是clone时验证过)
    error: RPC failed; curl 18 transfer closed with outstanding read data remaining
    reason: 缓存值太小
    solve: git config --global(全局,不需要在仓库里才能执行此命令) http.postBuffer 52488000
    
    error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
    reason: SSL证书错误
    solve: env(只对单次生效) GIT_SSL_NO_VERIFY=true (正常的git clone命令)
    项目克隆下来后可以对单项目配置
    git config http.sslVerify "false"
    

    相关文章

      网友评论

          本文标题:Git笔记(不定期更新)

          本文链接:https://www.haomeiwen.com/subject/zvtowqtx.html