1. 程式人生 > >【Git】Git客戶端使用

【Git】Git客戶端使用

Git的Gui不怎麼好用,建議使用Git Bash命令。 Git的結構如下: 本地工作區 - 本地暫存區 - 本地倉庫 - 遠端倉庫 倉庫中有分支,每個分支記錄了不同的commit資訊,取決於使用者commit到哪個分支。一般來講,不是大型專案,一般都只使用一個master分支。 提交資料流程如下: 初次使用,需要先配置使用者資訊,這要用到git config。 A、GitLab中是空專案(在網頁中建立了專案) 空專案意味著沒有資料,那麼只能從本地上傳,而不能先從GitLab中clone下來(事實上clone也可以,不過沒有意義),空專案與非空專案僅第一步操作不同。

1、使用git init

建立本地倉庫(會在當前資料夾生成.git資料夾,本資料夾中所有檔案都可以上傳)

2、編輯專案,使用git add .

增加本地所有檔案(自動過濾增加過的檔案,可以使用檔名代替.,只新增特定檔案到暫存區,當然還可以排除某些檔案,排除方法後面再說)

git add -A .或者git add --all .會將刪除的檔案去掉再增加

3、使用commit提交暫存區檔案到本地倉庫 4、使用git push將本地倉庫推送到遠端倉庫 B、GitLab中已有上傳過的專案 1、使用git clone從遠端倉庫複製專案,或者使用pull從遠端取回某個分支。

2、編輯專案,提交到暫存區,使用git add .

增加本地所有檔案(自動過濾增加過的檔案,可以使用檔名代替.,只新增特定檔案到暫存區,當然還可以排除某些檔案,排除方法後面再說)

3、使用commit提交暫存區檔案到本地倉庫 4、使用git push將本地倉庫推送到遠端倉庫 git命令詳解: 一、配置使用者資訊

git config --global user.name "beatfan.hu"

git config --global user.email "[email protected]"

二、設定遠端倉庫別名

#網址太長,後面不想用網址,可以使用remote命令來設定遠端別名,origin則代表網址

git remote add origin http://192.168.10.222:8888/ControlBD/ControlBD_Microchip.git

三、初始化本地倉庫 git init 四、新增檔案到暫存區

git add filename (若filename替換為表示所有檔案,自動過濾新增過的檔案)

注意:git跨平臺開發時,回車換行符有問題,所以,git add filename  時會提示

warning: LF will be replaced by CRLF

 …… 

The file will haveits original line endings in your working directory.

Git可以在你提交時自動地把行結束符CRLF轉換成LF,而在簽出程式碼時把LF轉換成CRLF。用core.autocrlf來開啟此項功能,

如果是在Windows系統上,把它設定成true,這樣當簽出程式碼時,LF會被轉換成CRLF:

#checkin時將crlf轉化為lf,checkout時將lf轉化回crlf

$ git config --global core.autocrlf true

input  #提交時把CRLF轉換成LF,簽出時不轉換回crlf

$ git config –global core.autocrlf input

#取消轉化功能,適合僅在windows下開發

$ git config --global core.autocrlf false 

五、過濾檔案 1、在倉庫資料夾中建.gitignore檔案,.gitignore本身會被上傳,內容為: *.zip *.rar filename.xxx 2、在.git/inof/exclude中新增內容,格式與.gitignore相似,不過本身不會被上傳 六、提交暫存區到本地倉庫當前分支

git commit -m "註釋" 

若要檢視提交歷史,並且每個commit僅一行顯示,git log--pretty=oneline

七、比較差異 #工作區與暫存區的差異

git diff

#工作區與本地倉庫特定版本的差異,HEAD~1表示當前版本,HEAD~2表示上一版本,也可以使用commit_id

git diff HEAD~n 

八、切換分支

git checkout branchName

 #不寫預設為master

九、建立分支,並切換到新分支

git checkout -b branchName

十、列出所有分支

git branch  #列出本地所有分支

git branch -r #列出遠端所有分支 git branch -a #列出本地和遠端所有分支 十一、刪除修改分支

git branch -m oldname newname  #重新命名分支,若newname已存在,可使用-M強制重新命名

git branch -d branchName  #刪除branchName分支,-D強制刪除

git branch -d -r branchName  #刪除遠端branchName分支

十二、從特定分支中取回資料到工作區 #從特定提交ID中取回所有資料

git checkout commit_ID  #會取回這個commit_id的資料,並建立一個臨時匿名分支,此時如果不做commit,切換到其他分支,那麼這個分支就會被銷燬,即便是提交,你也只能從這次提交的id中取回,無法顯式找到匿名的分支。

git checkout master filename #從master分支取回特定檔案,. 表示所有檔案。

git checkout commit_ID filename #取回特定提交id的檔案,將filename替換為. 則表示取回所有檔案

git checkout .   #危險命令,從暫存區中取回所有資料,覆蓋工作區

十三、從遠端倉庫下載

git clone http://xxx.xxx.xxx.xxx/beatfan.hu/bsp_pic32mzef.git #最後面不新增目錄預設下載到當前目錄

十四、推送到遠端倉庫

git push remoteUrl/別名 本地分支名:遠端分支名 #省略本地分支名和: 則推送當前分支,git push remoteUrl master,注意 : 不能單獨有,相當於空分支替代遠端分支,即刪除

git push remoteUrl :master = git push remoteUrl --delete master #刪除遠端master

git push remoteUrl master   #將當前分支推送到遠端master分支

git push --all remoteUrl  #將本地所有分支提交到remoteUrl

十五、從遠端倉庫取回資料

操作與push相似,參考push

git pull remoteUrl/別名  遠端分支名:本地分支名

十六、檢視本地倉庫及工作區狀態

git status  #檢視倉庫及工作區狀態,會顯示未新增的檔案,及更新資訊

十七、檢視日誌

git log #檢視當前分支commit到本地倉庫的歷史,加上 --pretty=oneline表示每個顯示一行

git reflog #檢視所有分支commit到本地倉庫中的歷史,包含已經撤銷的commit 十八、設定代理 #設定代理

git config --global http.proxy http://192.168.10.209:3128 

git config --global https.proxy http://192.168.10.209:3128

十九、移除代理

git config --global --unset http.proxy  

git config --global --unset https.proxy

示例,批處理提交資料: @echo off @title git bat rem 臨時新增git命令目錄到path變數

set path=%path%;"C:\Program Files\Git\cmd\"

set remoteUrl="http://192.168.10.222:8888/ControlBD/ControlBD_Microchip.git"

git config --global core.autocrlf false

git add -v . git commit -m "test add"

git config --global user.name "beatfan.hu"

git config --global user.email "[email protected]"

git push %remoteUrl% master:master