暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[整理] Git常用命令

嵌入式IoT笔记 2022-05-22
363
Git和SVN的区别
  • Git是分布式的,SVN是集中式的

    Git支持离线操作,在本地可以进行很多种操作,而SVN必须联网。

  • Git把内容按元数据存储,SVN是按文件

  • Git分支和SVN分支不同

    Git分支是指针指向某次提交(分支切换快,创建成本低),SVN是拷贝的目录。Git有本地分支,SVN没有本地分支。

Git工作区、暂存区和版本库
  • 工作区(workspace):就是你在电脑里能看到的目录。
  • 暂存区(staging area):英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件。
  • 版本库(local repository):工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
  • 远程仓库(remote repository):远程仓库。


Git基本操作

 
Git常用命令
  • git init

    #在项目中生成了 .git 这个子目录,这就是Git仓库
    git init
    复制
    • git add

      #添加文件到暂存区
      git add [file]
      #添加目录到暂存区
      git add [dir]
      #添加所有文件到暂存区
      git add . 
      复制
      • git commit

        #提交暂存区到本地仓库
        git commit -m [message]
        #提交暂存区的指定文件到仓库区
        git commit [file1] [file2] ... -m [message]
        #不需要执行 git add 命令,直接来提交
        git commit -a
        复制
        • git config

          #设置提交代码的用户名和电子邮件地址
          git config --global user.name 'runoob'
          git config --global user.email test@runoob.com
          复制
          • git clone

            #克隆代码
            git clone [url]
            复制
            • git diff

              #显示尚未添加到stage的文件的变更
              git diff [file]
              #显示暂存区和上一次提交(commit)的差异
              git diff --staged [file]
              复制
              • git status

                #查看上次提交之后的修改文件有哪些
                git status
                #通常只查看精简的文件列表
                git status -s
                复制
                • git reset

                  git reset [--soft | --mixed | --hard] [HEAD]
                  #默认--mixed,用于重置暂存区的文件,工作区文件内容保持不变。
                  git reset [HEAD]
                  #回退到某个版本
                  git reset --soft HEAD
                  #撤销工作区修改,将暂存区与工作区都回退上一版本,并删除之前的所有信息提交
                  git reset --hard HEAD
                  git reset --hard [SHA bae128]
                  复制
                  • git log

                    #查看提交记录,英文模式下按q可退出
                    git log
                    #按照简洁的列表显示提交记录
                    git log --oneline
                    #按照时间顺序看log
                    git log --reverse --oneline
                    #看5条Linus提交的记录
                    git log --author=Linus --oneline -5
                    复制
                    • git pull

                      git pull <远程主机名> <远程分支名>:<本地分支名>
                      git pull
                      git pull origin
                      #将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并
                      git pull origin master:brantest
                      复制

                      注:git pull = git fetch + git merge

                        git pull = git fetch + git merge


                        git fetch origin master //从远程主机的master分支拉取最新内容
                        git merge FETCH_HEAD //将拉取下来的最新内容合并到当前所在的分支中
                        复制
                        • git push

                          git push <远程主机名> <本地分支名>:<远程分支名>
                          #如果本地分支名与远程分支名相同,则可以省略冒号
                          git push origin master
                          #本地版本与远程版本有差异,但又要强制推送
                          git push --force origin master
                          #删除 origin 主机的 master 分支
                          git push origin --delete master
                          复制
                          • git fetch

                            #用于从远程获取代码库
                            git fetch origin
                            复制
                            • git merge

                              #将dev分支合并到当前分支
                              git merge dev
                              复制
                              • git remote

                                #列出远程仓信息
                                git remote -v
                                #显示某个远程仓库(origin)的信息
                                git remote show origin
                                复制
                                • git branch

                                  #查看当前所有分支
                                  git branch
                                  #新建一个分支
                                  git branch dev2
                                  #切换到一个分支
                                  git checkout dev2
                                  #查看本地和远程分支
                                  git branch -a
                                  #删除本地分支
                                  git branch --delete dev2
                                  git branch -d dev2 //删除前检查merge状态
                                  git branch -D dev2 //直接删除 --force
                                  #删除远程分支
                                  git push origin --delete <remote-branchname>
                                  #分支重命名
                                  git branch -m oldname newname
                                  #将本地分支推送到远程分支
                                  git push origin dev2
                                  #合并dev2分支到master
                                  git checkout master
                                  git merge dev2
                                  复制
                                  • 简易教程

                                    简易的命令行入门教程:
                                    Git 全局设置:


                                    git config --global user.name "likyo"
                                    git config --global user.email "xingchen.zhao@qq.com"
                                    创建 git 仓库:


                                    mkdir esp-idf
                                    cd esp-idf
                                    git init
                                    touch README.md
                                    git add README.md
                                    git commit -m "first commit"
                                    git remote add origin https://gitee.com/likyo/esp-idf.git
                                    git push -u origin master
                                    已有仓库?


                                    cd existing_git_repo
                                    git remote add origin https://gitee.com/likyo/esp-idf.git
                                    git push -u origin master
                                    复制
                                    • 其他1

                                    存在多用户先后提交的时候,去掉merge信息:

                                      git rebase origin/dev
                                      复制
                                      • 其他2

                                      合并某个分支的某次提交

                                        git cherry-pick <commit-id>
                                        复制
                                        • 其他3

                                          # 默认就是-mixed参数
                                          git reset <commit-id>


                                          # 回退至上个版本将重置HEAD到另外一个commit
                                          # 并且重置暂存区以便和HEAD相匹配,但是也到此为止,工作区不会被更改
                                          git reset --mixed HEAD^


                                          # 回退至三个版本之前,只回退了commit的信息,暂存区和工作区与回退之前保持一致
                                          # 如果还要提交,直接commit即可
                                          git reset --soft HEAD~3


                                          # 彻底回退到指定commit-id的状态,暂存区和工作区也会变为指定commit-id版本的内容
                                          git reset --hard <commit-id>
                                          复制
                                          • 其他4

                                            [1] 展示本地分支关联远程仓库
                                            git branch -vv
                                            [2] 列出所有远程分支
                                            git branch -r
                                            [3] 列出本地和远程分支
                                            git branch -a
                                            [4] 查看远程分支和本地分支的对应关系
                                            git remote show origin
                                            复制
                                            • 其他5

                                              同步远程仓信息
                                              git remote update origin --prune


                                              更新远程跟踪分支
                                              git fetch origin


                                              查看远程仓所有分支
                                              git branch -a


                                              创建分支 本地名称 远端名称
                                              git branch dev3 origin/dev3


                                              创建分支并切换到该分支
                                              git checkout -b dev3 origin/dev3
                                              复制
                                              • 其他6

                                                错误:git 当前分支 dev3 没有对应的上游分支
                                                为推送当前分支并建立与远程上游的跟踪,使用
                                                git push --set-upstream origin dev3


                                                如果您想要为此分支创建跟踪信息,您可以执行:
                                                git branch --set-upstream-to=origin/<远程分支> <本地分支>
                                                复制
                                                文章转载自嵌入式IoT笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                评论