Git
開始大量寫代碼做自己的項目遥赚、實現(xiàn)想法后畦徘,越來越覺得需要一個好的版本管理器來管理自己的代碼。Git是一個大家都推薦的版本管理器旬陡,所以我也開始自己摸索拓颓。在別人那里看了學(xué)習(xí)了命令后,在用的過程中總是會忘記描孟。所以我在這里把自己用過的命令總結(jié)一下驶睦,在自己忘記后好回來復(fù)習(xí)。
Git 連接 Github
1匿醒、 配置本機(jī)git
$ git config --global user.name "name"
$ git config --global user.email "your-email"
2场航、 生成密鑰
$ ssh-keygen -t rsa -C "your-email"
3竞穷、 提交密鑰
$ /home/linux/.ssh/id_rsa.pub #Linux 系統(tǒng)密鑰位置
$ /c/User/admin/.ssh/id_rsa.pub #Windows 系統(tǒng)密鑰位置
復(fù)制密鑰笨触,到 github網(wǎng)頁中登錄自己的賬號廷臼,然后在 setting 里找到 SSH KEY 国葬,新建 SSH KEY 將復(fù)制的密鑰加入
4于颖、 檢驗是否鏈接上了github
$ ssh git@github.com
//正常情況下国章,回顯如下
PTY allocation request failed on channel 0
Hi plinx! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
如果返回錯誤
$ ssh: connect to host ssh.github.com port 22: Connection timed out
那么
$ cd ~/.ssh
$ touch config
在 .ssh
目錄下創(chuàng)建一個 config 文件愿阐,輸入如下內(nèi)容:
Host github.com
User "your-email"
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
再進(jìn)行測試是否鏈接上github.com
$ ssh -T git@github.com
Git 命令
-
克隆項目
$ git clone https://github.com/program owner/program.git
-
提交更改
$ git add file # file為你要提交到暫存區(qū)的文件 $ git commit -m "note" # 從暫存區(qū)提交到版本庫才写,并添加操作 注釋 note $ git diff HEAD -- file #查看工作區(qū)和版本庫里最新版本的區(qū)別
-
撤銷修改
$ git checkout -- file
-
關(guān)聯(lián)遠(yuǎn)程倉庫(本地庫可以和多個遠(yuǎn)程庫關(guān)聯(lián))
$ git remote #查看當(dāng)前配置有哪些遠(yuǎn)程倉庫竹挡,列出已經(jīng)存在的遠(yuǎn)程分支 $ git remote add learngit git@github.com:michaelliao/learngit.git # 關(guān)聯(lián)github $ git remote add learngit git@gitee.com:michaelliao/program.git # 關(guān)聯(lián)碼云 $ git remote -v # 查看遠(yuǎn)程庫信息 $ git remote rm learngit # 刪除已關(guān)聯(lián)的遠(yuǎn)程庫 github
-
分支
首先镀娶,創(chuàng)建
laptop
分支,然后切換到該分支$ git branch laptop $ git checkout laptop #當(dāng)然揪罕,也可以用一行命令代替 git checkout -b laptop
然后梯码,在分支
dev
下進(jìn)行各種文件操作宝泵,將操作提交到版本庫,分支dev
工作完成后切換回master
分支$git checkout master
現(xiàn)在轩娶,將分支
dev
工作合并到master
分支:git merge dev # git merge 命令用于合并指定分支到當(dāng)前分支
合并完成后儿奶,就可以放心刪除
dev
分支了:git branch -d dev
刪除后,查看
branch
, 就只剩下master
分支了:$ git branch
用
git log --graph
可以查看分支合并圖 -
Bug 分支
當(dāng)程序遇到bug時鳄抒,可以通過一個新的臨時分支來修復(fù)廓握,修復(fù)后,合并分支嘁酿,然后將臨時分支刪除隙券。
比如,你臨時接到一個立即修復(fù)代號為101的bug任務(wù)闹司,你想創(chuàng)建一個分支
issue-101
來修復(fù)它娱仔, 但你手頭正在dev
分支上進(jìn)行的工作還沒提交,而且工作只進(jìn)行到一半游桩。這時牲迫,
git stash
可以把當(dāng)前工作現(xiàn)場儲藏起來,等以后恢復(fù)現(xiàn)場后繼續(xù)工作回到
dev
后借卧,用git stash list
命令查看工作現(xiàn)場盹憎。git stash apply stash@{n} #對于多次stash,恢復(fù)指定的工作現(xiàn)場铐刘,stash并不刪除陪每, 可用 git stash drop 刪除
git stash pop #恢復(fù)現(xiàn)場,同時刪除stash內(nèi)容
使用碼云 gitee.com
Github 上提供了 免費(fèi)的 公有 Git 倉庫镰吵,私有庫則需付費(fèi)檩禾。國內(nèi) Git 托管服務(wù) 碼云 則提供了免費(fèi)的 Git 倉庫,而且還包含免費(fèi)私有庫疤祭。 此外盼产,還集成了代碼質(zhì)量檢測,項目演示等功能勺馆。對于團(tuán)隊協(xié)作開發(fā)戏售,碼云還提供了項目管理、代碼托管草穆、文檔管理的服務(wù)灌灾,5人以下小團(tuán)隊免費(fèi)。
-
遠(yuǎn)程庫分支管理
對于一個項目開發(fā)续挟,遠(yuǎn)程庫可以創(chuàng)建兩個分支紧卒,其中包括一個
master
分支 和 一個測試分支,master
分支用于發(fā)布穩(wěn)定版本诗祸,所以最好給予protect branch
保護(hù)分支權(quán)限跑芳,項目管理員來推送穩(wěn)定版。 測試分支用于正常開發(fā)直颅,項目成員均在該分支上進(jìn)行開發(fā)博个,待測試通過后由管理員將該分支merge
進(jìn)master
分支。git branch -a
可以查看本地及遠(yuǎn)程分支功偿。比如遠(yuǎn)程庫的測試分支名為test
盆佣,那么項目成員從遠(yuǎn)程庫拉取代碼:$ git pull <local branch name> test
工作完成后進(jìn)行推送
$ git push <local branch name> tests
Git remote 用法
git rename <old> <new>