Git----筆記

初始化git倉(cāng)庫(kù):

git init

自報(bào)家門(mén):

git config --global user.name "xxxx"

git config --global user.email "xxxx"

把文件添加到倉(cāng)庫(kù)(添加前必須文件已存在):

git add readme.txt

提交到倉(cāng)庫(kù):

git commit -m "xxxxx"

xxxxx:本次提交說(shuō)明

查看目前git狀態(tài):

git status

察看提交歷史記錄:

git log

如果煙花繚亂,可以加上參數(shù):

git log --pretty=oneline

回滾到上一版本:

git reset --hard HEAD^

再回到未來(lái)某個(gè)版本:

git reset --hard xxxxxxx

git提供了一個(gè)git reflog命令來(lái)記錄你的每一次命令。

git reflog

git add實(shí)際上是把文件修改添加到暫存區(qū)

git commit實(shí)際上是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。

當(dāng)你亂修改工作區(qū)的內(nèi)容,想丟棄工作區(qū)的修改:

git checkout -- file

當(dāng)你不但亂改了工作區(qū)的內(nèi)容,還修改了暫存區(qū)的內(nèi)容,想丟棄修改,分兩步:

1:git reset HEAD file

2: git checkout -- file

假設(shè)你刪除了某個(gè)文件,有兩個(gè)選擇,第一是你確實(shí)想刪除某個(gè)文件,那就是:

git rm file

第二就是在你刪錯(cuò)了,想還原,那就是:

git checkout -- file

創(chuàng)建sshkey:

ssh-keygen -t rsa -C "youemail@example.com"

接下來(lái)一路回車(chē),生成兩個(gè)文件:id_rsa是私匙,不能泄露。id_rsa.pub是公匙。可以放心告訴任何人

登陸github,add ssh key,title任意填寫(xiě),key里邊粘貼id_rsa.pub內(nèi)容即可。

遠(yuǎn)端先創(chuàng)建一個(gè)倉(cāng)庫(kù),點(diǎn)擊Create a new repo,填寫(xiě)倉(cāng)庫(kù)名字learngit,其他默認(rèn),點(diǎn)擊Create repository。

關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù):

git remote add origin git@github.com:guangmangdz/learngit.git

接下來(lái)再推送:

git push -u origin master,實(shí)際上就是把當(dāng)前分支推送到遠(yuǎn)程。由于遠(yuǎn)端庫(kù)是空的,所以加了-u參數(shù),以后可以不加。

從現(xiàn)在起,只要本地做了提交,就可以通過(guò)命令:

git push origin master,把本地master分支最新更改推送之github。

從遠(yuǎn)程庫(kù)克隆:

git clone git@github.com:xxxxxxxx/xxxxx.git

接下來(lái):分支管理

創(chuàng)建分支,例如dev:

git checkout -b dev

也可以用一下兩條命令創(chuàng)建:

git branch dev,創(chuàng)建dev分支

git checkout dev,切換到dev分支

列出當(dāng)前分支:

git branch

合并分支:

git merge dev,操作前提是已經(jīng)處于master分支狀態(tài)

合并完成后,就可以放心的刪除dev分支了:

git branch -d dev

察看git分支合并圖:

git lob --graph

正常的合并是fast forward模式,當(dāng)然也可以禁用:

git merge --no-ff -m "merge with no-ff" dev

首先,master分支應(yīng)該是非常穩(wěn)定的,也就是用來(lái)發(fā)布新版本,平時(shí)不用在上面干活。干活都在dev分支上,也就是說(shuō),你和你的小伙伴們每個(gè)人都在dev分支上干活,每個(gè)人都有自己的分支,是不是的往dev分支上合并就可以了。

bug分支:

假如這種情況,你正在dev分支下寫(xiě)代碼,但還沒(méi)寫(xiě)完,又不能提交,而此時(shí)接到一個(gè)緊急處理bug的緊急任務(wù),且該人物來(lái)源于master分支。可以先用git stash將當(dāng)前工作現(xiàn)場(chǎng)儲(chǔ)存起來(lái)。

bug解決完了,再回到dev分支,如何恢復(fù)現(xiàn)場(chǎng)?

1:git stash apply,恢復(fù)后,stash不刪除,需要調(diào)用git stash drop

2: git stash pop,恢復(fù)同時(shí)把stash內(nèi)容也刪除。

feature分支:

開(kāi)發(fā)過(guò)程中,有無(wú)窮無(wú)盡的新功能添加進(jìn)來(lái),但你不希望一些實(shí)驗(yàn)性質(zhì)的代碼把主分支搞亂了,所以,每添加一個(gè)新功能,最好新建一個(gè)feature分支,在上面開(kāi)發(fā)。

git checkout -b feature

開(kāi)發(fā)完成后,切回dev,準(zhǔn)備合并

git checkout dev

但是!突然該功能要求取消,必須銷(xiāo)毀這個(gè)分支:

git branch -d feature,正常的話會(huì)提示銷(xiāo)毀失敗,因?yàn)檫€未合并,所以就來(lái)了下面的命令:

git branch -D feature,強(qiáng)制刪除一個(gè)分支

多人寫(xiě)作:

察看遠(yuǎn)程庫(kù)信息:

git remote

加-v可以察看更詳細(xì)的信息:

git remote -v

推送分支:

git push origin master

git push origin dev

你的小伙伴想在dev分支下開(kāi)發(fā),就必須創(chuàng)建遠(yuǎn)程origin的dev分支到本地:

git checkout -b dev origin/dev

多人寫(xiě)作工作模式通常如下:

1、首先,試圖用git push origin branch-name推送自己的修改

2、如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull試圖合并

3、如果合并有沖突,則解決沖突,并在本地提交

4、沒(méi)有沖突或者解決沖突后,在用git push origin branch-name推送就能成功

5、如果git pull提示“no tracking infor...”,說(shuō)明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒(méi)有創(chuàng)建,用命令git branch --set-upstream branch-name origin/branch-name

標(biāo)簽管理:

發(fā)布一個(gè)新版本時(shí),通常大一個(gè)標(biāo)簽。這個(gè)標(biāo)簽唯一確定了打標(biāo)簽時(shí)刻的版本。標(biāo)簽也是版本庫(kù)的一個(gè)快照。

git tag xxx

察看所有標(biāo)簽:

git tag

給歷史某次提交的commit id打標(biāo)簽:

git tag vx.x xxxxxxx

創(chuàng)建帶說(shuō)明的標(biāo)簽:

git tag -a vx.x -m "tags shuoming" xxxxxxx

打錯(cuò)了標(biāo)簽,也可以刪除:

git tag -d Vx.x

推送某個(gè)標(biāo)簽到遠(yuǎn)程:

git push origin vx.x

一次性推送所有未推送的標(biāo)簽到遠(yuǎn)程:

git push origin --tags

刪除遠(yuǎn)程標(biāo)簽(需先刪除本地標(biāo)簽):

git tag -d v0.9

git push origin :refs/tags/v0.9

讓git顯示顏色:

git config --global color.ui true

git可以忽略特殊文件,所有配置文件在:

https://github.com/github/gitignore

.gitignore文件本身也需要放到版本庫(kù)里

最后說(shuō)說(shuō)搭建git服務(wù)器:

1、ubuntu或debian及其,安裝git

sudo apt-get install git

2、創(chuàng)建一個(gè)git用戶,用來(lái)運(yùn)行g(shù)it服務(wù)

sudo adduser git

3、創(chuàng)建證書(shū)登陸:

收集所有需要登陸的用戶的公匙,把所有公匙導(dǎo)入到home/git/.ssh/authorized_keys文件里,易行一個(gè)。

4、初始化git倉(cāng)庫(kù):

sudo git init --bare sample.git

5、把owner改為git:

sudo chown -R git:git sample.git

6、禁用shell登陸:編輯etc/passwd

git:x:1001:1001:,,,:/home/git:/bin/bash

改為

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,737評(píng)論 9 163
  • 對(duì)于一個(gè)新的包括submodule的項(xiàng)目調(diào)用以下命令即可 或者 配置 首先是配置帳號(hào)信息 ssh -T git@g...
    brownfeng閱讀 486評(píng)論 0 0
  • 其實(shí)很多教科書(shū)都是害人的,不僅書(shū)法一門(mén)。當(dāng)然,害人的老師也很多。如果你到現(xiàn)在沒(méi)有遇到書(shū)法老師,那趕緊燒香感謝老天...
    醉雨之閱讀 2,017評(píng)論 1 2
  • 新常態(tài)下應(yīng)有新思路,當(dāng)有新作為。日前,陜西出臺(tái)《陜西省黨政干部鼓勵(lì)激勵(lì)辦法(試行)》、《陜西省黨政干部容錯(cuò)糾錯(cuò)辦法...
    火藍(lán)筑夢(mèng)閱讀 538評(píng)論 0 0
  • 最近無(wú)心工作,找了個(gè)幌子幾天沒(méi)去上班。一個(gè)人呆在家里,仿佛與外邊的一切劃清了界限。我沉醉于這樣的獨(dú)處,平時(shí)偽裝太久...
    名叫慧的姑娘閱讀 153評(píng)論 0 2