github 基本使用(新手)

初學GitHub 這篇博客也是複習記憶使用,有緣看到該博客的人請不吝指出錯誤。。。

Git是一個開源的分佈式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。
GitHub是一個面向開源及私有軟件項目的託管平臺,因爲只支持git 作爲唯一的版本庫格式進行託管,故名GitHub。

Git 安裝 由於Git是Linux的作者開發的,因此在Linux下安裝是十分方便的
如Ubuntu下 sudo apt-get install git-core

WIndow下安裝 可以找到一個安裝包 https://gitforwindows.org/就是一個普通的安裝包,和普通軟件一樣安裝即可。默認勾選,一直下一步即可。安裝完成後 git默認已經配置好了環境變量,可以直接使用git 命令
Git版本

Git本地倉庫 包含工作區與版本區。版本去又 分爲 暫存區與倉庫區。
Git倉庫關係

**Git 本地倉庫使用 **

首先可以配置自己身份 從開始菜單找到Git Bash 打開

git config --global user.name "用戶名"
git config --global user.email "郵箱"

配置完成可以查看配置是否生效

git config --global user.name
git config --global user.email

配置完成後開始真正使用

新建一個文件夾作爲 Git的實驗文件夾,如GitTest。進入該文件夾
可以通過鼠標右鍵點擊出現的工具欄選擇Git Bash Here 即可打開Git 命令行操作窗口。

初始化該文件夾 git init
初始化該文件夾
可以看到該文件內多了一個隱藏文件夾 .git,隱藏文件顯示百度一下。這個文件夾用來記錄本地所有的Git操作。

新建一個文件
新建文件

GitBash 查看狀態 git status 如果中文亂碼輸入git config --global core.quotepath false
未關聯文件
可以看到未關聯文件 大俠.txt

提交代碼: 只要使用 add 與 commit 命令就可以了。
添加:

git add 大俠.txt
git status 

add
使用add命令可將 指定文件添加到 暫存區 等待提交。 如果覺得一個一個添加太麻煩可使用

git add -A  或 git add .

提交:git commit -m "提交信息" 每次提交時一定要加上提交信息

git commit -m "First commit"
git status

commit
提交後再次查看狀態可以看到沒有可提交的了。可查看記錄 git log
提交記錄
可以看到提交過一次,提交信息是 First commit

修改 大俠.txt 添加文字 查看git狀態使用git diff可查看新增內容與版本庫中的區別
顯示區別
可使用 git diff 文件名 查看指定文件的區別。修改後可使用 add commit 再次提交到倉庫區。

如果修改後未進行 add 添加到暫存區時 發現修改有誤。決定撤回修改。可使用命令

git checkout -- 文件名

checkout撤回
這是打開該文件會發現剛纔的修改已經失效了。

如果已經使用 add 命令添加進暫存區 這是直接使用 git checkout -- 大俠.txt命令就沒有效果
無效
此時 需要 git reset HEAD 文件名 後再執行 checkout

git reset HEAD 大俠.txt

reset HEAD
重新修改後 再次提交。

查看提交記錄 git log
總記錄
git log 不只包含提交記錄,還包括合併記錄等

如果記錄過多 只想查看其中一條 可以在命令中指定該記錄id

 git log ce7440863f570a3aa4030a57d6f045c9f4a2435e -1

還可以查看該條記錄具體修改了什麼內容

git log ce7440863f570a3aa4030a57d6f045c9f4a2435e -1 -p

查看提交記錄
注 只用 id 前7 位即可查出不必寫全。。。

現在有兩條提交記錄 可進行 版本恢復 git reset --hard 版本號前7位 如恢復到未添加丁典狀態

 git reset --hard 418dc5b

如此做 會使 版本會退到第一次提交後狀態。且 git log 命令也只能查出第一次提交記錄

可以git reflog查看之前版本 然後可使用git reset --hard 版本號回到 當前版本

git reflog
git reset --hard 版本號

reflog

分支及分支合併
分支主要作用就睡在現有代碼基礎上開闢一個分叉口,使得代碼可以在主幹線和分支線上同時進行開發,且相互不會影響。
查看當前版本庫有哪些分支

git branch

git branch
毫無疑問當前只有一個 master 可理解爲主幹支

創建一個分支 如 version1.0 git branch version1.0
創建分支
master 帶有 * 號 說明當前代碼在 master分支上。切換分支 git checkout 分支名

git checkout version1.0

可以在當前分支進行一些操作, 如修改 大俠.txt 文件 添加 喬峯
然後進行 add commit 操作

再次切換到master 分支後 在 version1.0分支上做的修改並沒有提交到 master版本我們可以打開文件看看剛纔的添加又沒有了 好神奇。。。
分支未合併

這時可以使用 merge命令來 完成 合併操作 git merge 分支名即將分支名代表的分支合併到當前分支

git checkout master		# 先切換到 master分支 已經切換過不用執行
git merge version1.0

分支合併後 即可將 version1.0做的修改 合併到 master中
合併分支
刪除分支命令 git branch -D 分支名

git branch -D version1.0

與遠程版本庫協作

Git與GitHub關聯使用。到GitHub官網註冊並登錄。

本地生成 ssh key

ssh-keygen -t rsa -C "郵箱"

需要按三次回車 可以根據信息找到 ssh key位置。一般是 /c/Users/Administrator/.ssh/id_rsa.pub
或者輸入命令

clip <~/.ssh/id_rsa.pub

可直接複製該ssh key

打開 GitHub進入settings 找到SSH AND GPG keys 點擊 New SSH key
SSH KEY

Title 隨便起一個 key 就將剛纔複製的粘貼上去
添加SSH KEY
輸入完成 點擊 Add SSH key完成添加
成功添加
測試連接是否成功

ssh -T [email protected]

連接成功
登錄 GitHub 新建一個 倉庫 new repository 如果建好就跳過這一步 網速慢的我好急。。。
創建遠程版本庫
可以創建庫名 添加描述 選擇公開免費 或者 private私有 收費。public 就可以,可以選擇 勾選initlize… README會生成一個描述文件。 點擊 Create完成創建。
地址

複製 倉庫地址 [email protected]:......

本地關聯GitHub git remote add origin 複製的地址
地址輸入錯誤 可以刪除 origin git romote rm origin再重新關聯
上傳文件 git push origin master #將本地代碼同步到遠程版本庫的master分支
如果創建庫時加入了README.md或者LICENSE那麼github會拒絕push。遠程版本庫中有本地版本庫中沒有的文件,需要先將遠程版本庫的內容拉取到本地,再從本地推送到遠程倉庫。
在這裏插入圖片描述
可以查看

從遠程版本庫上獲取最新代碼並且合併到本地 master 分支

git pull origin master

它相當於

git fetch origin master # 將遠程代碼庫同步到本地但不會合併到任何分支,而是存放到一個origin/master分支上。
git merge origin origin/master # 將origin/master分支上修改合併到主分支上

pull 相當於將fetch 和 merge 兩個命令放在一起執行了。
在fetch之後 merge之前可以查看遠程版本庫到底修改了什麼 git diff origin/master

git pull origin master後可以再次執行提交操作 git push origin master後便可看到遠程倉庫多了本地的文件

但理想總是美好的,但現實但總是有可能出現問題。。。
拉取失敗
fatal: refusing to merge unrelated histories
查資料這個問題是因爲 兩個 根本不相干的 git 庫, 一個是本地庫, 一個是遠端庫, 然後本地要去推送到遠端, 遠端覺得這個本地庫跟自己不相干, 所以告知無法合併
解決方法 強制合併

git pull origin master --allow-unrelated-histories

強制合併
輸入命令後拉取過程可能會進入一個編輯模式。會讓你輸入合併信息,輸入完成後 按下esc簡輸入
:wq即可保存退出 和Linux下 vi 很像。然後查看當前文件夾就可以發現多了個README.md
接下來可以 推送到 遠程版本庫 git push origin master
推送到遠程版本庫
GitHub上多了本地倉庫中內容
GitHub
這樣就成功的建立了本地倉庫與遠程倉庫的關聯,每次想要push之前 記得要 先pull拉取遠程版本庫最新內容。

接下來我們嘗試Ubuntu下與遠程庫建立連接。
安裝git 設置用戶信息 生成ssh key 加入到GitHub。。。這些步驟都省略

方式一 : 本地文件都提交到本地倉庫後希望和遠程倉庫關聯

git remote add origin 遠程倉庫地址
git pull origin master
git push origin master

基本上就是這樣 但是有可能出現 本地倉庫版本 高於 遠程倉庫版本 的情況,這時合併應該會出現錯誤。和Windows下的錯誤差不多 也是 需要填寫一個 commit 信息。。。
填寫commit信息
中文好看懂。。。我們可以 寫一個 WindowsTest 的合併信息然後 ctrl+x退出。
合併
這樣就可以拉取到本地了,然後我們可以將文件推送到遠程版本庫

git push origin master

UbuntuCH推送
可以成功 不過存在一個問題 我們的本地版本庫 仍然 高於 遠程版本庫 這就導致下一次拉去pull時仍然要設置提交信息 很麻煩。。。
版本超前
解決辦法:這時遠程倉庫已經有我們本地版本庫的所有代碼了。所以我們可以使本地版本庫 版本回退到pull之前 使之 低於 遠程倉庫版本。 而後再次拉取遠程版本庫代碼。這樣 本地版本庫 版本就會 低於 遠程版本庫 也就不用每次遠程拉取代碼 就要輸入 提交信息了

git reset --hard 版本號前7位
git pull origin master

版本回退後再次拉取
這樣 就只用第一次 拉取時輸入 提交信息了。

方式二: 將遠程版本庫clone 到 本地

git clone 遠程版本庫地址

clone
如果 進入WIndowsTest文件夾就可以直接與遠程版本庫建立聯繫,或者希望在本文件夾中進行操作,可以將WIndowsTest文件夾中內容全部複製到本文件夾中。不要漏掉隱藏文件夾 .git複製完畢可以刪除WIndowsTest文件夾。
移動完畢
使用clone的話 不用再 執行

git remote add origin 遠程地址
git pull origin master
git push origin master 

而且 提交新代碼時 可以直接成功。

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