Github學習筆記

前面考試,半年內基本沒怎麼碰電腦好多操作都生疏了。
考完試最近有時間,終於把Git的基本操作又重頭到尾看了一遍,把自己學到的一點知識記錄下來,方便以後學習。
在git裏有工作區和版本庫.git,其中版本庫中存了我創建的分支,暫存區等
這裏寫圖片描述
一、配置本地機器默認commit的名稱和Email

git config --global user.name "tiemaocsdn"        //設置用戶名
git config --global user.email "[email protected]"//設置Email
git config -l                                     //查看git配置

二、初始化git

cd   path    //通過cd到達你想建立版本庫的目錄下
git init     //初始化版本庫

在Windows的Git Bash中,只能顯示ASCII碼,非ASCII碼字符會顯示如下
這裏寫圖片描述
如果設置git config –global core.quotepath off則會正確顯示
這裏寫圖片描述

三、git常用操作

ls                   //查看本地分支下的文件
git add fileName     //把文件添加到暫存區
git add .            //把所有的文件加到暫存區
git commit -m "info" //將暫存區的數據提交到當前分支
git remote           //查看當前配置有哪些遠程庫,列出簡短名稱
git remote -v        //查看當前配置有哪些遠程庫,顯示對應的克隆地址
git log              //查看提交歷史,按提交時間列出,退出時按英文狀態下的q
git log -p           //附帶每次commit的變化
git status           //查看當前倉庫的狀態
git remote rename oldName newName;//重命名遠程倉庫

其中git status常見狀態表示如下
Changes to be committed:——————>// 已經在stage區, 等待添加到HEAD中的文件
Changes not staged for commit: ———>//有修改, 但是沒有被添加到stage區的文件
Untracked files:——————————–>//沒有tracked過的文件, 即從沒有add過的文件
在commit前最好git status一下,免得commit錯誤

附:Git刪除操作

git rm filename;//刪除非文件夾文件
git rm filename -r -f;//刪除文件夾及其下屬所有文件
git remote rm repositoryName;//刪除遠程倉庫

四、操作遠程庫

ssh-keygen -t rsa -C "Email"                                    //生成ssh密鑰
git remote add origin git@github.com:AlisaGit/repositoryName.git//關聯遠程庫
git push -u origin master                                       //將本地庫的內容推送到遠程倉庫的master分支

注意,在推送過程中可能出現如下情況

 failed to push some refs to git@github.com:AlisaGit/repositoryName.git

出現錯誤的主要原因是github中的README.md文件不在本地代碼目錄中
可以通過如下命令進行代碼合併【注:pull=fetch+merge]

git pull --rebase origin master     //進行代碼合併,pull操作就是把遠程數據庫的內容更新到本地數據庫
git push -u origin master           //將本地庫的內容推送到遠程倉庫的master分支

此時即可完成代碼上傳到github
若是要把遠程倉庫的內容克隆到本地倉庫,則可以使用下列方法

git clone git@github.com:AlisaGit/repositoryName.git

五、認識分支

HEAD指向的是現在使用中的分支的最後一次更新。通常默認指向master分支的最後一次更新。通過移動HEAD,就可以變更使用的分支,提交時使用~(tilde)和^(caret)就可以指定某個提交的相對位置。最常用的就是相對於HEAD的位置。HEAD後面加上~(tilde)可以指定HEAD之前的提交記錄。合併分支會有多個根節點,您可以用^(caret) 來指定使用哪個爲根節點。
這裏寫圖片描述

六、分支基本操作

git branch branchName           //創建分支
git branch                      //查看分支,其中帶*的表示當前分支
git checkout branchName         //切換分支
git checkout -b branchName      //創建並切換分支   
git merge another_branch        //在當前分支合併another_branch的內容  
git branch -d   branchName      //刪除本地分支
git push origin -d branchName   //刪除遠程分支
cat fileName                    //查看當前分支下該文件的內容

注意,當有多個分支時,在當前分支下修改file的內容並提交,只會改變當前分支,其他分支不會改變。即分支可並行操作
但是在使用merge並行分支合併時,會出現衝突
如,我建立了分支fetch1和fetch2,master提交的test.txt的內容爲master,fetch1提交的test.txt的內容是fetch1,fetch2提交的test.txt內容是fetch2,現要將fetch1 和fetch2均使用git merge another_branch合併到master分支,在合併第二個分支時會出現如下錯誤:
CONFLICT (content): Merge conflict in test.txt
test.txt文件裏是這樣的

what
<<<<<<< HEAD
*fetch1
=======*
fetch2
………fetch2

只要把文件改爲
what
fetch1
fetch2
然後重新add和commit即可


在使用rebase進行分支合併也會出現和merge相同的衝突
解決辦法:如上例,在未合併fetch2時切換到fetch2,或以上操作已經完成的情況下,可以使用git reset –hard HEAD~回退到上一步,再切換到fetch2,若此時直接使用git rebase master就會出現衝突
同上,修改文件內容再add和git rebase –continue
若要取消rebase,指定 –abort選項

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