柚子快報(bào)邀請碼778899分享:git使用及github
柚子快報(bào)邀請碼778899分享:git使用及github
文章目錄
操作命令基本組成框架在開發(fā)中g(shù)it分支的重要性
github的使用將本地倉庫關(guān)聯(lián)到遠(yuǎn)程倉庫將遠(yuǎn)程倉庫關(guān)聯(lián)到本地和拉取指定分支、切換遠(yuǎn)程分支提交本地倉庫到遠(yuǎn)程倉庫修改分支名稱
保存當(dāng)前工作切換分支將別的分支修改轉(zhuǎn)移到自己的分支遠(yuǎn)程刪除分支后本地git branch -a依然看得到的問題
強(qiáng)制合并分支拉取遠(yuǎn)程所有分支子模塊管理分支開發(fā)步驟強(qiáng)制刪除分支查看不同分支的文件差異查看倉庫信息新增分支操作
命令總結(jié)創(chuàng)建當(dāng)?shù)刈兓峤粴v史分支機(jī)構(gòu)和標(biāo)簽更新和發(fā)布合并與基礎(chǔ)撤消提交相關(guān)更改經(jīng)常提交不要做半成品提交之前的測試代碼寫好的提交信息版本控制不是備份系統(tǒng)使用分支同意工作流程幫助和文檔寫好的提交信息版本控制不是備份系統(tǒng)使用分支同意工作流程幫助和文檔
操作命令
Centos yum -y install git #安裝git 根據(jù)系統(tǒng)來安裝
ubuntu apt install -y git
git --version #看git版本號
配置git環(huán)境
git config --global user.name "名稱" #名稱中間有空格需要加雙引號,沒有則無需加
git config --global user.email 123@qq.com #中間沒有空格所以沒有加
git config --global credential.helper store #用戶名和密碼
git config --global --list #查看剛配置的信息
創(chuàng)建倉庫
git init #創(chuàng)建空倉庫,沒有會(huì)自動(dòng)創(chuàng)建git倉庫 默認(rèn)是隱藏目錄,用ls -a查看
git init 名稱 #給創(chuàng)建的git倉庫起個(gè)名稱
git status #查看狀態(tài)
把文件添加到緩存區(qū),并提交到本地倉庫
git add 文件 #添加到緩存區(qū),等待被提交
git commit -m “說明” #提交到本地倉庫倉庫、不加m會(huì)進(jìn)入vim里面
git commit --amend #如果發(fā)現(xiàn)剛才的注釋寫錯(cuò)了,用這個(gè)來修改并保存即可
git log #查看提交記錄
下面是提交記錄的內(nèi)容
commit b9e3a0d708ee5a81ea5ff383c6dabe716eec8cf1 (HEAD -> master)
Author: StephenZhou
Date: Tue Dec 29 12:15:13 2020 +0800
test add new file "test.c"
#后面的head是指向的意思,表示這次提交到哪兒,head->master代表這次提交到master主倉庫,如果是head->分支倉庫則代表提交到分支倉庫
commit b9e3a0d708ee5a81ea5ff383c6dabe716eec8cf1 (HEAD -> master)
#Author是提交者是誰的意思,顯示格式是:用戶名 <郵箱>
Author: StephenZhou
#Date的意思是提交時(shí)間,后面的+0800這個(gè)是格林尼治時(shí)間,代表當(dāng)前是以哪兒的時(shí)間地作為基準(zhǔn),這是世界時(shí)間,用它來作為基數(shù)與當(dāng)前所在地時(shí)差進(jìn)行計(jì)算,包括地球自轉(zhuǎn)等公式。
Date: Tue Dec 29 12:15:13 2020 +0800
#最下面的就是注釋了
test add new file "test.c"
#如果提交記錄過多,用--pretty=oneline來簡潔輸出
git log --pretty=oneline
回滾代碼倉庫 git reset --hard
reset參數(shù)是重置命令
–hard是重置代碼倉庫版本
有三種模式
–soft 、–mixed以及–hard是三個(gè)恢復(fù)等級。
使用–soft就僅僅將頭指針恢復(fù),已經(jīng)add的暫存區(qū)以及工作空間的所有東西都不變。如果使用–mixed,就將頭恢復(fù)掉,已經(jīng)add的暫存區(qū)也會(huì)丟失掉,工作空間的代碼什么的是不變的。如果使用–hard,那么一切就全都恢復(fù)了,頭變,aad的暫存區(qū)消失,代碼什么的也恢復(fù)到以前狀態(tài)。
git reset --hard id
#回滾當(dāng)前倉庫指向的版本
git reset --hard HEAD^ #^代表上一個(gè)版本的意思,HEAD代表當(dāng)前倉庫的指向,當(dāng)前HEAD指向master,就代表回滾到master上一次提交的版本
git reset --hard HEAD~3 #后面的~3,代表以當(dāng)前版本為基數(shù),回滾多少次。HEAD~3代表回滾master前三個(gè)版本
git rm #刪除文件
#此方法僅限git rm,因?yàn)間it rm會(huì)先將文件放入緩存區(qū),且沒有使用commit提交的情況下
git rm后恢復(fù)文件:git rm、git reset、git checkout
#首先使用git rm刪除一個(gè)文件
git rm d.c
#在使用git reset重置所有緩存區(qū)操作
git reset
#重置完成之后在使用git checkout命令將文件取消操作
git checkout d.c
git reflog #查看提交歷史,git reflog可以查看當(dāng)前版本庫的提交歷史,凡是對倉庫版本進(jìn)行迭代的都會(huì)出現(xiàn)在這個(gè)里面,包括你回滾版本都會(huì)出現(xiàn)在這個(gè)歷史中
創(chuàng)建分支:git branch、git checkout
#使用git checkout -b參數(shù)來創(chuàng)建一個(gè)分支,創(chuàng)建完成分支后會(huì)自動(dòng)切換過去
git checkout -b dev
#然后我們在使用branch來查看當(dāng)前屬于哪個(gè)分支,也就是查看HEAD的指向
git branch #前面帶*的就是目前在哪個(gè)分支下
切換分支:git checkout
#當(dāng)我們想切換分支可以使用git checkout來切換,如剛剛我們創(chuàng)建了一個(gè)分支dev并切換了過去,現(xiàn)在切換回masterk
git checkout master
git branch
合并分支:git merge
#當(dāng)我們新建分支并做完工作之后,想要把分支提交至master,只需要切換到master倉庫,并執(zhí)行g(shù)it merge 分支名就可以了
#如我們在分支中新建了一個(gè)f.c和test.c的文件
#然后在使用git checkout master切換到master
#在使用git merge dev將其合并
就是說,你現(xiàn)在的分支下提交到本地倉庫里的文件才能合并,沒有提交到本地倉庫無法合并。
git branch -D 分支名 #刪除本地分支
git push origin --delete 文件名 #刪除遠(yuǎn)程分支
基本組成框架
Workspace、Index / Stage、Repository、Remote
Workspace:開發(fā)者工作區(qū)Index / Stage:暫存區(qū)/緩存區(qū)Repository:倉庫區(qū)(或本地倉庫)Remote:遠(yuǎn)程倉庫
Workspace:開發(fā)者工作區(qū),也就是你當(dāng)前寫代碼的目錄,它一般保持的是最新倉庫代碼。
Index / Stage:緩存區(qū),最早叫Stage,現(xiàn)在新版本已經(jīng)改成index,位于.git目錄中,它用來存放臨時(shí)動(dòng)作,比如我們做了git add或者git rm,都是把文件提交到緩存區(qū),這是可以撤銷的,然后在通過git commit將緩存區(qū)的內(nèi)容提交到本地倉庫
Repository:倉庫區(qū),是倉庫代碼,你所有的提交都在這里,git會(huì)保存好每一個(gè)歷史版本,存放在倉庫區(qū),它可以是服務(wù)端的也可以是本地的,因?yàn)樵诜植际街校魏稳硕伎梢允侵鱾}庫。
Remote:遠(yuǎn)程倉庫,只能是別的電腦上的倉庫,即服務(wù)器倉庫。
在開發(fā)中g(shù)it分支的重要性
當(dāng)我們在開發(fā)中,無論做什么操作都建議使用分支,因?yàn)樵趫F(tuán)隊(duì)開發(fā)中,master只有一個(gè),合作開發(fā)里任何人都可以從master里拉取代碼,拉取時(shí)master后創(chuàng)建分支,分支名改為你要做的操作,比如修改某某文件,修改什么什么bug,單詞以下劃線做分割,然后在提交一個(gè)版本
分支名必須簡潔,和標(biāo)題一樣,提交的commit在簡單描述一下就可以了。
如我們的master中有個(gè)bug,是內(nèi)存泄漏
我們可以常見一個(gè)分支名為Memory_Leak,然后在commit里簡單描述一下修復(fù)了哪個(gè)模塊的內(nèi)存泄漏,不要寫修復(fù)了什么什么代碼,什么什么問題導(dǎo)致的,只需要簡單描述一下就可以了。
一般情況下,我們都是拉取master后,想要修改功能或者添加功能,都是創(chuàng)建分支,在分支里修改不影響master,如果修改錯(cuò)了代碼或者誤刪之類的,在從master上拉取一份就可以了。
github的使用
1.首先到github上注冊一個(gè)你的賬號
2.在本地創(chuàng)建一個(gè)ssh的key,因?yàn)間ithub是使用ssh服務(wù)進(jìn)行通訊的
ssh-keygen -t rsa -C "your_email@example.com"
-t 指定密鑰類型,默認(rèn)是 rsa ,可以省略。-C 設(shè)置注釋文字,比如郵箱。-f 指定密鑰文件存儲(chǔ)文件名,一般我們默認(rèn),讓存儲(chǔ)到默認(rèn)路徑以及默認(rèn)文件名
它會(huì)要求輸入Enter file in which to save the key (/home/stephenzhou/.ssh/id_rsa)
這里是生成的sshkey文件名,我們可以回車使用默認(rèn)文件名
除此之外還會(huì)讓你輸入
Created directory ‘/home/stephenzhou/.ssh’.
Enter passphrase (empty for no passphrase):
這個(gè)密碼會(huì)在讓你push提交時(shí)候要輸入的,除了git登錄密碼,還要輸入這個(gè)密碼,直接回車則空密碼,這里我們直接回車
接著會(huì)讓你在此輸入密碼,驗(yàn)證這里依舊回車
Enter same passphrase again:
ls /root/.ssh/
authorized_keys id_rsa id_rsa.pub
#id_rsa是私匙,id_rsa.pub是公匙,id_rsa不能告訴任何人,只有公鑰可以,ssh采用的是非對稱加密。
接著在github上添加你的公鑰
右上角頭像—settings—左邊SSH
你可以添加如很多個(gè)ssh,比如你有多臺(tái)電腦,在每個(gè)電腦上都配置ssh然后添加進(jìn)來就可以了,git需要這個(gè)是要確定你是主人,確定是主人的機(jī)器推送的才可以推送到倉庫中,但是你可以創(chuàng)建公開倉庫,別人只能拉取不能推送到這個(gè)倉庫中,你可以給其它人權(quán)限。
找到你要開放的倉庫,選擇Manage access然后使用invite a cikkaborator添加成員就可以了。
將本地倉庫關(guān)聯(lián)到遠(yuǎn)程倉庫
git remote add origin
#我們本地有一個(gè)倉庫,我們想把它推送到遠(yuǎn)程上去,很簡單,我們只需要使用git remote add origin命令就可以了,ongin是github上的倉庫名稱,意思是遠(yuǎn)程倉庫的意思。
首先選擇倉庫的code找到github生成的遠(yuǎn)程倉庫鏈接
然后關(guān)聯(lián)
git remote add origin git@github.com:beiszhihao/test.git
然后使用git push推送到遠(yuǎn)程
git push -u origin master
push #將本地倉庫與遠(yuǎn)程倉庫合并
-u #將本地倉庫分支與遠(yuǎn)程倉庫分支一起合并,就是說將master的分支也提交上去,這樣你就可以在遠(yuǎn)程倉庫上看到你在本地倉庫的master中創(chuàng)建了多少分支,不加這個(gè)參數(shù)只將當(dāng)前的master與遠(yuǎn)程的合并,沒有分支的歷史記錄,也不能切換分支
origin #遠(yuǎn)程倉庫的意思,如果這個(gè)倉庫是遠(yuǎn)程的那么必須使用這個(gè)選項(xiàng)
master #提交本地matser分支倉庫
注意第一次提交ssh會(huì)讓你驗(yàn)證是否來自github
輸入yes就可以了
我們不需要登錄,因?yàn)間ithub上的ssh列表里有這臺(tái)機(jī)器
注意第一次的時(shí)候加上-u就可以了,因?yàn)槲覀儽镜仄渌赡苡泻芏喾种б蔡峤簧先ィ院笾惶峤蛔钚麓a就可以了git push origin master,不需要在提交其它分支
將遠(yuǎn)程倉庫關(guān)聯(lián)到本地和拉取指定分支、切換遠(yuǎn)程分支
git clone -b分支名 倉庫地址來指定分支
當(dāng)我們遠(yuǎn)程有倉庫時(shí),想要關(guān)聯(lián)到本地只需要使用git clone就可以了
新建一個(gè)空目錄,不要git init
使用git clone會(huì)自動(dòng)幫我們初始化
鑒于剛剛的,我們上傳的代碼在遠(yuǎn)程倉庫中有一個(gè)默認(rèn)的main和master,由于我們最初上傳的分支是master,所以github給我們創(chuàng)建了一個(gè)新的分支叫master,并沒有關(guān)聯(lián)到mian中,我們拉取時(shí),默認(rèn)拉取的是main分支
提交本地倉庫到遠(yuǎn)程倉庫
git add、git commit、git push
我們修改了master上的分支代碼,然后使用git add提交到緩存區(qū),在使用commit提交到本地倉庫,在使用push推送到遠(yuǎn)程就可以了,非常簡單,命令都是我們學(xué)過的
修改分支名稱
git branch -m 分支名 新的分支名
保存當(dāng)前工作切換分支
git stash
在你當(dāng)前工作區(qū)修改了文件或者其它功能時(shí),你想要切換或者創(chuàng)建到其它分區(qū)是不可能的
我們分支修改了內(nèi)容,想要切換到其它分區(qū)git會(huì)終止你這樣操作,為的是防止丟失當(dāng)前工作區(qū)內(nèi)容。
我們可以使用git stash命令來保存當(dāng)前工作狀態(tài)
git stash
保存工作狀態(tài)之后可以使用git stash list查看當(dāng)前存儲(chǔ)了多少工作狀態(tài)
git stash list
那么此時(shí)我們就可以切換到其它分支了
當(dāng)在別的分支做完事情之后,在切換回剛剛的分支,然后在剛剛的分支中將狀態(tài)恢復(fù)
git stash pop
一般情況下,我們在修改代碼時(shí),突然來了一個(gè)新的需求,讓我們先去做這個(gè)需求,但是此時(shí)我們正在寫的代碼還沒有完成,是不可以提交的,所以我們先使用git stash保存當(dāng)前工作狀態(tài),在拉取一個(gè)分支去這個(gè)分支里面干活,干完活之后回到之前的分支,在將工作內(nèi)容恢復(fù)出來繼續(xù)干活
git stash pop會(huì)將list保存的列表也給刪除掉
git stash apply 不會(huì)刪除列表里的內(nèi)容會(huì)默認(rèn)恢復(fù)第一個(gè)
如果想恢復(fù)指定內(nèi)容可以使用git stash apply list名稱
git stash drop list名稱可以移除指定list
git stash clear 移除所有l(wèi)sit
git stash show 查看棧中最新保存的stash和當(dāng)前目錄的差異。
注意stash是以棧的方式保存的,先進(jìn)后出。
準(zhǔn)確來說,這個(gè)命令的作用就是為了解決git不提交代碼不能切換分支的問題。
將別的分支修改轉(zhuǎn)移到自己的分支
git cherry-pick 分支名
有的時(shí)候我們從別的倉庫拉取分支下來,是有bug的分支,但是master修復(fù)了,我們分支倉庫沒有修復(fù),但是我們難不成重復(fù)master操作去修改這個(gè)bug?不不太繁瑣了,我們直接使用cherry-pick命令將改動(dòng)copy到我們分支上就可以了,這個(gè)命令只會(huì)將master改動(dòng)代碼合并到我們分支上,不會(huì)修改我們的代碼。
git會(huì)檢查master做了哪些修改,然后同步到我們的分支上,此時(shí)我們的分支依然是我們自己的代碼,且會(huì)生成一個(gè)版本倉庫。
做這個(gè)操作之前建議提交一次,便于恢復(fù)。
使用git cherry-pick 分支名即可合并分支修改,在此之前要保證你倉庫代碼是提交的,才可以進(jìn)行這個(gè)步驟。
其次你可以使用git log查看commit 然后使用git cherry-pick也是可以的,合并分支的指定歷史版本
遠(yuǎn)程刪除分支后本地git branch -a依然看得到的問題
git remote
這個(gè)問題是因?yàn)楸镜貨]有更新分支緩存
可以使用remote命令對遠(yuǎn)程倉庫進(jìn)行操作
使用 git remote show origin命令查看遠(yuǎn)程倉庫信息
git remote show origin
如果在里面沒有看到刪除后的分支就代表這個(gè)分支在遠(yuǎn)程已經(jīng)被刪除了。
使用prune參數(shù)刷新本地分支倉庫
git remote prune origin
強(qiáng)制合并分支
–allow-unrelated-histories
當(dāng)我們在使用兩個(gè)不同的分支時(shí)或此分支不是從原生倉庫中分支出來的,想要合并不符合GIT規(guī)則,所以會(huì)彈出:fatal: refusing to merge unrelated histories 的錯(cuò)誤,比如當(dāng)我們在本地開發(fā)好了,但是并沒有在一開始關(guān)聯(lián)遠(yuǎn)程倉庫,若想提交就會(huì)出現(xiàn)這樣的錯(cuò)誤,我們先拉取下來以后合并分支在后面加上這條語句就可以了
git merge master --allow-unrelated-histories
拉取遠(yuǎn)程所有分支
git fetch
當(dāng)我們在本地進(jìn)行開發(fā)時(shí),有時(shí)會(huì)發(fā)現(xiàn)有些分支看不見
可以使用git fetch把遠(yuǎn)程全部分支拉取下來,同時(shí)也包括這些分支的倉庫版本,log日志等,這個(gè)操作不會(huì)進(jìn)行合并。
git fetch
拉取后結(jié)果如下:
也可以拉取指定分支的最新內(nèi)容:
git fetch xxxx
子模塊管理
git submodule
在當(dāng)我們項(xiàng)目較大的情況下,都會(huì)使用模塊化編程,把不同的業(yè)務(wù)功能分割成數(shù)個(gè)子模塊,git也擁有對子模塊進(jìn)行管理的方法,submodule,可以使用它來添加子模塊與管理子模塊。
如添加一個(gè)子模塊:
git submodule add http://192.168.1.88:7990/scm/wlibold/weye_lib.git
使用如上命令會(huì)添加一個(gè)子模塊,名為weye_lib的子模塊到自己的倉庫中,這樣我們就可以使用了
在添加時(shí)會(huì)添加倉庫的最新版本,但是此模塊不會(huì)自動(dòng)更新,需要我們手動(dòng)更新,當(dāng)子模塊的倉庫進(jìn)行了更新,我們需要進(jìn)到此子模塊的文件夾中執(zhí)行如下命令:
git submodule update
這樣就會(huì)自動(dòng)化更新了模塊到最新版本。
若我們想要使用指定版本的子模塊也可以使用切換版本命令來完成子模塊的版本切換,同時(shí)你也可以使用git log命令查看這個(gè)子模塊的版本提交。
注意根據(jù)git版本不同的原因,你在添加時(shí)可能下來的子模塊是空項(xiàng)目,這個(gè)時(shí)候可以使用如下命令:
首先進(jìn)入到克隆下來的子模塊目錄,并執(zhí)行如下命令:
git submodule init
git submodule update
最新的git在使用add添加子模塊時(shí)會(huì)自動(dòng)使用這兩個(gè)命令。
這兩個(gè)命令作用分別是初始化子模塊倉庫,更新遠(yuǎn)程子模塊倉庫到本地,最早的git添加子模塊只是先在本地生成了映射關(guān)系,需要手動(dòng)執(zhí)行這兩個(gè)命令。
最后別忘記使用git add與git commit提交一次。
在提醒一下,若你使用的子模塊版本是0.17,最新版本是2.13,當(dāng)別人拉取你倉庫時(shí)子模塊也會(huì)是0.17不會(huì)變動(dòng)。
分支開發(fā)步驟
一般情況下我們開發(fā)都要在不擾亂master代碼的情況下進(jìn)行開發(fā)
1.拉取分支,分支名簡明摘要說要干什么,然后干活,在合并到master,合并之后在刪除分支,這是基本步驟,不需要留額外分支,分支只是為了將來看代碼時(shí)方便而已,能看到這個(gè)分支是干什么的。
強(qiáng)制刪除分支
git branch -D
如果遇到無法刪除的分支可以使用git branch -D 大寫的D即可。
查看不同分支的文件差異
git diff
查看倉庫信息
git remote
使用git remote可以查看當(dāng)前倉庫名稱
git remote
使用remote -v可以查看更詳細(xì)的權(quán)限信息
fetch代表可以拉取倉庫,push代表可以推送。
如果沒有權(quán)限只能拉取的情況下不會(huì)顯示push。
git查看日志簡潔方法:git log
git log --graph --pretty=oneline --abbrev-commit
注意前面的字符串是有效的,你可以用它來切換版本或者合并分支。
新增分支操作
git switch、git restore
這兩個(gè)命令是git 2.23以后引入的命令,目的是為了提供對新手更友好的分支操作,最早我們使用的是git checkout命令來對分支進(jìn)行操作,這個(gè)命令相對于復(fù)雜了許多,使用很多子參數(shù)來進(jìn)行操作,為此git新增了兩個(gè)命令:switch、restore,switch是用來切換分支與新增分支的,而restore用來撤銷文件的修改,使其變得更明確一點(diǎn)
切換分支:
git switch dev
注意如果分支不存在,是不會(huì)創(chuàng)建的
切換到commit ID:
切換到指定id并創(chuàng)建一個(gè)分支,我們稱之為分離HEAD狀態(tài)
git switch -d f8c540805b7e16753c65619ca3d7514178353f39
只需要加上-d參數(shù)就可以了,而checkout是不需要加-d的,在switch里一切變得明確了很多
如果要合并一個(gè)分支必須加上-b
git switch -b dev
創(chuàng)建分支則是-c
git switch -c dev
git restore命令是用來撤銷提交與修改的,如:
git restore file
使用這條命令會(huì)將文件從暫存區(qū)刪除
git restore file
這條命令會(huì)不會(huì)將文件從暫存區(qū)里刪除,會(huì)將文件在暫存區(qū)里的狀態(tài)覆蓋到工作區(qū),如我在工作區(qū)對這個(gè)文件又進(jìn)行了修改,那么使用這個(gè)命令可以將這個(gè)文件在暫存區(qū)里的內(nèi)容恢復(fù)到工作區(qū)
命令總結(jié)
創(chuàng)建
#克隆現(xiàn)有存儲(chǔ)庫 git clone ssh://user@domain.com/repo.git #創(chuàng)建一個(gè)新的本地存儲(chǔ)庫 git init
當(dāng)?shù)刈兓?/p>
#工作目錄中已更改的文件
git status
#跟蹤文件的更改
git diff
#將所有當(dāng)前更改添加到下一個(gè)提交
git add .
#在中添加一些更改到下一次提交
git add -p
#提交跟蹤文件中的所有本地更改
git commit -a
#提交先前進(jìn)行的更改
git commit
#更改最后一次提交
#不要修改已發(fā)布的提交!
git commit --amend
提交歷史
#顯示所有提交,從最新開始
git log
#顯示特定文件隨時(shí)間的變化e
git log -p
#誰更改了中的內(nèi)容和時(shí)間
git blame
分支機(jī)構(gòu)和標(biāo)簽
#列出所有現(xiàn)有分支
git branch -av
#切換HEAD分支
git checkout
#根據(jù)您當(dāng)前的HEAD創(chuàng)建一個(gè)新分支
git branch
#基于遠(yuǎn)程分支創(chuàng)建一個(gè)新的跟蹤分支
git checkout --track
#刪除本地分支
git branch -d
#用標(biāo)簽標(biāo)記當(dāng)前提交
git tag
更新和發(fā)布
#列出所有當(dāng)前配置的遙控器
git remote -v
#顯示有關(guān)遙控器的信息
git remote show
#添加名為的新遠(yuǎn)程存儲(chǔ)庫
git remote add
#從下載所有更改,但不要集成到HEAD中
git fetch
#下載更改并直接合并/集成到HEAD中
git pull
#在遠(yuǎn)程上發(fā)布本地更改
git push
#刪除遙控器上的分支
git branch -dr
#發(fā)布標(biāo)簽
git push --tags
合并與基礎(chǔ)
#將合并到當(dāng)前HEAD中
git merge
#將當(dāng)前的HEAD重新設(shè)置到 不要重新發(fā)布已發(fā)布的提交!
git rebase
#中止基準(zhǔn)
git rebase --abort
#解決沖突后繼續(xù)進(jìn)行基準(zhǔn)
git rebase --continue
#使用您配置的合并工具解決沖突
git mergetool
#使用編輯器手動(dòng)解決沖突,并(在解決之后)將文件標(biāo)記為已解決
git add
git rm
撤消
#丟棄工作目錄中的所有本地更改
git reset --hard HEAD
#放棄特定文件中的本地更改
git checkout HEAD
#還原提交(通過產(chǎn)生具有相反更改的新提交)
git revert
#將HEAD指針重置為上一次提交 …并丟棄此后的所有更改
git reset --hard
#…并將所有更改保留為未分階段的更改
git reset
#…并保留未提交的本地更改
git reset --keep
提交相關(guān)更改
提交應(yīng)該是相關(guān)更改的包裝。 例如,修復(fù)兩個(gè)不同的錯(cuò)誤應(yīng)產(chǎn)生兩個(gè)單獨(dú)的提交。 小型提交使其他開發(fā)人員更容易理解更改,并在出現(xiàn)問題時(shí)將其回滾。 借助暫存區(qū)等工具以及僅暫存文件部分的功能,Git使得創(chuàng)建非常精細(xì)的提交變得容易。
經(jīng)常提交
提交通常會(huì)使您的提交變小,并且再次幫助您僅提交相關(guān)的更改。 而且,它使您可以更頻繁地與他人共享代碼。 這樣,每個(gè)人都可以更輕松地定期集成更改,避免合并沖突。 相比之下,大型提交很少且很少共享,因此很難解決沖突。
不要做半成品
您只應(yīng)在完成代碼后提交代碼。 這并不意味著您在提交之前必須先完成一個(gè)完整的大型功能。 恰恰相反:將功能的實(shí)現(xiàn)分成邏輯塊,并記住提早并經(jīng)常提交。 但是,不要承諾在一天結(jié)束離開辦公室之前在存儲(chǔ)庫中存放一些東西。 如果您只是因?yàn)樾枰蓛舻墓ぷ鞲北荆▉砗灣龇种?,進(jìn)行更改等)而打算提交,請考慮改用Git的“隱藏”功能。
提交之前的測試代碼
抵制誘惑,以完成您“認(rèn)為”的事情。 對其進(jìn)行徹底的測試,以確保它確實(shí)完成并且沒有副作用(據(jù)人們所知)。 雖然只需要原諒自己在本地存儲(chǔ)庫中提交的東西,但是在與他人推送/共享代碼時(shí),測試代碼就顯得尤為重要。
寫好的提交信息
首先以簡短的更改摘要(最多50個(gè)字符為準(zhǔn)則)開始您的消息。 通過包含空白行將其與后續(xù)正文分開。 郵件正文應(yīng)提供以下問題的詳細(xì)答案:
?改變的動(dòng)機(jī)是什么?
?它與以前的實(shí)現(xiàn)有何不同?
使用命令式現(xiàn)在時(shí)態(tài)(“ change”,而不是“ changed”或“ changes”)與git merge等命令生成的消息保持一致。
版本控制不是備份系統(tǒng)
將文件備份到遠(yuǎn)程服務(wù)器上是擁有版本控制系統(tǒng)的一個(gè)很好的副作用。 但是,您不應(yīng)像將其用作備份系統(tǒng)那樣使用VCS。 在進(jìn)行版本控制時(shí),您應(yīng)注意語義上的提交(請參閱“相關(guān)更改”)-您不應(yīng)該只是在文件中塞入。
使用分支
分支是Git最強(qiáng)大的功能之一-并不是偶然的:從一開始,快速便捷的分支就成為了中心需求。 分支是完美的工具,可幫助您避免混淆不同的開發(fā)路線。 您應(yīng)該在開發(fā)工作流程中廣泛使用分支:有關(guān)新功能,錯(cuò)誤修復(fù),想法…
同意工作流程
Git讓您從許多不同的工作流程中進(jìn)行選擇:長期運(yùn)行的分支,主題分支,合并或重新設(shè)置,git-flow…您選擇哪個(gè)取決于兩個(gè)因素:項(xiàng)目,整體開發(fā)和部署工作流程以及(也許 最重要的是),以了解您和您的隊(duì)友的個(gè)人喜好。 無論您選擇工作,只要確保在每個(gè)人都遵循的通用工作流程上達(dá)成一致即可。
幫助和文檔
在命令行獲取幫助
$ git help
成您“認(rèn)為”的事情。 對其進(jìn)行徹底的測試,以確保它確實(shí)完成并且沒有副作用(據(jù)人們所知)。 雖然只需要原諒自己在本地存儲(chǔ)庫中提交的東西,但是在與他人推送/共享代碼時(shí),測試代碼就顯得尤為重要。
寫好的提交信息
首先以簡短的更改摘要(最多50個(gè)字符為準(zhǔn)則)開始您的消息。 通過包含空白行將其與后續(xù)正文分開。 郵件正文應(yīng)提供以下問題的詳細(xì)答案:
?改變的動(dòng)機(jī)是什么?
?它與以前的實(shí)現(xiàn)有何不同?
使用命令式現(xiàn)在時(shí)態(tài)(“ change”,而不是“ changed”或“ changes”)與git merge等命令生成的消息保持一致。
版本控制不是備份系統(tǒng)
將文件備份到遠(yuǎn)程服務(wù)器上是擁有版本控制系統(tǒng)的一個(gè)很好的副作用。 但是,您不應(yīng)像將其用作備份系統(tǒng)那樣使用VCS。 在進(jìn)行版本控制時(shí),您應(yīng)注意語義上的提交(請參閱“相關(guān)更改”)-您不應(yīng)該只是在文件中塞入。
使用分支
分支是Git最強(qiáng)大的功能之一-并不是偶然的:從一開始,快速便捷的分支就成為了中心需求。 分支是完美的工具,可幫助您避免混淆不同的開發(fā)路線。 您應(yīng)該在開發(fā)工作流程中廣泛使用分支:有關(guān)新功能,錯(cuò)誤修復(fù),想法…
同意工作流程
Git讓您從許多不同的工作流程中進(jìn)行選擇:長期運(yùn)行的分支,主題分支,合并或重新設(shè)置,git-flow…您選擇哪個(gè)取決于兩個(gè)因素:項(xiàng)目,整體開發(fā)和部署工作流程以及(也許 最重要的是),以了解您和您的隊(duì)友的個(gè)人喜好。 無論您選擇工作,只要確保在每個(gè)人都遵循的通用工作流程上達(dá)成一致即可。
幫助和文檔
在命令行獲取幫助
$ git help
參考文檔:https://blog.csdn.net/bjbz_cxy/article/details/116703787?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171556069016800215027741%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=171556069016800215027741&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-116703787-null-null.142v100pc_search_result_base2&utm_term=git&spm=1018.2226.3001.4187
柚子快報(bào)邀請碼778899分享:git使用及github
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。