Git代碼管理工具的使用和面試必問題

今天是失業(yè)的第四天,終于有時間來寫點東西了,有的同學(xué)可能對于代碼管理工具不是很了解,今天先來給大家講下git的用法以及命令.

git環(huán)境安裝

Git是一款免費、開源的分布式 版本控制系統(tǒng) ,用于敏捷高效地處理任何或小或大的項目。

環(huán)境安裝

下載地址(你以為點擊就能跳轉(zhuǎn)到官網(wǎng)了嗎,自己去看吧,自己找的下次才記得住)

注意:

1.不要安裝在中文目錄

2.不要使用桌面管理軟件

安裝很簡單,一直下一步即可。在任意的目錄下右鍵,能看到菜單, 就表示安裝成功了。

使用git的兩種方式

git gui,即圖形化界面的方式(我也沒用過啊,我喜歡用命令)

git bash,命令行的方式(推薦)

github賬號注冊

github官網(wǎng)(自己找咯)

注意事項:

注冊的郵箱一定要有效,不然沒辦法介紹到郵件

賬號密碼一定要記住

配置git郵箱與賬號

如果是第一次使用git,需要配置提交者信息,推薦和github的賬號郵箱一致

?git config? user.name 你的目標用戶名

?git config? user.email 你的目標郵箱名

?

?使用--global參數(shù),配置全局的用戶名和郵箱,只需要配置一次即可。推薦配置github的用戶名和密碼

gitconfig--globaluser.name wuxuande

gitconfig--globaluser.email xxxxx@163.com

?

# 查看配置信息

gitconfig--list

git命令

git初始化

git init

作用:初始化git倉庫,想要使用git對某個項目進行管理,需要git init進行初始化

?初始化倉庫, 在當前目錄下生成一個隱藏文件夾.git,不能修改.git下的任何東西

git init

工作區(qū)、暫存區(qū)、倉庫區(qū)

git倉庫會分成三個區(qū)

工作區(qū):我們書寫代碼的地方,工作的目錄就叫工作區(qū)。

暫存區(qū):暫時存儲的區(qū)域,在git中,代碼無法直接從工作區(qū)提交到倉庫區(qū),而是需要先從工作區(qū)添加到暫存區(qū),然后才能從暫存區(qū)提交到倉庫區(qū)。暫存區(qū)的目的是避免誤操作。

本地倉庫區(qū):將保存在暫存區(qū)域的內(nèi)容永久轉(zhuǎn)儲到 Git 倉庫中,生成版本號。生成版本號之后,就可以任何的回退到某一個具體的版本。

git基本命令

git status

作用:查看文件的狀態(tài)

命令:git status

紅色表示工作區(qū)中的文件需要提交

綠色表示暫存區(qū)中的文件需要提交

git add

作用:將文件由 工作區(qū) 添加到 暫存區(qū),在git中,文件無法直接從工作區(qū)直接添加到倉庫區(qū),必須先從工作區(qū)添加到暫存區(qū),再從暫存區(qū)添加到倉庫區(qū)。

命令:git add 文件名/目錄名

?將index.html添加到暫存區(qū)

git add index.html

?

?將css目錄下所有的文件添加到暫存區(qū)

gi tadd css

?

?將當前目錄下所有的js文件添加到暫存區(qū)

git add *.js

?

?添加當前目錄下所有的文件

git add .

git add -A

git add --all

注意點:空的文件夾是會被忽略掉的,如果想要提交這個文件夾,一般會在該目錄下創(chuàng)建一個.gitkeep文件

git commit

作用:將文件由 暫存區(qū) 添加到 倉庫區(qū),生成版本號

將文件從暫存區(qū)提交到倉庫

git commit -m "提交說明"

?

?如果不寫提交說明,會進入vi編輯器,沒有寫提交說明,是提交不成功的。

git commit # 需要使用vi輸入內(nèi)容

?

?如果是一個已經(jīng)暫存過的文件,可以快速提交,如果是未追蹤的文件,那么命令將不生效。

git commit -a -m '提交說明'

?

?修改最近的一次提交說明, 如果提交說明不小心輸錯了,可以使用這個命令

