Git和Github

-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)右鍵,或者在所有程序中,都能看到以下兩個選項:

git選項

(注:鼠標(biāo)右鍵選項中沒有g(shù)it CMD)

0.3 一些配置

  1. 首先配置用戶名和郵箱
      我就是安裝github上的注冊信息配置的,打開git cmd,一般配置全局變量,使用
git config --global user.name "你的名字"
git config --global user.email "你的郵箱"

若后面忘了本地所配置的用戶名和郵箱信息,也可以在git cmd中查看和修改

git config  user.name
git config  user.email 
  1. git(本地)和github(遠程)鏈接起來
      為了不用每次從本地push到遠程時都輸入賬目密碼,在本地生成一個SSH密碼,包括公有和私有兩個秘鑰,我們將公有秘鑰設(shè)置給github賬號。同樣,在git cmd中使用如下命令:
ssh-keygen -t rsa

然后會提示你輸入保存秘鑰的文件夾、密碼等一系列數(shù)據(jù),我懶,就一直按回車,默認就行了,默認的存儲目錄為C:\User\user\.ssh,是一個隱藏文件夾,打開可以看到

.ssh文件夾

看到那個明顯的.pub文件了嘛,對,就是它,公有秘鑰,用文本編輯器打開即可。然后在你的github--setting--SSH and GPG keys中,將其添加進去就行啦。

1 將本地文件推送到Github(不同branch操作)

1.1 將本地庫與遠程庫建立連接

在github中,進入你要推送到的repository中,在右上角有一個clone or download選項,點開,可以看到一個httpsurl,這就是遠程庫的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分支操作
  • 進行推送
$ 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ū)別和用法參考來源小志君的簡書
在此處,嘗試了兩種連接方式 HTTPSSSH,從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連接方式

右上角切換連接方式(Use HTTPS)

就會出現(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吧。

n+1 一些注意

1. commit message 規(guī)范
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容