3、Git入門與基本使用(3)

十一、分離頭指針狀況下的注意事項
 所謂分離頭指針,即在git切換到某一commit時,沒有綁定在分支或者tag上,此時若是在該commit下進行了文件修改,而且提交commit時,git在往後清理該提交而不保存,所以在進行commit查看時,最好綁定在某一branch或者tag上操做,固然這種操做的好處也存在,即不會破壞原有的branch環境。git

$ git checkout 0bd98cb5d0d969cfc35d   #直接切換到commit上
Note: checking out '0bd98cb5d0d969cfc35d'.

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 0bd98cb Add second file

$ git status                                        #此時狀態,分離頭指針狀態
HEAD detached at 0bd98cb
nothing to commit, working tree clean

$ echo "Update second file " >> second.txt   #在分離頭指針狀態下,修改文件並提交

$ git commit -am"Update second file"
[detached HEAD 71faae4] Update second file
 1 file changed, 1 insertion(+)

 $ git checkout master
Warning: you are leaving 1 commit behind, not connected to
any of your branches:

  71faae4 Update second file

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> 71faae4

Switched to branch 'master'

$ gitk    #查看在分離頭指針下的提交,能夠發現git沒有保存

3、Git入門與基本使用(3)

$ git branch newsecond 71faae4     #將修改的commit綁定到一個新的分支

$ gitk     #查看此時提交,能夠發現git已經保存剛纔的commit

3、Git入門與基本使用(3)

十二、進一步理解HEAD和branch
 HEAD不管是在某一分支或者tag其,最終都會是在某一commit上。同時使用HEAD能夠指代當前的commit。vim

$ cat .git/refs/heads/temp
7376bc5b2ebc3e13d4c4552ebdef348a17cd4eef

$ git cat-file -t 7376bc5b2
commit

1三、怎麼刪除不須要的分支ide

$ git branch
  master
  newsecond
* temp

$ git branch -d newsecond
error: The branch 'newsecond' is not fully merged.
If you are sure you want to delete it, run 'git branch -D newsecond'.

$ git branch -D newsecond
Deleted branch newsecond (was 71faae4).

$ git branch
  master
* temp

1四、怎麼修改最新commit的messagethis

$ git log -n1      #修改前
commit 7376bc5b2ebc3e13d4c4552ebdef348a17cd4eef (HEAD -> temp)
Author: Jone <764651475@qq.com>
Date:   Thu Mar 14 17:03:07 2019 +0800

    Update fourth file

$ git commit --amend                  #使用該命令進入vim編輯界面直接修改便可
[temp 097d397] Update fourth file.txt
 Date: Thu Mar 14 17:03:07 2019 +0800
 1 file changed, 1 insertion(+)

$ git log -n1            #修改後
commit 097d397f672da771da95cf9baf49057047846617 (HEAD -> temp)
Author: Jone <764651475@qq.com>
Date:   Thu Mar 14 17:03:07 2019 +0800

    Update fourth file.txt

1五、怎麼修改老舊commit的message3d

$ git log -n3     #要修改導入第二個commit的message
commit 097d397f672da771da95cf9baf49057047846617 (HEAD -> temp)
Author: Jone <764651475@qq.com>
Date:   Thu Mar 14 17:03:07 2019 +0800

    Update fourth file.txt

commit 1d63ec82259b237f58e7525ccf856a03fb880fcd
Author: Jone <764651475@qq.com>
Date:   Thu Mar 14 17:01:46 2019 +0800

    Add fouth file

commit b843c287804d2b5886167740f9e6c0d327540ee1 (tag: 03tag)
Author: Jone <764651475@qq.com>
Date:   Thu Mar 14 17:00:21 2019 +0800

    Add third file

$ git rebase -i b843c287804d2b588616    #選擇倒數第二個commit的 base信息,即導入第三個commit
[detached HEAD bfd373a] Add fouth file.txt
 Date: Thu Mar 14 17:01:46 2019 +0800
 1 file changed, 1 insertion(+)
 create mode 100644 fourth.txt
Successfully rebased and updated refs/heads/temp.

第一張圖爲須要修改的信息,將pick改成r便可
3、Git入門與基本使用(3)
第二張圖爲修改後的commit 信息
3、Git入門與基本使用(3)指針

$ git log -n3     #查看修改後的message
commit ce587039661c88fd508035fd103a012e33c057ac (HEAD -> temp)
Author: Jone <764651475@qq.com>
Date:   Thu Mar 14 17:03:07 2019 +0800

    Update fourth file.txt

commit bfd373ab1dd5b2d578bac9cacd4d89d0066c51af
Author: Jone <764651475@qq.com>
Date:   Thu Mar 14 17:01:46 2019 +0800

    Add fouth file.txt

commit b843c287804d2b5886167740f9e6c0d327540ee1 (tag: 03tag)
Author: Jone <764651475@qq.com>
Date:   Thu Mar 14 17:00:21 2019 +0800

    Add third file
相關文章
相關標籤/搜索