之前公司項目一直在使用SVN作為項目代碼版本控制,最近我想整理下項目中iOS端CC視頻SDK封裝,CC移動端SDK本身只提供視頻播放信息以及播放器初始化,因此需要自定義播放器的控制邏輯。當整理好了代碼準備分享時,發(fā)現(xiàn)還是Git才是版本控制的王道。
首先,要使用Git需要在GitHub上注冊一個自己的賬號
初始賬號默認只能免費創(chuàng)建公共倉庫,首先Create a New Repository
第二部,下載安裝GitHub客戶端
Mac版GitHub
Windows版GitHub
Linux版GitHub
桌面版GitHub
配置Git
以下為在Mac環(huán)境上配置Git。
想要通過本地上傳代碼至GitHub中,必須得有一份ssh key用于驗證身份。
創(chuàng)建ssh key:
$ ssh-keygen -t rsa -C "example@youremail.com"
example@youremail.com修改為GitHub上注冊的郵箱,之后要求確認路徑和密碼,三次回車即可。
$ open ~/.ssh
創(chuàng)建ssh文件后,進入~/.ssh文件夾,會有id_rsa和id_rsa.pub兩個文件。id_rsa為私鑰,自己保存好;id_rsa.pub為公鑰,用于提供給他人使用。
打開id_rsa.pub后復制全部內容,在GitHub中,創(chuàng)建SSH時,title可隨意填寫,key為id_rsa.pub內的復制內容。完成后,還需要輸入:
$ ssh -T git@github.com
如果是第一次會提示是否continue,輸入yes就會看到:You've successfully authenticated, but GitHub does not provide shell access 。這就表示已成功連上github
此時GitHub中的ssh key左側的鑰匙圖標會變?yōu)榫G色。
此外,還需要配置GitHub全局的用戶名與郵箱。
$ git config --global user.name "Your Name"
$ git config --global user.email "example@youremail.com"
在GitHub創(chuàng)建完項目時,GitHub會提示如何創(chuàng)建新倉庫與push已存在的倉庫。
因為是將已有的項目文件第一次上傳,所以,首先進入項目路徑下,并創(chuàng)建一個README.md文件
$ touch README.md
$ git init
$ git add *
$ git commit -m "此處可添加提交代碼相關的注釋"
$ git remote add origin https://github.com/yourUserName/repositoryName.git
$ git push -u origin master
上述命令中,分別作用為:
- 在項目中創(chuàng)建README.md文件;
- 初始化git倉庫;
- 向git添加所在目錄下的所有文件;
- 添加提交說明;
- 添加一個新的倉庫并連接到指定的遠程服務器上,https://github.com/yourUserName/repositoryName.git就是在GitHub上創(chuàng)建倉庫的URL;
- 推送提交項目中的改動至遠程服務器,master可以修改為想要推送的任意分支,此處master為默認分支。
此時,已經(jīng)把項目上傳到了GitHub指定的遠程倉庫中,目的完成。
工作流程
Git本地倉庫實際上由三個tree組成,1.工作目錄,持有實際文件 2. 暫存區(qū),臨時保存改動 3. HEAD,指向最后一次提交的結果
$ git add (文件名)
上述命令表示本地提出更改,添加至暫存區(qū)
$ git commit -m "代碼注釋信息"
上述命令表示改動已提交至HEAD,當改動在HEAD中時就可執(zhí)行以下命令提交推送至遠端倉庫:
$ git push origin (指定分支名稱)
克隆
創(chuàng)建本地倉庫的克隆版本:
$ git clone /path/to/repository
創(chuàng)建遠端服務器上的克隆版本:
$ git clone username@host:/path/to/repository
分支
創(chuàng)建倉庫時,默認只有master分支,創(chuàng)建其它分支后可在分支上開發(fā),完成后合并到主分支上。
創(chuàng)建名為“feature”并切換到該分支:
$ git checkout -b (分支名)
切換其它分支:
$ git checkout (分支名)
刪除分支:
$ git branch -d (分支名)
更新
多人開發(fā)時,在push前一定要先更新本地倉庫至最新改動,避免許多不必要的沖突:
$ git pull
合并,將指定分支合并到當前分支中:
$ git merge (指定要合并分支名)
在合并過程中,會出現(xiàn)Fast-forward詞。出現(xiàn)此情況時,當前所在分支所指向的是要提交合并分支的直接上游,當試圖合并兩個分支時,若順著一個分支能夠到達另一分支,Git只會將指針向前推進,合并操作中沒有解決的分歧。合并完成后,可以刪除之前被合并的分支。
當合并遇到?jīng)_突時,查看因包含沖突而處于未合并狀態(tài)的文件:
$ git status
當解決掉沖突之后,需要使用git add (指定文件)來將其標記為沖突已解決。
合并改動之前,可以用命令瀏覽版本差異:
$ git diff (原分支) (目標分支)
標簽
將發(fā)布的版本進行標簽標記:
$ git tag 1.1.1 xxxxxxxxxx
xxxxxxxxxx是要標記的提交ID,可使用以下命令獲?。?/p>
$ git log
撤銷本地改動
$ git checkout --(filename)
會將HEAD中的最新內容替換掉當前工作目錄中的內容,已添加到暫存區(qū)的改動以及新文件不受影響
若想放棄所有改動和提交,可將遠端倉庫中的版本獲取至本地,并將主分支指向它:
$ git fetch origin
$ git reset --hard origin/master
該文章首次發(fā)表在 簡書:我只不過是出來寫寫代碼 博客,并自動同步至 騰訊云:我只不過是出來寫寫iOS 博客