git入門(mén)及拓展

干貨!很久沒(méi)有來(lái)寫(xiě)文章了,這次總結(jié)了一下工作中常用的 git 命令和使用方法,適合初學(xué)者學(xué)習(xí)!


  1. 初始化項(xiàng)目 - git init
  2. 查看狀態(tài) - git status
  3. track 新增文件 - git add
  • 文件狀態(tài)變化:Untracked —> Staged
  • 一次性添加所有未添加文件 - git add .
  • 允許使用 wildcard, e.g. git add js/*.js
  1. Commit 變動(dòng)的文件(added, modified, deleted) - git commit
  • 除了新添加的文件,其它的(modified, deleted)都可以直接 commit - git commit -a
  • 上面的 commit 動(dòng)作都會(huì)打開(kāi)一個(gè)臨時(shí)文件 COMMIT_EDITMSG,使用 vim 來(lái)編輯 commit 信息
  • 當(dāng) commit 信息很少時(shí),可以直接添加單行信息 - git commit -m "Your commit message here"
  1. 查看 log 記錄 - git log
  • 更詳細(xì)的 log 信息 - git log --summary
  1. 將本地倉(cāng)庫(kù)添加到遠(yuǎn)端倉(cāng)庫(kù) - git remote add origin [remote git address here]
  • 其中,origin 為自己給遠(yuǎn)端起的名字,可以為任意名字,但通常命名為 origin
  • 最后一個(gè) argument 是遠(yuǎn)端倉(cāng)庫(kù)地址
  1. 將本地倉(cāng)庫(kù)內(nèi)容推送到遠(yuǎn)端倉(cāng)庫(kù) - git push -u origin master
  • 其中,origin 為遠(yuǎn)端倉(cāng)庫(kù)名稱(chēng),origin 后面的名稱(chēng)是要推送上去的分支名稱(chēng),此處 master 為主支
  • -u 表示記住這次 push 的 parameters,下次如果要做同樣的操作,直接 git push 即可 (所以不加 -u 也是沒(méi)問(wèn)題的)
  1. 拉取遠(yuǎn)端倉(cāng)庫(kù)內(nèi)容(來(lái)更新本地內(nèi)容)- git pull origin master
  • 注意,此時(shí)如果有尚未 commit 的本地內(nèi)容并且會(huì)引起 merge conflit,需要先 commit 然后 pull。如果還不想 commit,那么可以先隱藏起來(lái),pull,然后恢復(fù) - git stash(hide) —> git stash apply(show)
  1. 查看現(xiàn)在本地倉(cāng)庫(kù)的內(nèi)容與最近一次 commit 的區(qū)別 - git diff
  • 默認(rèn)情況下 HEAD 指向最近一次 commit,如果 HEAD 指向以前的 commit,則可以用 git diff HEAD
  • 可以使用 git diff --staged 來(lái)查看 just staged 的 file
  1. Unstaging file(s) - git reset [fileName]
  2. 重置文件 - git checkout -- [fileName]
  • 這個(gè)操作把文件重置到最近一次 commit 的狀態(tài),而 reset 只是把文件從 staged 變回了 unstaged,并沒(méi)有重置
  1. 新建分支 - git branch [branchName]
  • 切換到某個(gè)分支 - git checkout [branchName]
  • 新建一個(gè)分支并切換到這個(gè)分支下(等于同時(shí)做了上面兩個(gè)操作) - git checkout -b [branchName]
  1. 合并分支 - git merge [branchName]
  • 將某分支與當(dāng)前分支合并,通常是一個(gè)新 feature 寫(xiě)好了,然后添加到主分支里
  • 當(dāng)一個(gè)文件被同時(shí)修改時(shí),merge conflit 可能會(huì)發(fā)生
  • 合并后可以將廢棄的分支刪除 - git branch -d [branchName] 。尚未被 merge 的分支不可以被這樣刪除,如果一定要?jiǎng)h除(比如做了一半的 feature 不想要了),則用git branch -d -f [branchName] or git branch -D [branchName] (強(qiáng)制刪除)
  1. 添加子模塊
  • 我們經(jīng)常會(huì)遇到一種情況,就是在一個(gè)項(xiàng)目目錄下,會(huì)用到另外一個(gè)項(xiàng)目的東西
  • 命令 git submodule add [repository address] 會(huì)添加并克隆子項(xiàng)目到當(dāng)前目錄下
  • 更多內(nèi)容,請(qǐng)看官方文檔

git-flow

在 git 的基礎(chǔ)上封裝并拓展,實(shí)現(xiàn)了 Vincent Driessen 的 git branching model


總結(jié)

以上為 git 的基礎(chǔ)用法,實(shí)際生產(chǎn)環(huán)境中可能還需根據(jù)項(xiàng)目的不同有所變動(dòng),git-flow 是一個(gè)很不錯(cuò)的開(kāi)發(fā)流程,并且簡(jiǎn)化了許多操作,有興趣的同學(xué)可以去查詢(xún)參考一下。

蟹蟹!

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

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

  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,866評(píng)論 1 26
  • 本文作者陳云峰,轉(zhuǎn)載請(qǐng)注明。 這篇文章記錄個(gè)人常用的一些命令,和記不住的一些命令,轉(zhuǎn)載了并不斷更新。 Git官網(wǎng) ...
    陳云峰閱讀 2,913評(píng)論 0 24
  • 1. GIT命令 git init在本地新建一個(gè)repo,進(jìn)入一個(gè)項(xiàng)目目錄,執(zhí)行g(shù)it init,會(huì)初始化一個(gè)re...
    江邊一蓑煙閱讀 889評(píng)論 0 0
  • 在處理沒(méi)有興趣的事,總是會(huì)產(chǎn)生逃避的心理,頓生困乏的生理反應(yīng) 對(duì)于前路未知的事,沒(méi)有奮斗的目標(biāo)。 生活中值得發(fā)展的...
    Helexy22閱讀 325評(píng)論 0 0
  • 但是人不是駱駝,人有選擇承不承擔(dān)的權(quán)利,也有選擇承擔(dān)多少的能力,更有放下之前稻草或者休息的反抗能力。你就是你,食物...
    心情天氣閱讀 270評(píng)論 0 0

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