iterm2+Git使用

前言: 最近在實(shí)習(xí),寫文章的頻率下來了很多,開幾篇文章寫寫在實(shí)習(xí)中學(xué)到的東西吧。

一、Git的使用

git的主要功能

  1. 版本控制:想要記錄歷史版本以備可能會(huì)需要回溯到某個(gè)版本的可能,避免手動(dòng)為每一個(gè)歷史版本做一個(gè)副本,git會(huì)幫助你記錄歷史版本。

  2. 合作開發(fā):可以同時(shí)多個(gè)人分別自己開發(fā),最后能合到一起。

  3. 分布式?:每個(gè)人都有完整的版本庫,同時(shí)開發(fā)的人可以互相推送分支然后合并成新版本(實(shí)際似乎不是這樣)。

git的基本概念

git倉庫

開始使用git需要在要管理的目錄下初始化一個(gè)git倉庫。

git init  #初始化git倉庫

會(huì)在當(dāng)前目錄下自動(dòng)生成.git文件夾(里面的內(nèi)容以后在了解),記錄歷史版本、提交、分支、用戶配置等。

工作區(qū)、暫存區(qū)和版本庫

  • 工作區(qū):正在修改的,尚未加入暫存區(qū)的文件在工作區(qū)。

  • 暫存區(qū):準(zhǔn)備提交到版本庫的文件存在暫存區(qū)。

  • 版本庫:當(dāng)所有工作區(qū)的修改都進(jìn)入暫存區(qū),commit提交后成為一個(gè)版本。

git add foo  #將文件foo加入暫存區(qū)git status  #查看工作目錄狀態(tài)git commit -m "desc"  #將暫存區(qū)文件提交并附上描述

有了上面三個(gè)概念就有了版本控制。

工作區(qū)的修改可以從暫存區(qū)或版本庫中的記錄恢復(fù),也可以加入暫存區(qū)。

git checkout -- foo  #將工作區(qū)的foo修改作廢,恢復(fù)至?xí)捍鎱^(qū)或版本庫中的版本

暫存區(qū)的文件可以恢復(fù)到工作區(qū)也可以回退成版本庫中的版本。

git reset HEAD foo  #將HEAD指針?biāo)赶虬姹編熘械膄oo文件恢復(fù)到暫存區(qū)。該操作影響暫存區(qū),不影響工作區(qū)內(nèi)容。

也可以使工作區(qū)回到指定版本。

git reset --hard HEAD^  #工作區(qū)恢復(fù)到HEAD的前一個(gè)提交,工作區(qū)的修改全部丟失。

分支

在一個(gè)commit之后像樹分叉一樣兩個(gè)分支獨(dú)立生長(zhǎng)。 開發(fā)者可以擁有自己的工作分支,隨時(shí)提交到自己的分支而不影響主分支。開發(fā)完成后再進(jìn)行合并,解決沖突(如果你的分支和主分支上同時(shí)修改了相同的文件)后,主分支上也有你的工作了。

以下流水賬。

基本操作

創(chuàng)建版本庫

** git init ** git add some.file $ git commit -m "description"

版本回退

** git status ** git reflog $ git reset --hard commit_id

撤銷修改

從工作區(qū)撤銷修改

$ git checkout -- filename

可以撤銷工作區(qū)文件的修改,回退到暫存區(qū),如果未進(jìn)入暫存區(qū),則回退到版本庫。如果被追蹤的文件被刪除同樣可以找回。

從暫存區(qū)撤銷修改

$ git reset HEAD filename

所有撤銷修改僅限于影響被追蹤的文件

刪除文件

讓git不再記錄文件,使用

$ git rm filename

文件將從版本庫中刪除。

遠(yuǎn)程倉庫

關(guān)聯(lián)遠(yuǎn)程倉庫和從遠(yuǎn)程克隆

** git remote add origin git@server-name:path/repo-name.git ** git clone git@github.com:foo/bar.git

分支管理

