git與github

weixin_47824664發表於2020-11-20

Git-版本控制,多人協作,分散式;

Github-開源專案,遠端倉庫 

 

我在github上建立了一個倉庫 https://github.com/abcd/2016ife

現在我要把它下載到本地;

cd g:                       

cd github/test       

git clone url            這裡url填寫倉庫的地址;如:https://github.com/abcd/2016ife.git

cd 2016ife           

進入後如下:

 

git config --global user.name "xxxxxxx"            //設定全域性的使用者名稱,回車後沒有提示就是設定成功了;

git config --global user.email "xxxxx@163.com"     //設定郵箱

設定了這兩個,當我們提交程式碼的時候就會把這兩個記錄在版本庫裡,其他人就可以檢視到;

git config --global user.email        //我們設定好了,也可以檢視的;回車後會列印出郵箱;

git config --list     //檢視到所有的配置

master是主分支的預設名稱;建立一個分支,不影響穩定的主分支master,等分支做好了,再合併到主分支。

git的三個區

工作區,暫存區,版本區(庫)

工作區-->暫存區-->版本區

暫存區:工作區要提交程式碼到版本區,需要經過暫存區;

先將改好的程式碼扔到暫存區,再把暫存區的扔到版本區;

暫存區的作用:作為過渡層,避免誤操作,保護工作區和版本區,分支處理; 

git status   //檢視當前工作區和暫存區的狀態

 

提示,nothing to commit……

我把xinshijie這個資料夾拷貝到了本地2016ife那個資料夾中,再在命令列輸入git status

 

表示有一個資料夾的內容現在沒有提交到暫存區和版本區,現在正在工作區;

git add xinshijie/    //新增到暫存區git add 檔名 檔名可以是具體的檔案,也可以是資料夾的名字;git add .  全部新增到暫存區;

 

可以看到紅色的是 +1 ~0 -0 表示在工作區,有1個新增的檔案(資料夾),0個修改,和0個刪除的檔案;

綠色的是暫存區的;最後,看不見紅色了的,表示工作區已經乾淨了;

所以從工作區到暫存區,通過 git add這個命令來實現;

接下來,把暫存區檔案放入版本庫:

git commit      //會直接彈出個記事本,要我們增加註釋; 而通過 git commit -m "change demo1"  這樣不會開啟記事本,而快速新增註釋; -m "註釋內容"  ;

git commit -a -m "快速註釋      //這樣可以直接從工作區到版本區-a 是簡寫的add,添加到暫存區

 

再次使用 git status;看到已經提交有1個版本了;

 

git log         //檢視提交歷史,按q退出;

git diff        //比較工作區暫存區的不同;

git diff --cached git diff --staged //比較暫存區版本庫的不同;

git diff master       //比較工作區版本庫的不同;

撤銷操作:

git reset HEAD <file.name>     //從暫存區撤銷回工作區,<file.name>輸入檔名

git checkout -- <file.name>     //從工作區撤銷回版本區

git commit --amend                 //撤銷提交操作

注意:

 

這裡的邏輯是這樣的:我現在有兩個檔案在工作區;我首先新增了 drag.js到暫存區,然後提交到了版本區;這時我才發現還有個demo1.html沒有提交;其實我的想法是把這兩個檔案一次提交成功(涉及到提交的版本);解決方法:先把demo1.html新增到暫存區;然後使用 git commit -m "change3 drag.js and demo1.html" --amend  這樣就會撤銷掉上次提交,並且一起再提交;這樣就完成了撤銷,兩個檔案一起提交。

刪除

git rm <file.name>                       //刪除暫存區的內容;我們工作區假如刪了一個檔案,通過這個命令把暫存區的也刪掉;

git rm -f <file.name>                   //工作區和暫存區都有檔案的時候,強制刪除暫存區和工作區對應的檔案

git rm --cached <file.name>        //工作區和暫存區都有檔案時,只刪除暫存區的檔案,但保留工作區檔案

 

恢復

通過git log可以看到cmmitID

git checkout commit_id <file.name>       //這是對指定檔案進行恢復

git reset --hard commit_id                      //恢復到以前的版本

head 版本的指標 ,指標來控制版本 

git reset --hard HEAD^         //回到前一個版本

git reflog       //可以檢視所有分支的所有操作記錄(包括commitreset的操作)

這樣用git reset --hard commit_id     可以恢復到以前的版本了; 

 

下面將本地的開發,傳到github上;

我們要先登入github的客戶端;先可以看下是否登入了github賬號;

git remote  //檢視遠端倉庫的名字,clone下,預設是origin 這個名字

git remote -v  //檢視對應的遠端倉庫的地址

git push origin master      //git push 遠端倉庫的名字 要同步的分支

這樣我們就提交到了遠端倉庫;

 

多人協作的時候,要新增新的協作人員;

 

這樣就會給使用者傳送一個請求,讓他來一起開發這個專案;

另外一個人收到許可權,仍然使用 git clone url 來獲取到本地;後面的操作命令都一樣;

 

多人協作開發

先拉取同步更新下,避免衝突;

多人協作解決衝突;

git pull與 git fetch的區別:

git fetch   //不合併到分支中,先解決衝突,再手動地合併

git diff master origin/master   //檢視差別

git merge origin/master         //手動合併

git pull    //直接合併到檔案中,不容易檢視到差別;

 

開源專案協作:fork;pull request

如何參與到沒有許可權的開源專案中呢?

fork 完全映象了一個版本,放到自己的賬號中

修改完後,pull request,發到請求到作者那邊;

刪除倉庫

settings中有 delete this repository;刪除要特別小心,不要誤刪了,刪除了是找不回來的。

git命令列

http://www.cnblogs.com/sysu-blackbear/p/3463475.html

相關文章