使用 github 做代碼管理,知道這些就夠了


只要掌握了下面的常用命令,基本上用使用 github 就沒有問題。github 有兩種認證方式,一種是通過 ssh 私鑰的方式,一種通過 https 的賬號名和密碼。ssh 方式需要創建本地秘鑰並且添加到個github 上,操作起來略顯麻煩,本篇完全介紹以 https 方式管理。

主要原理說明

git 的管理依賴於在你本地倉庫的目錄中存在一個 .git 目錄的,里面有 config、HEAD 等文件。

HEAD 里面是標識當前所在的分支,內容如下,表示當前在 dev 分支下,之后的拉取和推送都是在 dev 分支下完成:

ref: refs/heads/dev

config 里配置一些參數,如倉庫地址、remote 等

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = true
[remote "origin"]
	url = https://username:password@github.com/huzhicheng/test__11.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

其中,url 參數是重點,表示遠程倉庫地址,正常的遠程倉庫格式為 https://github.com/huzhicheng/test__11.git,而這里,並且包括下面用到的都是 https://username:password@github.com/huzhicheng/test__11.git 這種格式。其中username 表示 github 賬號,后面冒號分隔,接一個密碼,也就是 github 密碼,然后用 @ 符號連接上遠程倉庫。

用 https 方式連接 github 項目就是這么簡單。

##初始化本地倉庫

假設我們要在 github 上維護一個項目。首先,要登錄 github 賬號,點擊 “New repository”,輸入項目名稱,即可成功創建項目倉庫,之后會提示如下內容:

echo "# 初始化倉庫" >> README.md
git init
git add README.md
git commit -m "first commit"

做上面這些操作之前,我們需要在機器上創建一個空白目錄,然后進入這個目錄進行操作。

第一行,是說新建一個 README.md 文件,並且寫上你自定義的內容;

第二行,通過 git init 命令做本地倉庫的初始化;

第三行,將 README.md 添加到暫存區;

第四行,提交暫存區並寫好注釋說明。

本地倉庫和遠程倉庫創建聯系

本地創建完倉庫后,需要把本地倉庫和遠程倉庫建立聯系,這樣之后才能推送文件到遠程倉庫。

git remote add origin https://username:password@github.com/huzhicheng/test__11.git

移除本地倉庫和遠程倉庫的關聯

如果遠程倉庫作廢或者添加了錯誤的遠程倉庫地址,可以用下面的命令移除掉。注意 origin 后面的內容需要和關聯遠程倉庫時填寫的內容一致才可以。

git remote rm origin https://username:password@github.com/huzhicheng/test__11.git

首次提交

git push -u origin master

推送本地修改到遠程

推送前一定要先拉取最新代碼,並且每次修改前及時拉取最新代碼是非常好的習慣。

//拉取最新代碼
git pull origin master 

//查看本地倉庫狀態
git status 

// 將所有修改更新至暫存區
git add .

// 提交暫存區更改 並寫上明確的注釋說明
git commit -m "注釋內容"

// 提交修改至主分支
git push origin master

以上操作就可以完成從倉庫初始化到文件提交的完整過程了。

那如果是參與已經存在的項目呢,遠程倉庫已經存在並且已有項目文件在了,下面介紹如何參與已有項目。

將遠程倉庫同步到本地

首先需要 clone 遠程倉庫到本地,然后拉取新代碼就可以了,就是這么簡單。

git clone https://username:password@github.com/username/xxxxxx.git

git remote -v    可以查看遠程倉庫版本

git fetch origin master 拉取遠程倉庫更新

強制覆蓋本地文件

有時候臨時在本地倉庫做了修改,但是不想保留,再拉取更新的時候要強制覆蓋本地文件,可以用如下命令。

git fetch --all
git reset --hard origin/master
git pull

解決沖突

有時候我們可能和別人同時修改了某一個文件,提交的時候發現文件已經被別人修改,並且提交了。這時,如果我們再提交文件的話會出現如下錯誤:

To https://github.com/huzhicheng/test__11.git
 ! [rejected]        dev -> dev (fetch first)
error: failed to push some refs to 'https://github.com/huzhicheng/test__11.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

按照提示,我們嘗試 git pull origin dev 獲取最新版本,通常又會出現如下問題:

From https://github.com/huzhicheng/test__11
 * branch            dev        -> FETCH_HEAD
   e6bb7ea..c04d142  dev        -> origin/dev
Auto-merging dev.md
CONFLICT (content): Merge conflict in dev.md
Automatic merge failed; fix conflicts and then commit the result.

意思是說,獲取新版本嘗試自動合並,但是合並失敗,請修復沖突並提交。

這時我們打開沖突的文件,會看到有 <<<<<<< HEAD=======>>>>>>> 這些符號,留下要合並的最后內容。然后再執行命令:

git  add  -u
git commit -m "解決沖突"
git pull  origin dev
git push origin dev

建立並切換到新分支

如果項目中存在多個分支,例如主分支和開發分支,我們在本地創建同樣的分支結構使用如下命令,創建 dev 分支,並且切換到 dev 分支 。

// 創建分支並且切換到這個分支下
git checkout -b dev

// 切換到某分支
git  checkout dev
git checkout master

查看所在分支

其中前面帶 * 號的為當前所在的分支。

$ git branch

* dev
  master

分支合並

我們之前假設已經在 dev 分支上做了一些修改,可以發布版本之后,想要合並到 master 分支上。

首先使用 git checkout master 切換到 master 分支,然后執行 git merge dev 命令進行 dev 分支到 master 分支的合並。

$ git merge dev
Updating 1dd1bb5..5fe81cd
Fast-forward
 dev.md | 6 ++++++
 1 file changed, 6 insertions(+)

公眾號:古時的風箏
掃碼關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM