-1概述
git三種操作
從git讀取數(shù)據(jù)
改動代碼
將改動傳回git
兩個不同的repository
remote repository 遠程庫
local repository 本地庫
0 前期準(zhǔn)備
0.1 GitHub賬號注冊
在GitHub官網(wǎng)上直接注冊賬號就行了,要分清name和ID,比如我的username = xiaozhou,但是ID = 135****569,另外,Windows下還可以下gitHub 桌面版,是一個操作GUI界面,作用和git命令是一樣的,很容易上手,也容易查看。
0.2 Git下載安裝
我是在Windows下使用的git,也可以在官方Git下載直接下載就行了,中間正常安裝一般不會出什么錯,完成后,在任何一個文件夾點擊鼠標(biāo)右鍵,或者在所有程序中,都能看到以下兩個選項:

(注:鼠標(biāo)右鍵選項中沒有g(shù)it CMD)
0.3 一些配置
- 首先配置用戶名和郵箱
我就是安裝github上的注冊信息配置的,打開git cmd,一般配置全局變量,使用
git config --global user.name "你的名字"
git config --global user.email "你的郵箱"
若后面忘了本地所配置的用戶名和郵箱信息,也可以在git cmd中查看和修改
git config user.name
git config user.email
- 將
git(本地)和github(遠程)鏈接起來
為了不用每次從本地push到遠程時都輸入賬目密碼,在本地生成一個SSH密碼,包括公有和私有兩個秘鑰,我們將公有秘鑰設(shè)置給github賬號。同樣,在git cmd中使用如下命令:
ssh-keygen -t rsa
然后會提示你輸入保存秘鑰的文件夾、密碼等一系列數(shù)據(jù),我懶,就一直按回車,默認就行了,默認的存儲目錄為C:\User\user\.ssh,是一個隱藏文件夾,打開可以看到

看到那個明顯的.pub文件了嘛,對,就是它,公有秘鑰,用文本編輯器打開即可。然后在你的github--setting--SSH and GPG keys中,將其添加進去就行啦。
1 將本地文件推送到Github(不同branch操作)
1.1 將本地庫與遠程庫建立連接
在github中,進入你要推送到的repository中,在右上角有一個clone or download選項,點開,可以看到一個https的url,這就是遠程庫的url,復(fù)制,然后在本地你要進行操作的項目文件夾下,git bash here,(若未init,則需init)
git remote add origin https://github.com/1358304569/Temp_python
注:在未進行連接的狀態(tài)下,進行push操作,會提示錯誤:
'origin' does not appear to be a git repository
1.2 本地版本管理
在本地項目文件夾下(已于github遠程庫連接),開發(fā)過程中可以進行以下幾種操作:
git add **.py // 將文件加入暫存區(qū),點.表示所有文件
git commit -m "titile" -m "description" //將暫存區(qū)的所有文件加入本地庫中
git reset HEAD^ //回退到上一個commited的版本
git reset --hard 7ba74fxx //按版本號,強制回退
注:在commit時,可以不加參數(shù),直接打開編輯器操作,默認是vim。
1.3 將本地分支推送到遠程庫
- 新分支操作
git branch //查看所有分支
git branch newbranch //新建分支
git checkout newbranch //切換到此分支
git branch -d newbranch //刪除分支
git branch -D newbranch //強制刪除分支
- 從下圖可以看出,在
commit以后,本地默認創(chuàng)建了master分支,然后創(chuàng)建并切換到SRCC分支,從第三行到第四行的括號內(nèi)容可以看到,branch已經(jīng)由master轉(zhuǎn)為SRCC了,此時查看分支可以發(fā)現(xiàn),指針在SRCC分支上(最后一行)

- 進行推送
$ git push origin HEAD -u
$ git push origin branchname
此時再github的分支上就可以看到了。
第一次推送到master分支上時,使用
-u參數(shù):
git push -u origin master
2 將遠程庫拉到本地進行操作(同一分支)
2.1 本地初始化
在本地新建一個用于操作的文件夾,對其進行git init初始化,用于存放從遠程庫中pull下來的文件。
2.2 建立連接
git remote add origin https:xxx//git@xxx.git
2.3 進行pull操作
git pull origin master:master
pull操作有幾種用法:
git pull origin <remote_branch>:<local_branch>
git pull origin <remote_branch>
git pull
詳細區(qū)別和用法參考來源小志君的簡書
在此處,嘗試了兩種連接方式 HTTPS和SSH,從HTTPS切換到SSH時,出了一點小問題,具體見最后一節(jié)問題匯總。
2.4 將更新push到遠程
git push origin master
在本地進行編輯和add、commit后,將最新的版本推送到遠程庫
n-1 一些解釋
1. origin/master是什么
-
origin就是一個名字,當(dāng)從本地clone遠程庫時,git為你默認創(chuàng)建的、指向這個遠程庫的標(biāo)簽,指向的是repository,但是master只是這個repository中默認創(chuàng)建的第一個branch,當(dāng)你push的時候,因為origin和master都是默認創(chuàng)建的,所有可以省略,但是最好別偷懶,因為換一個branch的時候就難搞了。
origin/master----遠程庫名/分支名
2. -u 到底是干嘛的
有人說,加了參數(shù)-u后,以后即可直接用git push 代替git push origin master;
但真正使用上面,第一次進行push的時候才加u,后面不加,暫時不懂
n 一些問題
1. add file時出現(xiàn)fatal: Not a git repository (or any of the parent directories): .git錯誤
原因是沒有進行git init,導(dǎo)致沒有生成.git隱藏文件夾。
2. 新建分支時,出現(xiàn)fatal: Not a valid object name: 'master'錯誤
原因是沒有提交一個對象,要先經(jīng)過add``commit等操作后才會真正建立master分支,此時才可以建立其他分支。
由于遠程庫是空的,我們第一次推送master分支時,加上了-u參數(shù),Git不但會把本地的master分支內(nèi)容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時就可以簡化命令。
$ git push origin branchname
在本地倉庫提交后推送到遠程倉庫
作者:Cloud_9527
鏈接:http://www.itdecent.cn/p/0995b062396c
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。
3. 在將本地分支推送到遠程庫時,出現(xiàn)fatal: TaskCanceledException encountered
原因未知,執(zhí)行下列語句可以解決:
$ git config --global credential.helper manager
4. 在git commit 編輯title和description后,按Esc鍵后未推出編輯器
今天用git commit -m “注釋”提交的時候,注釋寫錯了。
首先 使用 git commit --amend 命令,(修改最近一次提交的注釋信息),會進入到vim 編輯器,然后 你會發(fā)現(xiàn)編輯器里你怎么輸入都沒反應(yīng),這是因為vim處在不可編輯狀態(tài),按下字母鍵 c,此時進入編輯狀態(tài),可以開始修改注釋信息了。
在然后 你會發(fā)現(xiàn)你怎么都退出不了,回到shell了,然后操作如下: ESC --》 退出編輯狀態(tài);接著 連續(xù)按兩次大寫字母鍵 Z,接著你會驚喜的發(fā)現(xiàn),終于保存好退出來了!
windows 系統(tǒng) ,親測有效??!拿走不謝!
來源:月下小貍123的博客園
4.2 commit補充:在windows下的commit默認編輯器是,是TM啥啊,我也不知道,但是,打開Git CMD通過下面語句將其改為vim
$ git config --global core.editor vim,
以后就不會編輯后不知道咋退出啦。
5. git提示modified:xxx(modified content, untracted content)
原因:目錄沒有被跟蹤;
解決:刪除xxx目錄下的.git文件夾即可繼續(xù)操作
6. pull時提示The authenticity of host 'github.com (xx.xx.xx.xx)' can't be estabilished
因為默認是用HTTPS連接遠程庫和本地庫,但git的連接方式有兩種,還可以用ssh連接,我就手欠的試了一下ssh連接方式

就會出現(xiàn)以下錯誤
The authenticity of host 'github.com (52.xx.xxx.119)' can't be established.RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? //yes
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
解決方案:需要進行g(shù)it ssh 配置,登錄github,進入要pull的項目中的setting,點擊Deploy keys,將本地的ssh 公鑰添加進去,即可。
現(xiàn)在知道這是干嘛的了,so,以后還是老老實實用HTTPS吧。