# 生成ssh key,公鑰添加到gitlab,用於帳號認證。生成過一次就不須要再次生成了。
$ ssh-keygen
# 運行命令後,按3次回車便可
# 拷貝公鑰文件
$ cat ~/.ssh/id_rsa.pub
#配置用戶信息(郵箱用公司郵箱)
$ git config --global user.name <username>
$ git config --global user.email <email>
# 添加文件到暫存區
$ git add <file1> <file2>
# 添加目錄到暫存區
$ git add <dir>
# 添加當前目錄下全部已修改和未跟蹤文件到暫存區
$ git add .
# 刪除文件,同時刪除本地和暫存區文件
$ git rm <file>
# 將文件從暫存區刪除,保留工做區文件
$ git rm --cached/staged <file>
# 重命名文件
$ git mv <file> <file-new>
# 忽略原來未改變的文件權限
$ git config --add core.filemode false
$ git checkout vendor/
# 提交暫存區內容到本地倉庫
$ git commit -m <"message">
# 跳過暫存區,提交本地全部修改到本地倉庫(不包含新添加的文件)
$ git commit -am <"message">
# 追加提交,上一次修改漏提了一個文件
# 若是上一次提交後代碼沒有變化,此命令能夠改寫上一次的提交日誌
$ git commit --amend -m <"message">
# 列出全部本地分支,"*"號開頭的爲當前分支
$ git branch
# 列出全部遠程分支
$ git branch -r
# 列出全部本地分支和遠程分支
$ git branch -a
# 切換分支
$ git checkout <branch_name>
# 以本地分支當前狀態,新建分支並檢出該新分支(未提交的修改也將帶到新分支)
$ git checkout -b <branch_name>
# 以遠程分支新建本地分支,檢出該分支,並和遠程分支創建跟蹤關係
$ git checkout -b <branch_name> <remote_name>/<remote_branch>
# 例如: git checkout -b FEA/BUG-002 origin/FEA/BUG-002
# 切換到上一個分支
$ git checkout -
# 創建當前分支與遠程分支的跟蹤關係
$ git branch --set-upstream-to=<remote_name>/<branch_name>
# 例如: git branch --set-upstream-to=origin/develop
# 合併本地分支到當前分支
$ git merge <branch_name>
# 合併遠程分支到當前分支
# 合併前,先要執行git pull/fetch
$ git merge <remote_name>/<branch_name>
# 刪除本地分支(只能刪除已合併分支)
$ git branch -d <branch_name>
# 列出全部tag
$ git tag
# 從指定commit新建tag
$ git tag <tag_name> <commit>
# 刪除本地tag
$ git tag -d <tag_name>
# 推送指定tag
$ git push <remote_name> <tag_name>
# 推送全部tag
$ git push --tags <remote_name>
# 以指定tag新建分支
$ git checkout -b <branch_name> <tag_name>
# 下載全部遠程倉庫更新
$ git fetch <remote_name>
# 例如: git fetch origin
# 顯示遠程倉庫地址
$ git remote -v
# 顯示指定遠程倉庫信息,包括有哪些遠程分支等
$ git remote show <remote_name>
# 添加遠程倉庫
$ git remote add <remote_name> <url>
# 清理遠程分支
$ git remote prune <remote_name>
# 若是遠程倉庫刪除了某些分支,此命令會將遠程分支從本地列表中刪除
# 拉取遠程倉庫指定分支的更新,併合併到當前分支
$ git pull <remote_name> <branch_name>
# 例如: git pull origin master
# 此命令會拉取origin倉庫全部更新,併合並最新遠程master到當前分支
# 推送本地分支到遠程倉庫
$ git push <remote_name> <branch_name>
# 例如: git push origin master
# 此命令推送當前master分支到遠程倉庫
# 推送全部分支到遠程倉庫
$ git push --all <remote_name>
# 取消工做區文件的修改
$ git checkout -- <file>
# 將指定文件從暫存區撤出
$ git reset -- <file>
# 新建一個名爲.gitignore文件,可將此文件提交到git倉庫,語法以下:
*~ #忽略全部以波浪號(~)結尾的文件
*.a #忽略全部以.a結尾的文件
!lib.a #但lib.a除外
/TODO #僅忽略項目根目錄下的TODO文件,不包含subdir/TODO
build/ #忽略build/目錄下的全部文件
doc/*.txt #忽略doc/notes.txt,但不包括doc/server/arch.txt