git零基礎(chǔ)學(xué)習(xí)

      網(wǎng)友投稿 932 2025-04-02

      1. git流程圖

      clone方式創(chuàng)建本地倉(cāng)庫(kù)流程:

      從遠(yuǎn)程倉(cāng)庫(kù)中克隆Git資源作為本地倉(cāng)庫(kù):git clone https://github/git/example。

      從本地倉(cāng)庫(kù)中checkout代碼然后進(jìn)行代碼修改:直接修改代碼文件等,該區(qū)稱為工作區(qū)

      在提交前先將代碼提交到暫存區(qū): git add -A將所有文件放到緩存區(qū);git add filename1 filename2 ...,將指定文件放到緩存區(qū) 。

      提交修改。提交到本地倉(cāng)庫(kù):git commit -m "the first commit",提交所有文件到本地倉(cāng)庫(kù),m參數(shù)必須有,意思是為本次提交添加說(shuō)明信息。也可以和add一樣,只提交某個(gè)文件

      在修改完成后,需要和團(tuán)隊(duì)成員共享代碼時(shí),可以將代碼push到遠(yuǎn)程倉(cāng)庫(kù):git push http://xxx/xxx。

      當(dāng)其他人也更新了遠(yuǎn)程倉(cāng)庫(kù)的代碼,自己本地還未更新時(shí),需要再?gòu)倪h(yuǎn)程倉(cāng)庫(kù)更新自己的本地倉(cāng)庫(kù),此時(shí)不需要用clone,可以用以下三種方式之一:

      git fetch:從遠(yuǎn)程獲取最新版本到本地

      git merge:merge遠(yuǎn)程倉(cāng)庫(kù)和本地倉(cāng)庫(kù)

      git pull:fetch+merge,從安全角度出發(fā),git fetch比git pull更安全,因?yàn)槲覀兛梢韵缺容^本地與遠(yuǎn)程的區(qū)別后,選擇性的合并

      更新本地倉(cāng)庫(kù)后,自己又進(jìn)行了修改,可以再add、commit、push。如此循環(huán)反復(fù)。

      創(chuàng)新全新的倉(cāng)庫(kù):

      在本地如D:/repository目錄下面,新建一個(gè)repo1的文件夾(倉(cāng)庫(kù)名稱叫做repo1),進(jìn)入該文件夾,打開(kāi)git bash,輸入命令git init,執(zhí)行后可以看到,在項(xiàng)目目錄repo文件夾下多出了一個(gè).git目錄,關(guān)于版本等的所有信息都在這個(gè)目錄里面。

      新建文件,編輯,然后git add到緩沖區(qū)

      git commit到本地倉(cāng)庫(kù)

      git push到遠(yuǎn)程倉(cāng)庫(kù)

      遠(yuǎn)程倉(cāng)庫(kù)更新后,pull或者fetch到本地

      自己更新后再次add、commit、push

      2. 文件的四種狀態(tài):

      Untracked: 未跟蹤, 此文件在文件夾中, 但并沒(méi)有加入到git庫(kù), 不參與版本控制. 通過(guò)git add 狀態(tài)變?yōu)镾taged.

      Unmodify: 文件已經(jīng)入庫(kù), 未修改, 即版本庫(kù)中的文件快照內(nèi)容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變?yōu)镸odified. 如果使用git rm移出版本庫(kù), 則成為Untracked文件

      Modified: 文件已修改, 僅僅是修改, 并沒(méi)有進(jìn)行其他的操作. 這個(gè)文件也有兩個(gè)去處, 通過(guò)git add可進(jìn)入暫存staged狀態(tài), 使用git checkout 則丟棄修改過(guò), 返回到unmodify狀態(tài), 這個(gè)git checkout即從庫(kù)中取出文件, 覆蓋當(dāng)前修改!

      Staged: 暫存狀態(tài). 執(zhí)行g(shù)it commit則將修改同步到庫(kù)中, 這時(shí)庫(kù)中的文件和本地文件又變?yōu)橐恢? 文件為Unmodify狀態(tài). 執(zhí)行g(shù)it reset HEAD filename取消暫存, 文件狀態(tài)為Modified

      3. 分支的概念

      我們每次的提交,Git都把它們串成一條時(shí)間線,這條時(shí)間線就是一個(gè)分支。分支就像科幻電影里面的平行宇宙,如果兩個(gè)平行宇宙互不干擾,那對(duì)現(xiàn)在的你也沒(méi)啥影響。不過(guò),在某個(gè)時(shí)間點(diǎn),兩個(gè)平行宇宙合并了,我們就需要處理一些問(wèn)題了!

      git一般會(huì)有一個(gè)master主分支。開(kāi)始的時(shí)候,master分支是一條線,Git用master指向最新的提交,然后用HEAD指向master,就能確定當(dāng)前分支,以及當(dāng)前分支的提交點(diǎn)。每次提交,master分支都會(huì)向前移動(dòng)一步,這樣,隨著你不斷提交,master分支的線也越來(lái)越長(zhǎng)。

      當(dāng)我們創(chuàng)建新的分支,例如dev時(shí),Git新建了一個(gè)指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當(dāng)前分支在dev上。

      Git創(chuàng)建一個(gè)分支很快,因?yàn)槌嗽黾右粋€(gè)dev指針,更改HEAD的指向,工作區(qū)的文件都沒(méi)有任何變化!不過(guò),從現(xiàn)在開(kāi)始,對(duì)工作區(qū)的修改和提交就是針對(duì)dev分支了,比如新提交一次后,dev指針往前移動(dòng)一步,而master指針不變。

      假如我們?cè)赿ev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡(jiǎn)單的方法,就是直接把master指向dev的當(dāng)前提交,就完成了合并。

      合并完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支。

      兩個(gè)分支中編輯的內(nèi)容都是相互獨(dú)立互不干擾的,那么如果在兩個(gè)分支中都對(duì)同一個(gè)文件進(jìn)行編輯,然后再合并,就有可能會(huì)出現(xiàn)沖突。沖突需要手動(dòng)解決。

      常見(jiàn)的分支命令:

      # 列出所有本地分支 git branch # 列出所有遠(yuǎn)程分支 git branch -r # 列出本地和遠(yuǎn)程所有分支 git branch -a # 新建一個(gè)分支,但依然停留在當(dāng)前分支 git branch [branch-name] # 新建一個(gè)分支,并切換到該分支 git checkout -b [branch] # 合并指定分支到當(dāng)前分支 $ git merge [branch] # 刪除本地分支 $ git branch -d [branch-name] # -d表示強(qiáng)制刪除 # 刪除遠(yuǎn)程分支 $ git branch -dr [remote/branch] $ git push origin --delete [branch-name] # 刪除后還要推送到服務(wù)器 # 更改分支名稱 git branch -M # -M強(qiáng)制重命名。重命名分支,如果newbranch名字已經(jīng)存在,則需要使用-M強(qiáng)制重命名,否則,使用-m進(jìn)行重命名。

      4. 其他命令

      查看filename的修改日志 :git log filename

      刪除filename:正確方式如下,如果本地電腦直接delete,只是本地(緩沖區(qū)刪除),本地倉(cāng)庫(kù)仍然存在。

      # 正確刪除方式 git rm filename git commit -m "remove" # 如果本地delete刪除,需要先add,再commit git add fileanme git commit fileanme -m "remove"

      查看文件狀態(tài):git status filename

      git零基礎(chǔ)學(xué)習(xí)

      5. github使用

      5.1 使用https方式推送到github

      在github上申請(qǐng)一個(gè)賬號(hào)

      右上角點(diǎn)擊加號(hào),有New repository

      從上圖可以看到,github的使用有兩種方式,HTTPS和SSH,切換一下,會(huì)發(fā)現(xiàn)下面的示例也會(huì)變化。實(shí)際當(dāng)中兩種方式都可以使用,如果使用https很簡(jiǎn)單,基本不需要配置就可以使用,但是每次提交代碼和下載代碼時(shí)都需要輸入用戶名和密碼。如果使用ssh方式就需要客戶端先生成一個(gè)密鑰對(duì),即一個(gè)公鑰一個(gè)私鑰。然后還需要把公鑰放到github的服務(wù)器上。為了先了解如何使用github,此處我們先講https的方式,此方式不用做任何配置,得到第2步的圖片信息即可進(jìn)入下一步。(ssh最后補(bǔ)充)

      其實(shí)第2步的圖片已經(jīng)告訴我們接下來(lái)怎么辦了,如果本地倉(cāng)庫(kù)已經(jīng)建好(沒(méi)建好,可以先git init創(chuàng)建本地倉(cāng)庫(kù)),此時(shí)需要建立本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)的連接,或者說(shuō)是添加新的遠(yuǎn)程倉(cāng)庫(kù):git remote add origin https://github.com/yuanhanly/myrepo.git。add就是創(chuàng)建連接的意思,origin是https://github.com/yuanhanly/myrepo.git的別名,一般都叫origin,也可以改叫別的。后面的地址就是github倉(cāng)庫(kù)的地址。

      修改分支的名稱為main(master時(shí)代已經(jīng)過(guò)去了):git branch -M main

      推送到遠(yuǎn)程服務(wù)器:git push -u origin main。origin遠(yuǎn)程倉(cāng)庫(kù)主機(jī)名,main分支名稱,此時(shí)不需要寫(xiě)https的地址,用origin代替即可。將本地的main分支推送到origin主機(jī),同時(shí)指定origin為默認(rèn)主機(jī),后面就可以不加任何參數(shù)使用git push了,如果當(dāng)前分支只有一個(gè)追蹤分支,那么主機(jī)名都可以省略。 不帶任何參數(shù)的git push,默認(rèn)只推送當(dāng)前分支,這叫做simple方式。此外,還有一種matching方式,會(huì)推送所有有對(duì)應(yīng)的遠(yuǎn)程分支的本地分支。Git 2.0版本之前,默認(rèn)采用matching方法,現(xiàn)在改為默認(rèn)采用simple方式。

      5.2 使用ssh方式推送到github

      使用ssh方式,除了第3步需要配置一下,其余步驟基本和https相同,下面講述配置ssh的方法(密鑰的生成與設(shè)置只需要進(jìn)行一次,不必每個(gè)倉(cāng)庫(kù)都設(shè)置):

      在git bash下執(zhí)行ssh-keygen -t rsa

      執(zhí)行命令完成后,在window本地用戶.ssh目錄C:\Users\用戶名.ssh下面生成如下名稱的公鑰和私鑰:id_rsa是私鑰,id_rsa.pub是公鑰

      在github下,點(diǎn)擊+旁邊的按鈕,選擇Settings,然后切換到SSH and GPG keys

      點(diǎn)擊New SSH key,隨便定義一個(gè)title,然后把id_rsa.pub中的內(nèi)容復(fù)制,粘到Key下面,點(diǎn)擊Add SSH key按鈕完成配置

      git remote add 的地址相應(yīng)修改,如git remote add origin git@github.com:yuanhanly/myrepo.git

      5.3 關(guān)于遠(yuǎn)程操作的其他相關(guān)命令

      git remote -v:顯示需要讀寫(xiě)遠(yuǎn)程倉(cāng)庫(kù)使用的 Git 保存的簡(jiǎn)寫(xiě)與其對(duì)應(yīng)的 URL,如下圖,origin是遠(yuǎn)程倉(cāng)庫(kù)名稱,后面是url,括號(hào)里面是方法

      git remote show origin:查看origin遠(yuǎn)程倉(cāng)庫(kù)

      git remote rename oldname newname:修改遠(yuǎn)程倉(cāng)庫(kù)名稱,如origin改成aabb

      Git GitHub

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:怎樣查看字?jǐn)?shù)?(在word中怎樣查看字?jǐn)?shù))
      下一篇:excel2003數(shù)據(jù)排序的教程
      相關(guān)文章
      亚洲人成电影亚洲人成9999网| 国产精品亚洲一区二区在线观看| 激情五月亚洲色图| 亚洲AV日韩AV永久无码免下载| 亚洲熟妇无码AV在线播放| 亚洲中文字幕视频国产| 亚洲七七久久精品中文国产| 亚洲国产精品综合久久网络 | 国产亚洲精品无码成人| 国产成人精品日本亚洲专区61| 亚洲人AV永久一区二区三区久久| 亚洲精品国产高清嫩草影院| 亚洲AⅤ永久无码精品AA| 亚洲国产精品成人久久蜜臀| 亚洲?V无码成人精品区日韩| 亚洲Av无码乱码在线观看性色| 狠狠综合亚洲综合亚洲色| 亚洲Av无码乱码在线观看性色 | 亚洲国产成人久久精品动漫| 亚洲精品免费视频| 亚洲视频国产视频| 亚洲人成网网址在线看| 亚洲人成网站18禁止久久影院 | 亚洲一级免费毛片| 亚洲AV日韩综合一区尤物| 2020久久精品亚洲热综合一本| 亚洲狠狠成人综合网| 亚洲精品国产suv一区88| 亚洲av日韩av永久在线观看 | 亚洲视频在线视频| 亚洲最新中文字幕| 国内精品久久久久影院亚洲| 亚洲AV第一成肉网| 亚洲国产高清在线一区二区三区| 国产精品亚洲玖玖玖在线观看 | 亚洲日本一线产区和二线产区对比| 亚洲精品无码成人| 亚洲国产综合精品一区在线播放| 国产午夜亚洲精品理论片不卡| 亚洲成av人影院| 亚洲网红精品大秀在线观看 |