Git超詳細用法,通俗易懂

創建本地倉庫 和 遠端共享倉庫

  1. 直接下載安裝包:Git下載地址
  2. 安裝 git,查看 git 版本,git version
  3. 配置項目的 git 賬號
    • git config –global user.name “XXX”
    • git config –global user.email “[email protected]”> >
  4. 查看是否配置成功 git config –list
  5. 生成並獲取公私秘鑰
  6. cat id_rsa.pub 讀取公鑰,存入 gitlab–>setting–> SSH Keys
    • 在個人設置頁面,左邊選中SSH and GPG keys,在右邊添加公鑰,title是key的名稱,可以隨便取,可更改,key是上面我們獲取到的公鑰,填寫完畢後點擊add SSH key按鈕,這樣遠端就添加到了密鑰。
  7. 克隆遠端倉庫至本地:ssh方式:這是一種相對安全的方式
    • 獲取所拉取項目的 ssh clone 地址
    • cd 項目目錄文件
    • git clone ssh://git@XXXXXXX

http連接方式

  • 這種方式要求project在創建的時候只能選擇「Public」公開狀態,Private和Internal私有模式下不能使用http方式進行連接。(ssh方式在三種模式下都可以),使用http方式直接連接gitlab顯然沒有ssh連接方式安全,但是也可以做些安全設置,比如在gitlab本機的iptables里做端口限制(如上是8081端口),添加白名單等。
  • gitlab上創建的項目倉庫,要注意該倉庫下的members權限,如果某個gitlab用戶沒有設置在該倉庫members權限下,則使用該gitlab用戶進行git clone操作可以,但是進行git push則會失敗!報錯:remote: GitLab: You are not allowed to push code to protected branches on this project.

mac 用戶操作命令時報錯:

  • 錯誤信息:Unhandled rejection Error: EACCES: permission denied, 表示沒權限,sudo 一下

本地操作-最最最基本用法

操作 命令
查看分支 git branch
創建分支 git branch
切換分支 git checkout
創建+切換分支 git checkout -b
合併某分支到當前分支 git merge
刪除分支 git branch -d
強制刪除分支 git branch -D
添加文件至暫存區 git add (可多次,可多個文件)
提交暫存區文件 git commit -m <提交信息>
拉取遠端至本地 git pull
推送本地至遠端 git push
查看提交日誌 git log
查看倉庫當前的狀態 git status
版本回退 git reset –hard commit_id
回退至上一版本 git reset –hard HEAD^
工作現場「儲藏」 git stash
查看儲藏列表 git stash list
恢復儲藏區內容 git stash apply(恢復後,stash內容並不刪除,需用 git stash drop 來刪除)
恢復儲藏區內容 git stash pop(儲藏應用並刪除)
恢復指定的stash git stash list查看 git stash apply stash@{0}

多人協作

  1. push之前,最好先pull一下,因為遠程分支可能會有更新,需要先合併並解決衝突
  2. 如果git pull提示no tracking information,則說明本地分支和遠程分支沒有創建關聯,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
  3. 查看遠程庫信息,使用git remote -v
  4. git 本地分支 track 遠程分支
    • 其實在從遠程分支分出來的分支都是跟蹤分支(track),當對該分支進行 push 和 pull 時,如果該分支和遠程分支同名,git會知道推送到遠程哪個分支,從哪個遠程分支同步到本地分支。其實每次克隆一個倉庫時,本地都會新建一個 master分支來track遠程的origin/master。如果不同名,我們需要人為指定 git push origin branch_name
    • 如果本地新建了一個分支 branch_name,但是在遠程沒有,這時候 push 和 pull 指令就無法確定該跟蹤誰,一般來說我們都會使其跟蹤遠程同名分支,所以可以利用git push --set-upstream origin branch_name,這樣就可以自動在遠程創建一個 branch_name 分支,然後本地分支會track該分支。後面再對該分支使用 push 和 pull 就自動同步。無需再指定分支。
    • 跟蹤遠程分支:如果遠程新建了一個分支,本地沒有該分支,可以利用git checkout --track origin/branch_name ,這時本地會新建一個分支名叫 branch_name ,會自動跟蹤遠程的同名分支 branch_name。

總結

  1. 利用 git push –set-upstream origin branch_name 來在遠程創建一個與本地branch_name 分支同名的分支並跟蹤;
  2. 利用 git checkout –track orgin/branch_name 來在本地創建一個與遠端branch_name 分支同名的分支並跟蹤。

git忽略某些文件(文件夾)提交

開發過程中有些緩存文件不想提交,但是git已經維護項目了,這時候使用.gitignore文件忽略也是沒有意義的,並不會起作用,可以使用如下方法忽略文件或文件夾提交:

  • 忽略單個文件:git update-index –assume-unchanged /path/file
  • 恢復跟蹤: git update-index –no-assume-unchanged /path/file
    回復跟蹤使用場景:在拉取代碼或者切換分支時,提示有改變未被提交或stash,但是使用git status查看 提示並沒有文件更新,git stash 提示 git stash No local changes to save,這時建議查看一下git提示的有問題的文件,設置了忽略,用以上命令來恢復跟蹤
Tags: