安裝
1、安裝msys git客戶端程序 2、打開git bash,命令ssh-keygen –C “admin@test.cn “ –t rsa 3、復制C:\Users\felix\.ssh\id_rsa.pub的內容到gitHublab里面的個人profile--ssh key中,title隨便起 4、初始配置 git config --global user.name "huangjunhua" git config --global user.email "huangjunhua@cnicgz.cn" git config --list pwd 5、測試ssh,命令ssh -T git@git.dev.cnicgz.cn -p 6822
簡單使用
cd /path/to #克隆 git clone ssh://git@git.dev.cnicgz.cn:6822/datacenter/maintain.git #提交本地 git commit -am “修改信息” #上傳遠程 git push #遠程更新 #建議用git fetch && git merge git pull
要點
Git 本地數據管理,大概可以分為三個區,工作區,暫存區和版本庫。
- 工作區(Working Directory)是我們直接編輯的地方,例如 Android Studio 打開的項目,記事本打開的文本等,肉眼可見,直接操作。
- 暫存區(Stage 或 Index) 數據暫時存放的區域,可在工作區和版本庫之間進行數據的友好交流。
- 版本庫(commit History) 存放已經提交的數據,push 的時候,就是把這個區的數據 push 到遠程倉庫了。
詳細使用
--命令git branch -a,列出所有分支,git branch dev 創建本地dev分區 --命令git checkout dev 切換到dev分區,工作區變成dev分支的內容 --命令git checkout –b dev 創建並切換到本地分支dev (其中,git branch dev 是創建本地分支dev ; git checkout dev 是切換分支) --命令git branch –d dev 刪除分支dev --命令git clone --recursive -b $分支 $遠程倉庫 $路徑 分支:master 遠程倉庫:ssh://git@git.dev.cnicgz.cn:6822/datacenter/maintain.git 路徑:/path/to/src 倉庫自動命名名為origin(origin相當於別名,運行git remote –v) --命令git status 查看本地(工作區)更新還沒提交到本地分支的文件(實際文件目錄) --命令git commit -am "本次提交描述"(結合git add. 和 git commit -m)工作區內直接提交到本地分支 git add . 把本地更新還沒提交到本地分支的文件增加到暫存區==git stage . git commit –m "本次提交描述" 把暫存區的內容提交到本地分支 --命令git push origin 本地分支:遠程分支 把本地分支內容提交到遠程分支,origin為默認遠程倉庫 --命令git log 查看git commit 版本 --命令git fetch 下載遠程更新,所有遠程倉庫內容下載到本地版本庫(.git) --命令git merge origin/cms 把當前本地分支和遠程指定分支進行merge, 若出現(XXX|MERGING)狀態, 利用 git diff 查看沖突無法解決的地方
--命令git pull origin 等於 git fetch && git merge,盡量使用git fetch 和git merge (6、7步)來代替git pull --命令git stash 備份工作區內容(從最近commit中備份),然后可以進行修復bug,修復完利用git stash pop恢復工作區內容 --命令git reset <commit_id> 默認-soft, 如果要hard程度就git reset --hard <commit_id>回退版本, 回退版本后想要回最新版本, --命令git reflog找到版本號后再次git reset <commit_id> --命令git rebase dev 把dev分支上的東西更新到當前分支上
場景應用
修改了4個文件,在不放棄任何修改的情況下,其中一個文件不想提交,如何操作?(沒add : git add 已經add: git reset –soft ) 修改到一半的文件,突然間不需要或者放棄修改了,怎么恢復未修改前文件? (git checkout) 代碼寫一半,被打斷去做其他功能開發,未完成代碼保存?(git stash) 代碼寫一半,發現忘記切換分支了?(git stash & git checkout) 代碼需要回滾了?(git reset)