Git知識

 

git最小化配置:git

  配置user.name 和 user.emailvim

  git config --global user.name 'your_name'緩存

  git config --global user.email 'your_email'     // email須要是有效的Emailapp

 

  config的做用域工具

  缺省等同於localfetch

    git config --local  只對某個倉庫有效3d

    git config --global 對當前用戶全部倉庫有效指針

    git config --system 對系統全部登錄用戶有效日誌

 

  顯示config配置,加--list對象

    git config --list --local

    git config --list --global

    git config --list --system

 

建Git倉庫

  2種場景:

    把已有的項目代碼歸入Git管理

      #cd 項目代碼所在的文件夾

      #git init

    新建項目直接用git 管理

      #cd 某個文件夾

      #git init your_project  會在當前路徑下建立和項目同名的文件夾

      #cd your_project

 

往倉庫裏添加文件:

  版本歷史

  暫存區

  工做目錄

    查看git工做狀態

      #git status

    將文件加入到暫存區:

      #git add 文件或文件夾

    將暫存區文件正式提交

      #git commit  -m  "內容"

    查看版本歷史的日誌

      #git log

    將已經管理可是剛修改的文件添加到暫存區

      #git add -u 

 

文件重命名:

    方案一:

    #mv readme readme.md

    #git add readme.md

    #git rm readme    原文件刪除

    #git commit -m '內容'

    注:操做還原,清理暫存區全部變動

    #git reset --hard

    方案二:

    #git mv readme readme.md

    #git commit -m '內容'

 

 

查看git版本歷史:

    #git log --online    簡潔方式查看歷史

    #git log --n4  查看最近4次歷史

    #git log --all 查看全部分支的版本歷史

    #git log --all --graph  父子關係展現版本歷史

 

    注:git branch -v 查看本地分支

 

查看版本歷史圖形界面工具:

    gitk    

 

git目錄:

    查看git 配置文件

    #cat .git/config

    

    .git/refs/  下存在heads和tags文件,heads下是分支文件的指針文件;tags下文件是哈希值文件;.git/objects/下文件是上傳的文件

    #cd e8

    #git cat-file -t e8xxxx   // 查看文案類型

    #git cat-file -p e8xxx   //查看文件內容

    #git cat-file -p b72xxx

 

commit與tree與blob關係:(git對象的彼此關係)

 

 

 查看git分支/切換分支:

  git branch -av  //查看分支

  git checkout master  //切換分支

  git checkout -b 子分支 父分支   //建立基於父分支的子分支

 

 提交分支到遠程:

  #git checkout --orphan cluster

  #git checkout cluster

  #git rm -rf .

  #vim README.md

  #git add README.md

  #git commit -m "ADD readme.md"

  #git push -u origin cluster 

 

分離頭指針:

  git checkout commit編號   //進入分離頭指針

  文件編輯後,分離頭要建立/加入某一分支

  git branch '分支名'  xxxxxx     //xxxx是分離頭指針編號

 

 head和branch關係:

  head不只能夠指向分支,還能夠指向某個文件(分離頭指針)

  

刪除不須要的分支:

  git branch -D 分支名

       

修改commit信息:

  git commit --amend

 

修改老舊commit信息:

  git rebase -i commit的父ID  ==》進入說明文件 :wq! => 進入交互界面修改 ,保存  wq!

 

連續的多個commit合併成一個:

  commit的父ID查看:

   git log --graph  選定commitID的下一個即爲父commit

  #git rebase -i commit的父ID

  ==》修改文件

  假設要合併4個文件,則保留一個pick,3個修改爲s

       再保存(wq!),進入交互界面

  修改文件,保存  wq!

 

間隔的多個commit合併成一個:

  #git rebase -i 最下面的commitID

  =》 在文件的最上面增長pick 最下面的commitID ,要合併的commit放在一塊兒,保留一個pick,其他修改爲s

  其他步驟同上

 

暫存區和head文件(最近commit的文件)差別:

  #git diff --cached  

 

暫存區和工做區差別:

  #git diff

  #git diff -- readme.md //只比較readme.md文件差異

 

暫存區全部文件不保留(暫存區與工做區一致):

  #git reset HEAD

工做區文件恢復與暫存區一致:

  #git checkout -- <file>   //file 是文件名

 取消暫存區部分文件的更改:

  #git  reset HEAD -- <file ...>

消除最近幾隻commit:

      #git reset --hard  commitID   // 恢復到指定commitID位置

查看提交文件的差別://比較2個分支相同文件的差別

  #git diff 分支1  分支2  --  文件名

       #git diff commitID1 commitID2  -- 文件名

刪除文件:

  #git rm   file-name

  ex:刪除遠程倉庫的目錄/文件 

  #git rm -r --cached a/2.txt //刪除a目錄下的2.txt文件   刪除a目錄git rm -r --cached a
  #git commit -m "刪除a目錄下的2.txt文件" 
  #git push

加塞任務

  #git stash   //暫存區放置緩存

  #git stash list

  #git stash apply  //緩存內容放置工做區,緩存信息不丟失

  #git stash pop  // 緩存內容放置工做區,緩存信息丟失

 

git 倉庫備份至本地

  

 

 本地倉庫同步至遠程:

  #git  remote add 別名  遠程項目地址 

   #git remote -v  //查看遠端別名鏈接地址

   #git push 別名  --all   //push 全部的分支

    

合併分支:

  #  git fetch origin 最新版本的線上分支:新建一個本地的分支//從遠程的origin倉庫的最新版本的線上分支下載到本地,並新建一個本地的新分支

  #  git diff 新建的本地的分支

  # git merge 新建的本地的分支//將新建一個本地的新分支和本地分支合併

  #  git branch -D 新建的本地的分支

  #  解決衝突

  #  git add .

  #  git commit -m '合併+解決衝突'

  #  git pull origin 最新版本的線上分支

  # git push origin 我本地的分支:最新版本的線上分支

相關文章
相關標籤/搜索