zoukankan      html  css  js  c++  java
  • git checkout

    git checkout 相关命令总结

    1.git checkout       

      表示核查工作区相对于版本库修改过的文件

    2. git checkout  + 分支名 

      表示切换分支

    3. git checkout  -b  分支名

      表示以当前分支的当前状态创建新分支并切换到新分支    -b 表示创建新分支

    4. git checkout -b 分支名  commitID

      表示以当前分支的commitID提交节点创建新的分支并切换到新分支。此时工作区的内容和切换分之前commitID提交节点的内容一样

    5. git checkout  commitID

      是以指定的提交节点创建了一个临时性分支,此临时性分支可用于做实验性修改

    6.git checkout  filename 

      当没有提交版本号时将工作区的指定文件的内容恢复到暂存区的状态

         git checkout  . 

      将工作区的所有文件的内容恢复到暂存区的状态

     7.    git checkout <commit> filename 

      当有提交版本号时,表示将工作区和暂存区都恢复到版本库指定提交版本的指定文件的状态,此时HEAD指针不变,此时的状态相当于把工作区的内容修改到指定版本的文件内容后,再把修改的内容添加到暂存区。因此git checkout <commit> filename后,可以直接执行git commit而不需要先执行git add

    操作详细如下

    1.git checkout 后面不加任何参数。表示核查工作区相对于版本库修改过的文件

    2. git checkout  + 分支名       表示切换分支

     

    3. git checkout  -b  分支名   表示以当前分支的当前状态创建新分支并切换到新分支    -b 表示创建新分支

     4. git checkout -b 分支名  commitID   表示以当前分支的commitID提交节点创建新的分支并切换到新分支。此时工作区的内容和切换分之前commitID提交节点的内容一样

    5. git checkout  commitID   此命令有些特殊,此命令执行后,工作区的内容会变成commitID提交节点的内容,但时HEAD不位于任何分支上,处于游离状态。

    更准确的说,此命令是以指定的提交节点创建了一个临时性分支,被别HEAD指向了这个临时分支,你可以在这个临时分支上修改内容并且提交内容。

    但是,一但你从临时分支切换到其他分支,这个临时分支就会消失。

    这种临时性分支主要用来做一些实验性的修改,实验结束后,只要切换回原分支即可,原分支不会有任何改变。临时性分支上的改动并不会反映到原分支。

    但是你如果想把这临时性分支上的改动反映到原分支上,可以通过git checkout  -b  新分支名  命令  以临时性分支的当前状态创建一个永久性分支,再把这个分支合并到原先的分支,然后再删除这个分支即可。

    执行git checkout  commitID命令

     将临时性分支反映到原分支master上

    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master)
    $ git log --pretty=oneline
    515bbaac44e128a4e3c1f956bb962359090b7dc6 (HEAD -> master, newbranch) AA
    cc19754ef1ea7f9e0414eed31592af952094116e (branch2, branch1) Merge branch 'tem'
    065be4955a8e3e2e1d7bdf8b181f58a2066b5289 CC
    5da296c5bf7d7f674f4a128d1ff77a79f4ee0311 BB
    da2b161d76b0fb0b07b56cc4d229f92fa9424d5a AAA
    a3239e33bcfb422c3f9fc72a622e50f207a7e61d add l3
    22ff17b9dce0a7a2fd9f6c3760cef876e733b0a2 add test2.txt
    ae61384fee29e82c3975cae1a03122eb69eee31b (newbranch2) add l1
    1d000b4679adca98a168328dad432a9216877442 add file
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master)
    $ git checkout a3239e
    Note: checking out 'a3239e'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by performing another checkout.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -b with the checkout command again. Example:
    
      git checkout -b <new-branch-name>
    
    HEAD is now at a3239e3 add l3
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn ((a3239e3...))
    $ git branch
    * (HEAD detached at a3239e3)
      branch1
      branch2
      master
      newbranch
      newbranch2
      newbranch3
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn ((a3239e3...))
    $ git add .
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn ((a3239e3...))
    $ git commit -m "add l4"
    [detached HEAD 3cfcff2] add l4
     1 file changed, 2 insertions(+), 1 deletion(-)
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn ((3cfcff2...))
    $ git checkout -b newbranch4
    Switched to a new branch 'newbranch4'
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (newbranch4)
    $ git log --pretty=online
    fatal: invalid --pretty format: online
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (newbranch4)
    $ git log --pretty=oneline
    3cfcff2024cfd555dffe9fcdffd6d0ded4c4b43f (HEAD -> newbranch4) add l4
    a3239e33bcfb422c3f9fc72a622e50f207a7e61d add l3
    22ff17b9dce0a7a2fd9f6c3760cef876e733b0a2 add test2.txt
    ae61384fee29e82c3975cae1a03122eb69eee31b (newbranch2) add l1
    1d000b4679adca98a168328dad432a9216877442 add file
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (newbranch4)
    $ git branch
      branch1
      branch2
      master
      newbranch
      newbranch2
      newbranch3
    * newbranch4
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (newbranch4)
    $ git checkout master
    Switched to branch 'master'
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master)
    $ git merge newbranch4
    Auto-merging test1.txt
    CONFLICT (content): Merge conflict in test1.txt
    Automatic merge failed; fix conflicts and then commit the result.
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master|MERGING)
    $ git add .
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master|MERGING)
    $ git commit
    [master b13df65] Merge branch 'newbranch4'
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master)
    $ git branch -d newbranch4
    Deleted branch newbranch4 (was 3cfcff2).
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master)
    $ git branch
      branch1
      branch2
    * master
      newbranch
      newbranch2
      newbranch3

     当从临时性分支切换到其他分支后,如果还想保存临时性分支的内容,那么可以通过以下命令创建一个新分支来保存临时性分支的内容

    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn ((5f43910...))
    $ git branch
    * (HEAD detached from a3239e3)
      branch1
      branch2
      master
      newbranch
      newbranch2
      newbranch3
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn ((5f43910...))
    $ git checkout master
    Warning: you are leaving 1 commit behind, not connected to
    any of your branches:
    
      5f43910 add l4 l5
    
    If you want to keep it by creating a new branch, this may be a good time
    to do so with:
    
     git branch <new-branch-name> 5f43910
    
    Switched to branch 'master'
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master)
    $ git branch newbanch5 5f43910
    
    w_gao@YRL47-80972 MINGW64 /c/w_gao/git learn (master)
    $ git branch
      branch1
      branch2
    * master
      newbanch5
      newbranch
      newbranch2
      newbranch3

     6.git checkout  filename 当没有提交版本号时将工作区的内容恢复到暂存区的状态

     7.    git checkout <commit>  filename 当有提交版本号时,表示将工作区和暂存区都恢复到版本库指定提交版本的指定文件的状态,此时HEAD指针不变,此时的状态相当于把工作区的内容修改到指定版本的文件内容后,再把修改的内容添加到暂存区。因此git checkout <commit> --filename后,可以直接执行git commit而不需要先执行git add

  • 相关阅读:
    ORACLE DBA的职责
    oracle开发常用LOV
    Oracle Patch 版本的查询
    指定二次分配为主要分配
    系统日期格式引起的错误:出生日期不能为将来日期
    分享一个帮助你检测网站颜色对比度的在线web工具 checkmycolours
    最常用的CURL命令大全
    超棒的javascript移动触摸设备开发类库 QUOjs
    分享一个超炫HTML5开发的jQuery进度条插件 percentageloader
    纯CSS实现的3D简洁按钮设计
  • 原文地址:https://www.cnblogs.com/gaoBlog/p/10955352.html
Copyright © 2011-2022 走看看