您好,登錄后才能下訂單哦!
這篇“Git常用命令和多賬號配置的方法”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Git常用命令和多賬號配置的方法”文章吧。
Git常用命令和多賬號配置團隊合作開發中少不了版本控制管理工具,因為近期公司項目從 SVN
更換成 Git
,這里主要做一個復習總結。 SVN
和 Git
最主要要的區別: SVN
是集中式的, Git
是分布式的。 Git
的優勢在于易于本地添加分支和分布式的特性,可離線提交,處理了異地團隊協同開發等 SVN
不能處理的問題。
Git
最核心的一個概念就是工作流。
工作區(Workspace) 是電腦中實際的目錄。
暫存區(Index) 相似于緩存區域,臨時保存你的改動。
倉庫區(Repository) ,分為本地倉庫和遠程倉庫。
git_desc.jpeg
先來偷個圖(圖片來源于網絡):
git_command.jpg
# 在當前目錄新建一個Git代碼庫$ git init# 新建一個目錄,將其初始化為Git代碼庫$ git init [project-name]# 下載一個項目和它的整個代碼歷史 [Git only]$ git clone [url]
# 列舉所有配置$ git config -l# 為命令配置別名$ git config --global alias.co checkout$ git config --global alias.ci commit$ git config --global alias.st status$ git config --global alias.br branch# 設置提交代碼時的客戶信息$ git config [--global | --local] user.name "[name]"$ git config [--global | --local] user.email "[email address]"
# 增加指定文件到暫存區$ git add [file1] [file2] ...# 增加指定目錄到暫存區,包括子目錄$ git add [dir]# 增加當前目錄所有文件到暫存區$ git add .# 刪除工作區文件,并將這次刪除放入暫存區$ git rm [file1] [file2] ...# 中止追蹤指點文件,但不刪除$ git rm --cached [file]# 文件改名,并放入暫存區$ git mv [old] [new]
# 提交暫存區到倉庫區$ git commit -m [message]# 提交暫存區的指定文件到倉庫區$ git commit [file1] [file2] ... -m [message]# 提交工作區自上次commit之后變化,直接到倉庫區$ git commit -a# 提交時顯示所有diff信息$ git commit -v# 使用一次新的commit,代替上一次提交;若代碼無變化,則改寫上次commit的提交信息$ git commit --amend -m [message]# 重做上一次commit,并包括指定文件的新變化$ git commit --amend [file1] [file2]
# 顯示所有本地分支$ git branch# 列出所有遠程分支$ git branch -r# 列出所有本地分支和遠程分支$ git branch -a# 新建分支,但停留在當前分支$ git branch [branch-name]# 新建分支,與指定遠程分支建立追蹤關系$ git branch --track [branch] [remote-branch]# 刪除分支$ git branch -d [branch-name]# 刪除遠程分支$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]# 新建分支,并切換到該分支$ git checkout -b [branch-name]# 切換到指定分支,并升級工作區$ git checkout [branch-name]# 切換到上一個分支$ git checkout -# 建立追蹤關系,在現有分支與指定的遠程分支之間$ git branch --set-upstream [branch] [remote-branch]# 合并指定分支到當前分支$ git merge [branch]# 衍合指定分支到當前分支$ git rebase [branch]# 合并一個commit到當前分支$ git cherry-pick [commit]
# 列出所有本地標簽$ git tag# 基于最新提交創立標簽$ git tag [tag]# 刪除標簽$ git tag -d [tag]# 刪除遠程標簽$ git push origin :refs/tags/[tag]# 查看標簽信息$ git show [tag]# 提交指定標簽$ git push [remote] [tag]# 提交所有標簽$ git push [remote] --tags# 新建一個分支,指向某個標簽$ git checkout -b [branch] [tag]
# 顯示狀態$ git status# 顯示當前分支的版本歷史$ git log# 顯示commit歷史,以及每次commit發生變更的文件$ git log --stat# 搜索提交歷史,根據關鍵詞$ git log -S [keyword]# 顯示某個文件的版本歷史,包裹文件改名$ git log --follow [file]$ git whatchanged [file]# 顯示指定文件相關的每一次diff$ git log -p [file]# 顯示過去5次提交$ git log -5 --pretty --oneline# 顯示所有提交過的客戶,按提交次數排序$ git shortlog -sn# 顯示指定文件是什么人在什么時間修改過$ git blame [file]# 查看某人提交記錄$ git log --author=[username] # 顯示暫存區和工作區差異$ git diff# 顯示暫存區和上一個commit差異$ git diff --cached [file] # 顯示工作區和當前分支最新commit之間的差異$ git diff HEAD# 查看某次提交具體修改內容$ git show [commit]# 顯示某次提交發生變化的文件$ git show --name-only [commit]# 顯示某次提交,某個文件的內容$ git show [commit]:[file]# 顯示當前分支最近幾次提交$ git reflog
# 下載遠程倉庫的所有變動$ git fetch [remote]# 取回遠程倉庫變化,并與本地分支合并$ git pull [remote] [branch]# 取回遠程倉庫的變化,并與本地分支變基合并$ git pull --rebase [remote] [branch]# 顯示所有遠程倉庫$ git remote -v# 顯示某個遠程倉庫的信息$ git remote show [remote]# 添加一個新的遠程倉庫,并命名$ git remote add [remote-name] [url]# 上傳本地指定分支到遠程倉庫$ git push [remote] [branch]# 強行推送當前分支到遠程倉庫,即便有沖突$ git push [remote] --force# 推送所有分支到遠程倉庫$ git push [remote] -all
# 恢復暫存區的指定文件到工作區$ git checkout [file]# 恢復暫存區當前目錄的所有文件到工作區$ git checkout .# 恢復工作區到指定 commit$ git checkout [commit]# 重置暫存區的指定文件,與上一次 commit 保持一致,但工作區不變$ git reset [file]# 重置暫存區與工作區,與上一次 commit 保持一致$ git reset --hard# 重置當前分支的指針為指定 commit,同時重置暫存區,但工作區不變$ git reset [commit]# 重置當前分支的HEAD為指定 commit,同時重置暫存區和工作區,與指定 commit 一致$ git reset --hard [commit]# 撤銷工作目錄中所有未提交文件的修改內容$ git reset --hard HEAD# 新建一個 commit,用于撤銷指定 commit,后者所有變化將被前者抵消,并應用到當前分支$ git revert [commit]# 將未提交的變化放在儲藏區$ git stash# 將儲藏區的內容恢復到當前工作區$ git stash pop
有時候我們自己有 github
的賬號作為個人使用,公司團隊使用 gitlab
另一賬號,這時我們就需要對同一設施配置多賬號。
分別對 github
和 gitlab
生成對應的密鑰(默認情況下本地生成的秘鑰位于 /Users/客戶名/.ssh/
),并且配置 git
訪問不同 host
時訪問不同的密鑰,流程如下:
在 gitbash 中使用 ssh-keygen -t rsa -C "公司郵箱地址"
生成對應的 gitlab 密鑰:id_rsa
和 id_rsa.pub
。
將 gitlab 公鑰即 id_rsa.pub
中的內容配置到公司的 gitlab 上
在 gitbash 中使用 ssh-keygen -t rsa -C "github 郵箱地址" -f ~/.ssh/id_rsa.github
生成對應的 github 密鑰:id_rsa.github
和 id_rsa.github.pub
將 github 公鑰即 /id_rsa.github.pub
中的內容配置到自己的 github 上
進入密鑰生成的位置,創立一個 config
文件,增加配置:
Host gitlab #域名地址的別名 HostName gitlab.com #這個是真實的域名地址 User gitlab #配置使用客戶名 IdentityFile ~/.ssh/id_rsa.github #這里是id_rsa的地址 Host github HostName github.com User github IdentityFile ~/.ssh/id_rsa
在密鑰的生成位置 /Users/客戶名/.ssh/
下使用 gitbash
運行 ssh -T git@hostName
命令測試 sshkey
對 gitlab
與 github
的連接:
ssh -T git@gitlab# 假如配置正確會提醒Welcome to GitLab, @gitlab! ssh -T git@gihub# 假如配置正確會提醒Hi github! You've successfully authenticated, but GitHub does not provide shell access.
git
的 config
文件記錄了客戶的基本信息,我們的賬號信息也在里面,這里我們要做的就行在不同的本地倉庫配置不同的客戶信息來訪問不同的遠程倉庫
config 文件通常有三個位置:
system (系統級別) 位于 Windows 下在 git 的安裝目錄, 包含了適用于系統所有客戶和所有庫的值。假如你傳遞參數選項 --system
給 git config
,它將明確的讀和寫這個文件。
global(客戶級別) 位于 ~/.gitconfig
,具體到你的客戶。你可以通過傳遞 --global
選項使Git 讀或者寫這個特定的文件。
local(倉庫級別) 位于 .git/config
,無論你當前在用的庫是什么,特定指向該單一的庫優先級最高。
客戶級別配置
由于公司的代碼使用頻率較高,所以將 git
配置文件的 global
(客戶級別)設置為公司的 gitlab
賬號:
$ git config --global user.name "gitlab" // 公司賬號名稱$ git config --global user.email "gitlab@gitlab.com" // 公司賬號郵箱
倉庫級別配置
將 local
(倉庫級別)配置成 github
的賬號。此時需要先 init
一個 git
的倉庫并進入里面后執行如下命令:
$ git config --local user.name "github" // github 賬號名稱$ git config --local user.email "github@github.com" // github 賬號郵箱
# 之前的方式:單個賬號git clone git@github.com:xxxx/xxx.git #缺省config配置時git clone git@github:xxxx/xxx.git #config配置后,等價于第一條語句# 現在要改為,git clone git@域名別稱:xxxx/xxx.git# 就是使用域名地址的別名來區分git clone git@github:xxxx/xxx.gitgit clone git@gitlab:xxxx/xxx.git
以上就是關于“Git常用命令和多賬號配置的方法”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。