上傳本地代碼及更新代碼到GitHub及Git的四種區域五種狀態簡介

上傳本地代碼

step1去github上創建自己的Repository, 創建頁面如下圖
在這裏插入圖片描述
藍色框爲新建的倉庫的https地址
在這裏插入圖片描述

step2在你要上傳的本地代碼文件夾下,右鍵點擊“Git Bash Here”
輸入

echo "# Test" >> README.md

以添加註釋文檔

step3建立git倉庫

git init

step4: 將項目的所有文件添加到倉庫中

git add .

step5: 添加README.md文件

git add README.md

step6提交到倉庫,並添加註釋

git commit -m "註釋語句"

step7將本地的倉庫關聯到GitHub,後面的https改成剛剛自己的地址,上面的藍色框處

git remote add origin [email protected]:xxxxxx/github_demo.git

step8: 上傳github之前pull一下

git pull origin master

中間可能會出現“fatal: Couldn’t find remote ref master
”,不影響結果,跳過此步驟,執行下一步。

step9: 上傳代碼到GitHub遠程倉庫

git push -u origin master

中間可能會讓輸入Username和Password,只要輸入github的賬號和密碼就行了。執行完後,如果沒有異常,等待執行完就上傳完成。

更新代碼

step1:查看當前的git倉庫狀態,可以使用git status

git status

step2:更新全部

git add *

step3:接着輸入git commit -m "更新說明"

git commit -m "更新說明"

step4:先git pull,拉取當前分支最新代碼

git pull

step5:push到遠程master分支上

git push origin master

若無出錯,打開GitHub已經同步了

Git的四個區和五種狀態

四個區:工作區(Working Directory)、暫存區(Stage,也叫索引區,index)、本地倉庫(Local Repository)、遠程倉庫(Remote Repository)

五種狀態:未修改(Origin)、已修改(Modified)&未追蹤(Untracked)、已暫存(Staged)、已提交(Committed)、已推送(Pushed)

順序操作
第零步:工作區與倉庫保持一致
第一步:文件增刪改,變爲已修改狀態
第二步:git add ,變爲已暫存狀態

 git add --all # 當前項目下的所有更改
 git add .  # 當前目錄下的所有更改
 git add xx/xx.py xx/xx2.py  # 添加某幾個文件

第三步:git commit,變爲已提交狀態

 git commit -m"<這裏寫commit的描述>"

第四步:git push,變爲已推送狀態

 git push -u origin master # 第一次需要關聯上
 git push # 之後再推送就不用指明應該推送的遠程分支了
 git branch # 可以查看本地倉庫的分支
 git branch -a # 可以查看本地倉庫和本地遠程倉庫(遠程倉庫的本地鏡像)的所有分支

代碼提交與同步流程
在這裏插入圖片描述
五種狀態間的撤銷更改
在這裏插入圖片描述
五種狀態間的撤銷操作
已修改,但未暫存

 git diff # 列出所有的修改
 git diff xx/xx.py xx/xx2.py # 列出某(幾)個文件的修改
 git checkout # 撤銷項目下所有的修改
 git checkout . # 撤銷當前文件夾下所有的修改
 git checkout xx/xx.py xx/xx2.py # 撤銷某幾個文件的修改
 git clean -f # untracked狀態,撤銷新增的文件
 git clean -df # untracked狀態,撤銷新增的文件和文件夾

已暫存,未提交

這個時候已經執行過git add,但未執行git commit,但是用git diff已經看不到任何修改。

因爲git diff檢查的是工作區與暫存區之間的差異

 git diff --cached # 這個命令顯示暫存區和本地倉庫的差異
 
 git reset # 暫存區的修改恢復到工作區
 git reset --soft # 與git reset等價,回到已修改狀態,修改的內容仍然在工作區中
 git reset --hard # 回到未修改狀態,清空暫存區和工作區
 
 git reset --hard 操作等價於 git reset 和 git checkout 2步操作

已提交,未推送

執行完commit之後,會在倉庫中生成一個版本號(hash值),標誌這次提交。之後任何時候,都可以藉助這個hash值回退到這次提交。

 git diff <branch-name1> <branch-name2> # 比較2個分支之間的差異
 git diff master origin/master # 查看本地倉庫與本地遠程倉庫的差異
 git reset --hard origin/master # 回退與本地遠程倉庫一致
 git reset --hard HEAD^ # 回退到本地倉庫上一個版本
 git reset --hard <hash code> # 回退到任意版本
 git reset --soft/git reset # 回退且回到已修改狀態,修改仍保留在工作區中。

已推送到遠程

 git push -f orgin master # 強制覆蓋遠程分支
 git push -f # 如果之前已經用 -u 關聯過,則可省略分支名

慎用,一般情況下,本地分支比遠程要新,所以可以直接推送到遠程,但有時推送到遠程後發現有問題,進行了版本回退,舊版本或者分叉版本推送到遠程,需要添加 -f參數,表示強制覆蓋。

總結:

  • 先用git status查看下當前狀態。
  • git reset可以作用於本地倉庫,用於回退/前進到任意版本,也可以作用於暫存區,用於撤銷暫存區修改。有hard和soft2個參數。soft參數可以省略,soft參數表示撤銷的修改仍放在工作區中。
  • git checkout用於撤銷刪除和修改,git clean -df用於撤銷新增。
  • git diff可以查看工作區、暫存區、倉庫之間的修改和差異,參數不同。

參考文獻:
https://blog.csdn.net/ivan820819/article/details/78816578

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章