git commit --amend -m "提交說明"

git log

作用:查看提交日志

git log 查看提交的日志

git對比

git diff

git diff可以查看每次提交的內(nèi)容的不同

?查看工作區(qū)與暫存區(qū)的不同

git diff

?

?查看暫存區(qū)與倉庫區(qū)的不同

git diff --cached

?

?查看工作區(qū)與倉庫區(qū)的不同,HEAD表示最新的那次提交

git diff HEAD

?

?查看兩個版本之間的不同

git diff? c265262 de4845b

git重置

git reset

作用:版本回退,將代碼恢復(fù)到已經(jīng)提交的某一個版本中。

git reset --hard 版本號 將代碼回退到某個指定的版本(版本號只要有前幾位即可)

git reset --hard head~1將版本回退到上一次提交

~1:上一次提交

~2:上上次提交

~0:當前提交

當使用了git reset命令后,版本會回退,使用git log只能看到當前版本之前的信息。使用git reflog可以查看所有的版本信息

git忽視文件

在倉庫中,有些文件是不想被git管理的,比如數(shù)據(jù)的配置密碼、寫代碼的一些思路等。git可以通過配置從而達到忽視掉一些文件,這樣這些文件就可以不用提交了。

在倉庫的根目錄創(chuàng)建一個.gitignore的文件,文件名是固定的。

將不需要被git管理的文件路徑添加到.gitignore中

?忽視idea.txt文件

idea.txt

?

?忽視css下的index.js文件

css/index.js

?

忽視css下的所有的js文件

