本教程教你從頭到尾你操作一遍git隔缀,你只需按照步驟進(jìn)行就好,請(qǐng)你事先準(zhǔn)備好一個(gè)gitee賬號(hào),創(chuàng)建好一個(gè)git倉(cāng)庫(kù)畦木。
前言:git的操作的幾個(gè)方面
- 倉(cāng)庫(kù)操作
- 分支管理
- 解決沖突
- 版本的回退和前進(jìn)
倉(cāng)庫(kù)管理
本地有項(xiàng)目兜粘,關(guān)聯(lián)到遠(yuǎn)程倉(cāng)庫(kù)
- 打開(kāi)終端申窘,window打開(kāi)git bash,進(jìn)入你想要?jiǎng)?chuàng)建項(xiàng)目的目錄或者已將創(chuàng)建項(xiàng)目的目錄孔轴,執(zhí)行一下命令剃法。
- git init 初始化git倉(cāng)庫(kù)
- git remote add origint https://gitee.com/huruqing/gitdemo.git 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)(地址換成你自己的就行)
- git add . 把所有文件添加到版本里
- git status 查看狀態(tài)
- git commit -m'備注信息' 提交修改
- git commit -a -m"備注信息" add和commit連著寫(xiě)
-
git push origint master 會(huì)出現(xiàn)下面的錯(cuò)誤提示
一般是由于遠(yuǎn)程倉(cāng)庫(kù)上有內(nèi)容,解決的辦法有兩種:
git push origin master -f
本地強(qiáng)制上傳到遠(yuǎn)程路鹰,把遠(yuǎn)程的覆蓋
git pull --rebase origin master
拉取遠(yuǎn)程的文件把本地的覆蓋玄窝,再上傳 - git push origin master -u 加上-u后面再提交只需要git push就可以了牵寺,不需要再加上分支名稱(chēng)
本地沒(méi)有項(xiàng)目
- git clone https://gitee.com/huruqing/gitdemo.git@git 把遠(yuǎn)程的倉(cāng)庫(kù)克隆到本地。
- 進(jìn)行像上面的那些倉(cāng)庫(kù)操作恩脂,不過(guò)首次提交的時(shí)候就不需要加 -f帽氓,因?yàn)槟闶侵苯觕lone的項(xiàng)目
其他操作
- git remote remove origin 取消遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián)
- rm .git -rf 刪除倉(cāng)庫(kù)
- git remote -v 查看遠(yuǎn)程倉(cāng)庫(kù)地址
分支管理
- git checkout -b dev 創(chuàng)建并切換到dev分支
- git branch查看分支
- git checkout master 切換分支到master
- git merge dev -m"合并分支到主干" 合并分支dev到master
- 把主干代碼同步到分支
- git checkout dev 切換到分支
- git merge master -m"合并主干到分支"
- 如果出現(xiàn) fatal: refusing to merge unrelated histories,意思是這兩個(gè)分支沒(méi)有共同的祖先俩块,需要這樣去合并或者拉取
git merge dev --allow-unrelated-histories
- git branch -a 查看所有分支
- git fetch origin dev:dev 把遠(yuǎn)程分支dev同步到本地分支dev
- git branch -d dev 刪除dev分支
- git push origin -d dev 刪除遠(yuǎn)程的dev分支
沖突處理
由于多人同時(shí)進(jìn)行開(kāi)發(fā)黎休,有時(shí)候會(huì)同時(shí)修改一個(gè)文件,或者多分支開(kāi)發(fā)玉凯,合并的時(shí)候就很容易引發(fā)沖突势腮,下面是一個(gè)制造沖突和解決沖突的例子。
- 為了方便我們看得清楚漫仆,把所有內(nèi)容刪除
- 在master分支捎拯,創(chuàng)建index.js
// index.js
// 創(chuàng)建對(duì)象
function Person(name, age) {
this.name = name;
this.age = age;
}
var p = new Person('張三豐',100);
- git checkout -b dev 創(chuàng)建分支dev ,這時(shí)候主干和分支的代碼都是一樣的
制造沖突
- 把分支上的代碼改成下面這樣子盲厌,然后提交并推送
// 工廠(chǎng)模式
function Person(name, age) {
var obj = new Object();
obj.name = name;
obj.age = age;
return obj;
}
var p = Person('張三豐', 100);
- 把主干代碼修改成下面這樣子的署照,然后提交并推送
// 創(chuàng)建對(duì)象
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.say = function() {
console.log(this.name);
}
var p = new Person('張三豐',100);
- 合并dev分支到主干 git merge dev -m"xxxx"
- 沖突出現(xiàn),代碼如下:
// 工廠(chǎng)模式
function Person(name, age) {
var obj = new Object();
obj.name = name;
obj.age = age;
return obj;
}
<<<<<<< HEAD
Person.prototype.say = function() {
console.log(this.name);
}
var p = new Person('張三豐',100);
=======
var p = Person('張三豐', 100);
>>>>>>> dev
其中<<<<<<< 和 =======之間的代碼是當(dāng)前分支(也就是master分支)的修改,=======和>>>>>>>之間的代碼是dev分支上的修改
我們需要根據(jù)我們自己的情況去消除沖突吗浩,我們可以選擇保留主干上的修改或者是分支上的修改建芙。消除沖突之后,再執(zhí)行添加懂扼、提交禁荸、推送的動(dòng)作。
版本的前進(jìn)和回滾
-
git log 和 git log --pretty=oneline 查看版本信信息
image.png - 如果我們要回退到aaa這次操作提交上來(lái)阀湿,我們只需要將id復(fù)制一下赶熟,然后執(zhí)行下面命令即可,版本的id每個(gè)人都會(huì)不一樣
git reset --hard e55640863f0eb141e0857761f0268c61121c07ac - 版本回退之后,如果想再回到現(xiàn)在陷嘴,你只需要記住你要回到的id即可使用同樣的命令回到現(xiàn)在
- 如果不記得版本id映砖,還可以使用git reflog來(lái)查看你提交的歷史記錄,從中找到版本的id罩旋,再進(jìn)行reset操作
其他
每次git push我們都需要輸入賬戶(hù)密碼比較麻煩啊央,想要免掉這一步,請(qǐng)看文章
碼云gitee添加公鑰