一.指令入門前的準備
1.Git全局設置
?2.獲取Git倉庫
?
?
例如:將我GitHub上的first_resp倉庫克隆到本地。
?點擊進入first_rep,后面本地倉庫操作的學習就是在這個界面右鍵打開Git Bash
3.工作區(qū),暫存區(qū),版本庫概念
?注:如果空倉庫就沒有index文件
4.Git工作區(qū)中文件的狀態(tài)
二.本地倉庫操作相關的命令
//1.查看文件狀態(tài)
git status
//2.查看日志,也可以寫成git-log
git log
//3.將文件的修改加入暫存區(qū)
//格式:git add 單個文件名|通配符
git add User.java//將User.java文件添加到暫存區(qū)
git add *//添加所有文件到暫存區(qū)
//4.將緩存區(qū)的文件提交到版本庫
git commit -m "init resp" User.java//-m后面帶的注釋內容
///5.將暫存區(qū)的文件取消暫存或切換到指定版本
git reset User.java//將暫存區(qū)的User.java取消暫存
git reset --hard 090950e68ecc099c5c021194d14b18d713880b75
//回溯回之前的版本,hard后面長長的那串是版本號,怎么知道呢?
//輸入git log然后commit后面就是版本號
//6.查看已經(jīng)刪除的提交記錄
git reflog
?注:
git status--查詢狀態(tài)
創(chuàng)建一個文件,未使用git add,則為未跟蹤狀態(tài),說白了就是git沒有去管理這個文件。
使用git add后就會變成已暫存狀態(tài)。
使用git commit,就會變?yōu)槲葱薷臓顟B(tài),然后修改文件后就會變?yōu)橐研薷臓顟B(tài)
具體參照前面一種Git工作區(qū)中文件的狀態(tài)
三.遠程倉庫操作相關的命令
//1.查看遠程倉庫,它會列出每一個遠程服務器的簡寫。
//如果已經(jīng)克隆了遠程倉庫,那么至少應該能看到origin,
//這是Git克隆的遠程倉庫服務器的簡稱(默認名字)
git remote
//輸入下面這行命令就會顯示詳細信息,即服務器的http地址
git remote -v
//2.添加一個新的遠程倉庫,同時指定一個可以引用的簡寫
git remote add <shortname><url>
//3.克隆遠程倉庫到本地
//如果你想獲得一份已經(jīng)存在了的Git遠程倉庫的拷貝,這是就要用到git clone命令。
//Git克隆的是該Git倉庫服務器上的幾乎所有數(shù)據(jù)(包括日志信息,歷史記錄等)
//格式:git clone[url]
git clone https://github.com/Flying-pig-z/first_rep
//4.將本地倉庫內容推送到遠程倉庫的指定分支中
//格式:git push [remote-name][branch-name]
//remote-name是什么:就是前面的origin(遠程倉庫的別名),branch-name:分支的名稱
//只有提交到本地倉庫,才能推送到遠程倉庫,順序不能搞反[add->commit->push]
git push origin master
//推送到遠程的主分支
//5.從遠程倉庫拉取并合并,多人協(xié)作時使用
//格式:git pull[short-name][branch-name]
git pull origin master
//還有git fetch,差別是這個指令沒有合并
重中之重:注意順序add->commit->push,只有push后才上傳到遠程倉庫
注:
【1】在使用git push命令時候報錯:
fatal: unable to access 'https://github.com/.......': OpenSSL SSL_read: Connection was reset, errno 10054
那么直接執(zhí)行一次git config --global http.sslVerify "false"命令來取消ssl解決問題
【2】git push第一次要使用要身份驗證,你會發(fā)現(xiàn)你用戶名和密碼輸對了還是報錯,
解決方案:
Git提交時報錯Logon failed, use ctrl+c to cancel basic credential prompt.. - 簡書
【3】注意:如果當前本地倉庫不是從遠程倉庫克隆,而是本地創(chuàng)建的倉庫,并且倉庫中存在文件,此時再從遠程倉庫拉取文件的時候會報錯(fatal:refusing to merge unrelated histories)
解決此問題可以在git pull命令后加入?yún)?shù)--allow-unrelated-histories
?
四.分支操作的命令
分支操作的概念
分支是Git使用過程中非常重要的概念。使用分支意味著你可以把你的工作從開發(fā)主線上分離開來,以免影響開發(fā)主線。同一個倉庫可以有多個分支,各個分支相互獨立,互不干擾。
通過git init屬性創(chuàng)建本地倉庫時默認會創(chuàng)建一個master分支。
下面介紹分支的相關命令
//1.查看分支
git branch//列出所有本地分支
git branch -r//列出所有遠程分支
git branch -a//列出所有本地分支和遠程分支
//2.創(chuàng)建分支
//格式:git branch[name]
git branch newBranch
//3.切換分支
//格式:git checkout [name]
git checkout newBranch
//4.推送至遠程倉庫分支
//格式:git push[shortName][name]
//shortName就是遠程倉庫的別名,也就是origin
git push origin newBranch
//5.分支合并,把不同分支的文件合并到一起
//格式:git merge[name]
git merge b3
//將b3分支合并到現(xiàn)在所在的分支
//使用這個命令會進入日志編輯模式,按i編輯,按esc退出
//6.刪除分支
git branch -d newBranch//刪除分支時,需要做各種檢查
git branch -D b1//不做任何檢查,強制刪除
注:
分支的使用:
【1】比如我們在本地文件夾中創(chuàng)建文件666.txt,然后git add 666.txt,該文件就從本地的工作區(qū)進入到本地暫存區(qū),然后git commit 666.txt,這樣該文件就從本地的暫存區(qū)進入到了本地的倉庫的某個分支(即你當前操作的分支)。
【2】這時你切換到別的分支,比如你commit的時候是在master分支中操作的,你用git checkout newBranch切換到newBranch分支(前提是你之前有創(chuàng)建過該分支),然后你就會發(fā)現(xiàn)在本地倉庫中的666.txt文件消失了,只有重新切換為master分支才重新出現(xiàn)。
【3】然后你再git push original master,就是將master分支上傳,你就會發(fā)現(xiàn)此時GitHub倉庫中的master分支更新多了個666.txt,而newBranch分支沒有。
以上就是分支的使用。由此我們可以看到,通過分支,程序員的合作開發(fā)可以做到相互獨立,互不干擾。
解決合并沖突:
合并分支是將兩個分支相同的文件保留,不同的文件添加進來。
當兩個分支上對同一個文件進行不同的修改,然后當合并分支的時候就會產(chǎn)生沖突。
例如同時修改了同一個文件的同一行,然后再合并時就會報錯,要求我們解決沖突完才能提交結果。
?
例:
Master分支下的b1.txt:
b1 branch
在Master分支下添加的內容...
b1分支下的b1.txt:
b1 branch
在b1分支下添加的內容...
合并后:
合并后的文件,可以發(fā)現(xiàn)文件合并后有問題,并且已經(jīng)標出。
這就需要手動解決沖突,解決沖突的步驟如下:
1.處理文件中沖突的地方
2.將解決完沖突的文件加入暫存區(qū)(git add b1.txt)
【告訴它我們已經(jīng)解決了沖突】
3.提交到倉庫(git commit -m "手動處理文件合并問題" b1.txt -i)
【后面要有-i參數(shù),不然會報錯】
五.標簽操作的命令
Git中的標簽,代表某個分支某個特定時間點的狀態(tài)。通過標簽,可以很方便的切換到標記時的狀態(tài)。比較有代表的是人們會使用這個功能來標記發(fā)布結點(v1.0,v1.2等)【v是version】。
注:你什么時候提交標簽,那個標簽就是代表那一時刻的狀態(tài)。例如,我們在第一次修改前可以創(chuàng)建標簽為v1.0,第一次修改后可以創(chuàng)建標簽為v2.0,第二次修改后可以創(chuàng)建標簽為v3.0。
那么v1.0可以表示第一次修改前的狀態(tài),v2.0可以表示第一次修改后到第二次修改前的狀態(tài),v3.0可以表示第三次修改后的狀態(tài)。文章來源:http://www.zghlxwxcb.cn/news/detail-621561.html
標簽可以當做是版本的名字,我覺得標簽更好的叫法是版本。文章來源地址http://www.zghlxwxcb.cn/news/detail-621561.html
//列出已有的標簽
git tag
//創(chuàng)建標簽
//格式:git tag [name]
git tag v0.1
//將標簽推送至遠程倉庫
//格式:git push [shortName][name]
git push origin v0.1
//檢出標簽,其實就是把我們當初那個標簽的狀態(tài)下載下來,
//這樣的話我們就能拿到當時狀態(tài)的代碼
//格式:git checkout -b [branch][name]
git checkout -b master v0.1
到了這里,關于Git分布式版本控制工具和GitHub(二)--Git指令入門的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!