git 學習筆記

工作區(qū) < - 緩沖區(qū) <- 版本庫

提交代碼的更改一共分2個階段。

  • 1.從工作目錄,提交到stage。
  • 2.從stage提交到master。

從工作目錄提交到stage,需要用add或者rm命令,只提交到stage,而沒有提交到master,是不會自動同步到master的。
從stage提交到master用commit命令。

兩種回退操作:

  • 1.stage回退到工作目錄, 是用來取消提交操作的;
  • 2.master回退到工作目錄, 是用來回滾操作的;

撤銷修改
git checkout -- xxx 讓這個文件回到最近一次git commit或git add時的狀態(tài)。
git reset HEAD xxx可以把暫存區(qū)的修改撤銷掉

  • 場景1:當你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令git checkout -- file。
  • 場景2:當你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
  • 場景3:已經(jīng)提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節(jié),不過前提是沒有推送到遠程庫。
git init 初始化倉庫 
git add 添加文件
git commit -m "描述" 上傳文件
git status 查看狀態(tài)
git dif 查看區(qū)別

git reset --hard HEAD^ 恢復(fù)到上一個版本
git reset --hard HEAD^^ 恢復(fù)到上上一個版本
git reset --hard HEAD~100 恢復(fù)到100之前的版本
git log #查看當前版本及之前版本的id 加--pretty=oneline簡化顯示
git log --pretty=oneline
git reflog #查看所有版本的id
git reset --hard xxx 根據(jù)git reflog得到的編號恢復(fù)到那個版本

刪除文件

git rm xxx
git commit -m "remove test.txt"
刪除錯誤要還原
git checkout -- xxx
git checkout其實是用版本庫里的版本替換工作區(qū)的版本,無論工作區(qū)是修改還是刪除,都可以“一鍵還原”。
已有的本地倉庫與之關(guān)聯(lián)
git remote add origin git@github.com:jianpingye/learngit.git
去除本地倉庫與遠程倉庫的關(guān)聯(lián)
git remote rm origin
git push -u origin master本地庫的所有內(nèi)容推送到遠程庫上 第一次
git push origin master本地庫的所有內(nèi)容推送到遠程庫上 

git clone克隆一個本地庫
git remote查看遠程庫的信息
git remote -v 顯示更詳細的信息
git push origin branch-name從本地推送分支
git checkout -b branch-name origin/branch-name在本地創(chuàng)建和遠程分支對應(yīng)的分支
git branch --set-upstream branch-name origin/branch-name建立本地分支和遠程分支的關(guān)聯(lián)

創(chuàng)建分支

git checkout -b dev   git checkout命令加上-b參數(shù)表示創(chuàng)建并切換,相當于以下兩條命令:
git branch dev 創(chuàng)建分支
git checkout dev 卻換分支
git branch命令查看當前分支
git merge命令用于合并指定分支到當前分支
git branch -d dev刪除分支

查看分支:git branch
創(chuàng)建分支:git branch <name>
切換分支:git checkout <name>
創(chuàng)建+切換分支:git checkout -b <name>
合并某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
強行刪除:git branch -D <name>

分支沖突:合并時顯示分支沖突先merge 后修改<<<<分支1 <<<<分支2 之間的沖突內(nèi)容,然后在提交. 當前分支會比被合并的分支多commit一次
git log --graph --pretty=oneline --abbrev-commit  #查看分支情況
git merge --no-ff <name>  #禁用Fast forward,不刪除分支,合并后保留分支

BUG分支:正在dev分支工作,需要修改bug并提交,應(yīng)該先把dev當前工作區(qū)stash儲藏起來.修改完bug提交后在使用 git stash pop恢復(fù)dev的內(nèi)容到工作區(qū).
git stash #儲藏當前工作區(qū)
git stash list #查看
git stash apply <stashid> #恢復(fù)指定內(nèi)容到工作區(qū),不在stash內(nèi)刪除..stashid通過git stash list查詢
git stash drop <stashid>  #刪除
git stash pop  #恢復(fù)stash的內(nèi)容到工作區(qū),并在stash內(nèi)刪除

git tag <name>新建一個標簽,默認為HEAD,也可以指定一個commit id;
建帶有說明的標簽,用-a指定標簽名,-m指定說明文字
git tag -a <tagname> -m "blablabla..."可以指定標簽信息;

可以通過-s用私鑰簽名一個標簽:
git tag -s <tagname> -m "blablabla..."可以用PGP簽名標簽;
git tag可以查看所有標簽。
git push origin <tagname>可以推送一個本地標簽;
git push origin --tags可以推送全部未推送過的本地標簽;
git tag -d <tagname>可以刪除一個本地標簽;
git push origin :refs/tags/<tagname>可以刪除一個遠程標簽。

更新

git fetch:相當于是從遠程獲取最新版本到本地,不會自動merge
git fetch origin master
git log -p master..origin/master
git merge origin/master

首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
然后比較本地的master分支和origin/master分支的差別
最后進行合并
git pull:相當于是從遠程獲取最新版本并merge到本地
git pull origin master
上述命令其實相當于git fetch 和 git merge
在實際使用中,git fetch更安全一些
因為在merge前,我們可以查看更新情況,然后再決定是否合并

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Git教程 一、Git簡介 1.1. Git的誕生1.2.集中式的vs分布式 二、安裝Git 三、創(chuàng)建版本庫 四、...
    曹淵說創(chuàng)業(yè)閱讀 1,025評論 0 2
  • 0. 前言 git在團隊協(xié)作中有重要作用,是有必要進行系統(tǒng)學習的一門工具。本篇是筆者學習git操作的備忘筆記,主要...
    dounine閱讀 1,114評論 0 2
  • 一、常用終端指令 $ pwd用于查看當前目錄 $ mkdir learngit 創(chuàng)建一個名為learngit的空目...
    天山雪蓮_38324閱讀 514評論 0 1
  • ----------------- Git 學習 ------------------ Git 簡介 Git...
    Junting閱讀 2,359評論 0 3
  • git學習筆記 聲明 本文是本人學習Git過程中所做的筆記,以便日后查閱,文中多有錯漏之處,不建議用作學習材料,文...
    sayonara_yoyo閱讀 852評論 0 1

友情鏈接更多精彩內(nèi)容