前言
由于公司使用的 git 來(lái)管理項(xiàng)目的版本迭代問(wèn)題,天天使用,可以說(shuō)是非常重要的內(nèi)容。以前都是將一些相關(guān)的命令行和操作記在筆記本上,但是最近拿出筆記本來(lái)才發(fā)現(xiàn),記錄的太過(guò)凌亂,因此也來(lái)寫一篇文章來(lái)整理一下,以便以后方便使用。畢竟好記性不如爛筆頭嘛。
git 的相關(guān)說(shuō)明
Git是一款免費(fèi)、開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。
百度百科
使用 git 版本管理工具一般是用命令行進(jìn)行操作,當(dāng)然也有可視化工具,這就看自己的愛(ài)好了。
工具的選擇
1、可以直接打開(kāi)本地的命令行工具,進(jìn)入到自己項(xiàng)目所在的文件夾下,進(jìn)行操作即可
2、使用 git 工具打開(kāi)(git 相關(guān)的工具也有多種,這里使用的是 git version2.9.2)。在項(xiàng)目文件夾下右鍵選擇 git bash here,即可進(jìn)行操作
準(zhǔn)備工作
1、下載安裝 git 工具(這里使用的是 git version2.9.2)。在任意文件夾下右鍵出現(xiàn) git bash here 等字樣,說(shuō)明安裝成功。
2、選擇項(xiàng)目工作空間(建議:這里選擇一個(gè)單獨(dú)的文件夾,里面僅僅是項(xiàng)目使用,避免與其他文件混淆,便于操作)。工作空間的選擇主要是用于創(chuàng)建項(xiàng)目倉(cāng)庫(kù)使用。
3、Mac 環(huán)境下進(jìn)行配置和安裝
(1) cd~/.ssh:檢查是否有ssh密鑰,如果沒(méi)有提示:no such file or directory
(2) 如果有已存在的ssh密鑰,需要進(jìn)行備份一下并刪除,執(zhí)行
config id_rsa id_rsa.pub known_hosts
mkdir key_backup #在當(dāng)前目錄下創(chuàng)建一個(gè)叫"key_backup"的文件夾
cp id_rsa* key_backup #復(fù)制id_rsa和id_rsa.pub到key_backup里面
rm id_rsa*
(3) 創(chuàng)建一個(gè)新的ssh密鑰
ssh-keygen -t rsa -C "你的郵箱"
然后一路enter即可,需要輸入密碼的正確輸入
現(xiàn)實(shí)一個(gè)方形圖表示創(chuàng)建成功
(4) 在你的GitHub上setting里面新建ssh
(5) 在你本地的.ssh/id_rsa.pub里面的全部復(fù)制到GitHub上保存
(6) 確認(rèn)連接 ssh -T git@github.com 或者ssh git@github.com
(7) 設(shè)置你的用戶名和郵箱
git config --global user.name "your name"
git config --global user.email "your email"
(8) 將遠(yuǎn)程的代碼克隆下來(lái)
git clone git@github.com*
指定文件夾路徑 git clone git@github.com*** file/files(文件夾路徑)
等著下載完即可,這個(gè)過(guò)程比較慢,或者使用下面的步驟也可
以上的(1)-(8)步驟在 windows 系統(tǒng)上同樣適用
創(chuàng)建項(xiàng)目倉(cāng)庫(kù)
有兩種方式創(chuàng)建項(xiàng)目倉(cāng)庫(kù):
1、是在現(xiàn)存的目錄下,通過(guò)導(dǎo)入所有文件來(lái)創(chuàng)建新的 Git 倉(cāng)庫(kù)(git init)
2、從已有的遠(yuǎn)端 Git 倉(cāng)庫(kù)克隆出一個(gè)新的鏡像倉(cāng)庫(kù)來(lái)(git clone)
git init 初始化本地倉(cāng)庫(kù)
要對(duì)現(xiàn)有的某個(gè)項(xiàng)目開(kāi)始用 Git 管理,只需到此項(xiàng)目所在的目錄,執(zhí)行:git init
git clone 是將遠(yuǎn)程的代碼倉(cāng)庫(kù)復(fù)制到本地
需要獲得遠(yuǎn)程代碼倉(cāng)庫(kù)的 URL(兩種方式:ssh 和 https)
3、創(chuàng)建分支 (git branch -b branch_name)
4、查看分支 (git branch:查看本地分支,git branch -a:查看所有分支,包括遠(yuǎn)程分支)
5、刪除分支 (git delete -d branch_name:刪除已經(jīng) merge 到本分支的分支,git delete -D branch_name:刪除分支)
6、切換分支 (git checkout branch_name)
在這里創(chuàng)建分支是很常用的功能,創(chuàng)建分支后,我們可以將任務(wù)拆分,然后完成后合并,提高工作效率。
創(chuàng)建分支時(shí),一般我們選擇一個(gè)根分支,在這個(gè)分支的基礎(chǔ)上創(chuàng)建分支,這樣我們可以獲得根分支上的所有代碼,并進(jìn)行其他操作,在 -b 后面加上分支名即可
查看分支是,我們可以查看本地和遠(yuǎn)程的分支列表,進(jìn)而進(jìn)行相應(yīng)的操作,比如刪除、切換分支等
刪除分支時(shí),使用 -d 時(shí)會(huì)判斷,刪除的分支是否已經(jīng)合并到你當(dāng)前的分支上,如果沒(méi)有則刪除失敗。-D 會(huì)直接進(jìn)行刪除。
在獲取分支列表后,就可以使用 checkout 進(jìn)行切換分支了
7、查看修改的文件列表(git status)
8、添加修改文件(git add file_name)
9、清除修改(在尚未提交的情況下:git checkout file_name)
使用 status 會(huì)打印出當(dāng)前分支的所有改變的文件
這是 checkout 的另一種使用方法,就是可以根據(jù)需要還原文件,后面跟上文件名即可
10、提交代碼(git commit )
11、提交代碼(git push origin branch_name)
12、修改沖突流程(git fetch branch_name,git rebase origin/develop, git rebase --continue,git add file_name,git push -f branch_name,git merge branch_name)
git commit :是將代碼提交到本地緩存區(qū)
git push origin branch_name:將緩存區(qū)代碼提交到遠(yuǎn)程倉(cāng)庫(kù)
一般正常的流程是:
git status:查看修改文件
git add file_name:添加修改文件
git commit:將修改的文件添加到本地緩存區(qū)
git push origin branch_name:提交到遠(yuǎn)程倉(cāng)庫(kù)
在這里是最復(fù)雜的一步,當(dāng)我們?cè)谔峤淮a的時(shí)候可能會(huì)出現(xiàn)我們的分支與其他同事的分支沖突的情況(同時(shí)修改同一個(gè)地方),因此我們要根據(jù)需要進(jìn)行解決,將沖突部分刪除,保留正確的代碼。
命令的使用步驟是:
git fetch branch_name:將遠(yuǎn)程分支的代碼全部拉取到本地
git rebase origin/develop:查看所有沖突,并解決
git add file_name:將解決的沖突加入到緩存區(qū)
git rebase --continue:解決完上一個(gè)沖突后,繼續(xù)執(zhí)行 rebase 查看下一個(gè)沖突部分
上面的兩部其實(shí)也可以使用 git merge branch_name 來(lái)完成,大致一樣
git push -f branch_name:將解決完沖突的代碼強(qiáng)制推送到遠(yuǎn)程分支,并覆蓋(這一步非必須做,盡量不要做,可能會(huì)導(dǎo)致丟失代碼)
13、查看提交列表(git log)
14、還原提交(在提交代碼的情況下:git resert commit_name)
在提交完代碼后我們可以通過(guò)打 log 的方式,查看提交的列表
如果對(duì)于某次提交的功能進(jìn)行還原,則可以使用 resert
15、保存工作進(jìn)度(git stash)
16、查看進(jìn)度列表(git stash list)
17、回到進(jìn)度(git stash pop/apply stash@{進(jìn)度ID})
18、刪除進(jìn)度(git stash drop stash@{進(jìn)度ID})
這個(gè)功能適用于,當(dāng)我們?cè)陂_(kāi)發(fā)一個(gè)功能時(shí),突然有其他任務(wù)需要我們臨時(shí)處理,但是本地的代碼又不至于提交一次(中間含有很多調(diào)試代碼和 Log.e()……都懂的)這樣的場(chǎng)景,我們只需要將進(jìn)度保存,就可以回到分支無(wú)修改狀態(tài),這時(shí)就可以切換分支,等完成其他任務(wù),再切回分支,返回進(jìn)度即可。
創(chuàng)建本地倉(cāng)庫(kù)并上傳到遠(yuǎn)端
1、使用命令行工具,cd 到你的項(xiàng)目的文件夾下,使用 git init
2、然后 git add README.md,添加 README 文件
3、將本地文件添加到暫存區(qū)里面,使用 git add ,然后 git commit -m "first commit" 提交到本地倉(cāng)庫(kù)
4、在自己的 github 上創(chuàng)建一個(gè)新倉(cāng)庫(kù),復(fù)制倉(cāng)庫(kù)的 URL
5、使用 git remote add origin URL 關(guān)聯(lián)到遠(yuǎn)程倉(cāng)庫(kù)
6、將本地代碼推到遠(yuǎn)程倉(cāng)庫(kù)中去,git push -u origin master
寫在最后
這篇文章拖了很久,后來(lái)發(fā)現(xiàn)還是寫完比較好,畢竟善始善終嘛。這里只是用于記錄一些 git 最基本的使用命令,至于原理什么的可以到 git 官網(wǎng)進(jìn)行學(xué)習(xí),不過(guò)暫時(shí)只想到這么多,其實(shí) git 的使用還有很多,希望大家多多查閱資料進(jìn)行補(bǔ)充。如有錯(cuò)誤,歡迎大家糾正,以便進(jìn)一步修改。
最后一句
希望自己能以開(kāi)始的夢(mèng)想為目的,不要偏離了自己的初衷。
推薦一個(gè) git 的學(xué)習(xí)網(wǎng)站
花絮:最近突然看到了 git 的誕生史,再次感慨大神就是大神啊,有興趣的可以 look look