一個(gè)分支是一串提交串成的時(shí)間線。分支可以從某個(gè)點(diǎn)分化成不同分支各自發(fā)展。不同的分支間可以合并。

創(chuàng)建、切換與合并

** git branch name ** git checkout name ** git checkout -b name ** git merge name $ git branch -d name

  • merge分支可能會(huì)產(chǎn)生沖突,需手動(dòng)解決。

  • 更重要的是生產(chǎn)環(huán)境中一般不允許merge,而是提交pull request。

  • 問題:fast-forward模式是如何丟失分支信息的

保存現(xiàn)場(chǎng)

$ git stash

可以將工作區(qū)和暫存區(qū)的修改保存起來,此時(shí)可以切換分支進(jìn)行開發(fā)。切換回來想恢復(fù)現(xiàn)場(chǎng),則使用

$ git pop

更多stash

** git stash list ** git stash apply $ git stash drop

feature分支

通常在開發(fā)新特性時(shí)都會(huì)用到。命名以feature開頭。強(qiáng)制刪除分支的命令是

$ git branch -D name

fork 和 pull request

  • GitHub類網(wǎng)站的一個(gè)功能。想向別人的項(xiàng)目提交代碼卻沒有權(quán)限,可以先fork別人的代碼,自己修改并提交,然后向項(xiàng)目管理者發(fā)起pull request,申請(qǐng)把你的代碼合并到他的分支里。

  • 生產(chǎn)過程中也需要用pull request而不是merge來提交代碼。

自定義git

顏色、name和email

** git config --global color.ui true ** git config --global user.name "Your Name" $ git config --global user.email "email@example.com"

.gitignore

忽略掉不想track的文件如密碼配置等,使其不在git status時(shí)提示。GitHub上推薦的各種工程.gitignore文件

規(guī)則

官方文檔

新加入的規(guī)則不會(huì)忽視已經(jīng)track的文件,status仍會(huì)提示,此時(shí)應(yīng)untrack這些文件。

** git rm -r --cached . ** git add . $ git commit -m 'update .gitignore'

設(shè)置別名

設(shè)置alias可以讓使用更方便。

** git config --global alias.co checkout ** git config --global alias.ci commit $ git config --global alias.br branch

那如何取消設(shè)置呢

config文件

倉庫的配置

每個(gè)倉庫的.git/config

用戶的配置

~/.gitconfig

問題

git是支持分布式的,但現(xiàn)實(shí)中似乎還是使用了一個(gè)中心服務(wù)器。開發(fā)時(shí)先pull下來再開新分支開發(fā)然后push,所以比SVN好在哪。(commit是本地的,push和pull時(shí)需要網(wǎng)絡(luò);SVN可以修改文件但沒網(wǎng)不能提交)

為什么要有暫存區(qū),如果只是好看可以修改完然后提交所有。

分支好難說。

merge的fast-forward方式和noff方式對(duì)分支合并前后的影響。

.git文件夾下的內(nèi)容。

二、zsh+iterm2 中Git快捷鍵

屏幕快照 2018-07-10 上午9.59.29.png
屏幕快照 2018-07-10 上午9.59.49.png
屏幕快照 2018-07-10 上午10.00.02.png
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來。這樣一來,任何一處協(xié)同...
    __silhouette閱讀 16,210評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來...
    sunnyghx閱讀 4,155評(píng)論 0 11
  • 很奇怪,不知道從什么時(shí)候起,你變成了自己討厭的人,凡是你討厭的人的缺點(diǎn)你都有,而你喜歡的人的優(yōu)點(diǎn)你學(xué)不來。...
    黃衛(wèi)榮閱讀 236評(píng)論 0 0
  • 文|光 參賽編號(hào):973 在講寫作這么多年我究竟收獲了什么之前,不如容我先扯一扯我與寫作的緣分吧,然后我會(huì)給...
    六七愛吃冰淇淋閱讀 1,219評(píng)論 20 52

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