將工程上傳至gitee倉庫進(jìn)行項(xiàng)目管理。配置Qt Creator推拉倉庫中代碼。
前言
Gitee是基于git分布式版本控制系統(tǒng)的國內(nèi)代碼托管平臺(tái),在團(tuán)隊(duì)進(jìn)行開發(fā)協(xié)作時(shí)有利于代碼的更新管理,同時(shí)其版本回退功能可以防止一些誤操作導(dǎo)致代碼發(fā)生不希望的修改。目前本人正在做一個(gè)基于Qt的項(xiàng)目,Qt Creator中集成了git的版本控制功能,本文用于記錄將代碼上傳至gitee的步驟和遇到的問題。這是我的第一篇文章,值得紀(jì)念~如果對你有幫助的話可以點(diǎn)個(gè)贊,謝謝大家。
- 系統(tǒng)版本 Ubuntu20.04
- git版本 2.25.1
- Qt Creator版本 5.14.0
Git的三種狀態(tài)
引用自git官方說明文檔。起步-Git-是什么?
Git 有三種狀態(tài),你的文件可能處于其中之一: 已提交(committed)、已修改(modified) 和 已暫存(staged)。
-
已修改表示修改了文件,但還沒保存到數(shù)據(jù)庫中。
-
已暫存表示對一個(gè)已修改文件的當(dāng)前版本做了標(biāo)記,使之包含在下次提交的快照中。
-
已提交表示數(shù)據(jù)已經(jīng)安全地保存在本地?cái)?shù)據(jù)庫中。
這會(huì)讓我們的 Git 項(xiàng)目擁有三個(gè)階段:工作區(qū)、暫存區(qū)以及 Git 目錄。工作區(qū)是對項(xiàng)目的某個(gè)版本獨(dú)立提取出來的內(nèi)容。 這些從 Git 倉庫的壓縮數(shù)據(jù)庫中提取出來的文件,放在磁盤上供你使用或修改。
暫存區(qū)是一個(gè)文件,保存了下次將要提交的文件列表信息,一般在 Git 倉庫目錄中。 按照 Git 的術(shù)語叫做“索引”,不過一般說法還是叫“暫存區(qū)”。
Git 倉庫目錄是 Git 用來保存項(xiàng)目的元數(shù)據(jù)和對象數(shù)據(jù)庫的地方。 這是 Git 中最重要的部分,從其它計(jì)算機(jī)克隆倉庫時(shí),復(fù)制的就是這里的數(shù)據(jù)。
基本的 Git 工作流程如下:
-
在工作區(qū)中修改文件。
-
將你想要下次提交的更改選擇性地暫存,這樣只會(huì)將更改的部分添加到暫存區(qū)。
-
提交更新,找到暫存區(qū)的文件,將快照永久性存儲(chǔ)到 Git 目錄。
如果 Git 目錄中保存著特定版本的文件,就屬于已提交
狀態(tài)。 如果文件已修改并放入暫存區(qū),就屬于已暫存
狀態(tài)。 如果自上次檢出后,作了修改但還沒有放到暫存區(qū)域,就是已修改
狀態(tài)。
一、在gitee上新建倉庫
在gitee上創(chuàng)建倉庫。
二、推送本地代碼
1.安裝git
打開終端,輸入命令。
$ sudo apt install git-all
2.配置git
設(shè)置用戶信息。
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
使用--global
選項(xiàng)后,每次提交都會(huì)使用這些全局信息,如果每個(gè)項(xiàng)目使用的信息不一樣,可以在項(xiàng)目文件夾下的終端運(yùn)行沒有--global
的命令,或是使用--local
選項(xiàng)(默認(rèn))。
查看所有配置和所在文件:
$ git config --list --show-origin
也可以通過git config <key>
查看某一字段的配置。
3.初始化倉庫
在工程目錄下打開終端,輸入命令:
$ git init
這樣就初始化了一個(gè)git倉庫,會(huì)在當(dāng)前目錄下生成一個(gè)/.git
文件夾。這個(gè)文件夾有時(shí)看不見是被隱藏了,按ctrl+h
就能顯示。
4.添加至?xí)捍鎱^(qū)
把工作區(qū)的所有文件添加至?xí)捍鎱^(qū):
$ git add .
這時(shí)/.git/object
文件夾下會(huì)生成很多文件夾,里面是工作區(qū)經(jīng)過壓縮后的哈希文件,/.git
下還有一個(gè)index文件,里面存的是哈希值對應(yīng)的文件名。
5.提交至本地倉庫
輸入命令:
$ git commit -m [message]
[message]
中輸入的是備注信息,如果沒有加-m
選項(xiàng),會(huì)自動(dòng)打開vi編輯器讓你在COMMIT_EDITMSG
文件中寫,沒有備注信息無法提交。
6.創(chuàng)建開發(fā)分支(可選)
不創(chuàng)建開發(fā)分支的話,默認(rèn)就是master主分支。
例如創(chuàng)建一個(gè)叫develop
的分支:
$ git branch develop
切換到該分支:
$ git checkout develop
輸入git status
可以查看當(dāng)前分支以及暫存區(qū)的狀態(tài),輸入git branch
可以查看所有分支和當(dāng)前所處分支。
7.關(guān)聯(lián)到遠(yuǎn)程Gitee倉庫
$ git remote add origin <倉庫地址>
注意倉庫地址是帶.git
后綴的。
8.上傳
push前首先要把gitee倉庫中已有的文件pull到本地,否則Gitee上有本地沒有的文件就會(huì)報(bào)錯(cuò):
! [rejected] master -> master (fetch first)
error: failed to push some refs to ‘https://gitee.com/xxxx/map.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 master --allow-unrelated-histories
后面的選項(xiàng)--allow-unrelated-histories
是由于本地倉庫和遠(yuǎn)程倉庫是分別創(chuàng)建的,歷史不相關(guān),如果沒有的話無法合并,會(huì)報(bào)錯(cuò)fatal: refusing to merge unrelated histories
。這個(gè)命令會(huì)強(qiáng)制合并分支,可能會(huì)導(dǎo)致合并沖突和代碼更改,不過都是新建的倉庫就沒事。
然后又會(huì)彈出一個(gè)vi編輯器要求你輸入強(qiáng)制合并的原因,隨便寫就可以了。
git push的命令格式為:
git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
本地分支和遠(yuǎn)程分支名一致時(shí),兩者就存在追蹤關(guān)系,本地分支會(huì)推送到遠(yuǎn)程分支。如果遠(yuǎn)程分支名為空,則會(huì)自動(dòng)創(chuàng)建。
$ git push -u origin master
帶上-u
參數(shù)后就記錄了分支參數(shù)默認(rèn)值,下次可以直接輸入git push
,配置存在/.git/config
文件中。
這樣就能把代碼上傳至gitee倉庫了。
如果上傳其他分支的話,需要先git checkout
切換到其他分支,然后同樣執(zhí)行pull和push的操作即可。
三、Qt配置
在Qt Creator菜單欄選擇工具(tool)->選項(xiàng)(option)中配置git的可執(zhí)行文件路徑,我的在/usr/bin/下面。然后選擇工具(tool)->Git->Local Repository->Commit,選擇需要提交的文件。
點(diǎn)擊Commit File,就把文件上傳到本地倉庫了。
選擇工具(tool)->Git->Local Repository->Branches,在所選分支右鍵->Checkout可以切換分支。但是在執(zhí)行工具(tool)->Git->Remote Repository->Push時(shí)會(huì)報(bào)錯(cuò):
error: cannot run ssh-askpass: No such file or directory
fatal: could not read Username for ‘https://gitee.com’: No such device or address
需要先安裝ssh-askpass包:
$ sudo apt-get install ssh-askpass
安裝完畢后再push就可以在輸入賬號密碼后上傳了。需要注意的是,Qt里的push會(huì)直接讀/.git/config
中的配置信息,如果config里沒有所處分支的信息就會(huì)報(bào)錯(cuò):
fatal: The current branch develop has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin develop
The command “/usr/bin/git push” terminated with exit code 128.
為此需要在上文的git push中使用-u
參數(shù)先push一遍要上傳的分支,確保config文件里有這個(gè)分支的信息。文章來源:http://www.zghlxwxcb.cn/news/detail-762684.html
[branch "develop"]
remote = origin
merge = refs/heads/develop
從倉庫拉下代碼就只需要點(diǎn)擊工具(tool)->Git->Remote Repository->Pull了?,F(xiàn)在就可以通過Qt Creator方便推拉gitee倉庫里的代碼了。文章來源地址http://www.zghlxwxcb.cn/news/detail-762684.html
到了這里,關(guān)于【上傳本地代碼至Gitee倉庫,并配置Qt Creator的Git功能】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!