css/*.js

?

?忽視css下的所有文件

css/*.*

?忽視css文件夾

css

git分支操作

分支就是科幻電影里面的平行宇宙,當你正在電腦前努力學(xué)習Git的時候,另一個你正在另一個平行宇宙里努力學(xué)習SVN。

如果兩個平行宇宙互不干擾,那對現(xiàn)在的你也沒啥影響。不過,在某個時間點,兩個平行宇宙合并了,結(jié)果,你既學(xué)會了Git又學(xué)會了SVN!

分支特點:

分支之間互不干擾

分支可以合并

為什么要有分支?

如果你要開發(fā)一個新的功能,需要2周時間,第一周你只能寫50%代碼,如果此時立即提交,代碼沒寫完,不完整的代碼會影響到別人無法工作。如果等代碼寫完再提交,代碼很容易丟失,風險很大。

有了分支,你就可以創(chuàng)建一個屬于自己的分支,別人看不到,也不影響別人,你在自己的分支上工作,提交到自己的分支上,等到功能開發(fā)完畢,一次性的合并到原來的分支。這樣既安全,又不影響他人工作。

在工作過程中,經(jīng)常會碰到多任務(wù)并行開發(fā) 的情況,使用分支就能很好的避免任務(wù)之間的影響。

其他版本工具比如svn,cvs中也有分支這個概念,但是這些工具中的分支操作非常的慢,形同擺設(shè)。

git分支命令

在git中,分支實質(zhì)上僅僅是一個指針,每次代碼提交后,這個分支指針就會向后移動,保證一直指向最后一次提交的的版本。git中使用HEAD指向當前分支

創(chuàng)建分支

git branch 分支名稱創(chuàng)建分支,分支中的代碼,在創(chuàng)建時與當前分支的內(nèi)容完全相同。

git在第一次提交時,就有了一個叫master的主分支。

git branch dev,創(chuàng)建了一個叫做dev的分支

查看分支

git branch可以查看所有的分支,

在當前分支的前面會有一個*

在git中,有一個特殊指針HEAD,永遠會指向當前分支

切換分支

git checkout 分支名稱切換分支? HEAD指針指向了另一個分支

在當前分支的任何操作,都不會影響到其他的分支,除非進行了分支合并。

提交代碼時,會生產(chǎn)版本號,當前分支會指向最新的版本號。

創(chuàng)建并切換分支

git checkout -b 分支名稱 創(chuàng)建并切換分支

切換分支會做兩件事情

創(chuàng)建一個新分支

把head指針指向當前的分支

刪除分支

git branch -d 分支名稱 可以刪除分支

注意:不能在當前分支刪除當前分支,需要切換到其他分支才能刪除。

注意:master分支是可以刪除的,但是不推薦那么做。

合并分支

git merge 分支名稱 將其他分支的內(nèi)容合并到當前分支。

在master分支中執(zhí)行g(shù)it merge dev 將dev分支中的代碼合并到master分支


git合并沖突

對于同一個文件,如果有多個分支需要合并時,容易出現(xiàn)沖突。

合并分支時,如果出現(xiàn)沖突,只能手動處理,再次提交,一般的作法,把自己的代碼放到?jīng)_突代碼的后面即可。

git遠程倉庫

github與git

git與github沒有直接的關(guān)系。

git是一個版本控制工具。

github是一個代碼托管平臺,開源社區(qū),是git的一個遠程代碼倉庫。

1. gitHub是一個面向開源及私有軟件項目的托管平臺,因為只支持git 作為唯一的版本庫格式進行托管,故名gitHub。

2. github免費,代碼所有人都能看到,但是只有你自己能修改。付費的可以隱藏。

3. 創(chuàng)建git項目時,不能有中文。

github官網(wǎng)?(自己看咯)

開源中國-git(自己百度下)

git clone

作用:克隆遠程倉庫的代碼到本地

git clone [遠程倉庫地址]

git clone git://github.com/wuxuande/test.git會在本地新建一個test文件夾,在test中包含了一個.git目錄,用于保存所有的版本記錄,同時test文件中還有最新的代碼,你可以直接進行后續(xù)的開發(fā)和使用。

git克隆默認會使用遠程倉庫的項目名字,也可以自己指定。需要是使用以下命令:git clone [遠程倉庫地址] [本地項目名]

git push

作用:將本地倉庫中代碼提交到遠程倉庫

git push 倉庫地址 master 在代碼提交到遠程倉庫,注意master分支必須寫,不能省略

例子:git push git@github.com:wuxuande/test.git master 如果第一次使用,需要填寫github的用戶名和密碼

git pull

作用:將遠程的代碼下載到本地

通常在push前,需要先pull一次。

?獲取遠程倉庫的更新,并且與本地的分支進行合并

git pull

git remote

每次push操作都需要帶上遠程倉庫的地址,非常的麻煩,我們可以給倉庫地址設(shè)置一個別名

# 給遠程倉庫設(shè)置一個別名

gitremote add 倉庫別名 倉庫地址

gitremote add wuxuande git@github.com:wuxuande/test.git

?

?刪除wuxuande這個別名

gitremote remove wuxuande

?

?git clone的倉庫默認有一個origin的別名

SSH免密碼登陸

git支持多種數(shù)據(jù)傳輸協(xié)議:

https協(xié)議:https://github.com/wuxuande/test.git? 需要輸入用戶名和密碼

ssh協(xié)議:git@github.com:wuxuande/test.git? 可以配置免密碼登錄

每次push或者pull代碼,如果使用https協(xié)議,那么都需要輸入用戶名和密碼進行身份的確認,非常麻煩。

github為了賬戶的安全,需要對每一次push請求都要驗證用戶的身份,只有合法的用戶才可以push

使用ssh協(xié)議,配置ssh免密碼,可以做到免密碼往github推送代碼

SSH免密碼登錄配置

注意:這些命令需要在bash中敲

1 創(chuàng)建SSH Key:ssh-keygen -t rsa

2 在文件路徑?C:\用戶\當前用戶名\?找到?.ssh?文件夾

3 文件夾中有兩個文件:

私鑰:id_rsa

公鑰:id_rsa.pub

4 在?github -> settings -> SSH and GPG keys頁面中,新創(chuàng)建SSH key

5 粘貼 公鑰?id_rsa.pub?內(nèi)容到對應(yīng)文本框中

5 在github中新建倉庫或者使用現(xiàn)在倉庫,拿到git@github.com:用戶名/倉庫名.git

6 此后,再次SSH方式與github“通信”,不用輸入密碼確認身份了



本來想上傳幾個圖的,想想還是算了,畫的不好,勞動不容易大家順手點個贊不為過吧,謝謝大家!

?著作權(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)容

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