基本概念
- git 特點
- 本地存儲完整項目,離線使用
- 不逐行比較,只保存修改過的文件,未修改的文件不處理
- git文件的三種狀態(tài)
- 已提交(committed) -- 已保存到倉庫中受管理的文件
- 已修改(modified) -- 已修改,但未放到暫存區(qū)的文件
- 已暫存(staged) -- 放到寄存區(qū),未提交給倉庫的文件
-
git工作流
git工作流
安裝及配置
(ubuntu14下)
sudo apt-get install git-
git config --global user.name "userName",git config --global user.email "user@email.com"
(其他配置)
基本操作
- 創(chuàng)建倉庫(工作目錄) -
mkdir git_dir,cd git_dir,git init - clone 已有項目到倉庫 -
git clone url - 添加工作目錄中的(新跟蹤的或已修改的)文件/文件夾到暫存區(qū) -
git add fileName/direction - 提交文件到倉庫 -
git commit -m "what changed" - 修改上次提交的信息
- 僅本地:
git commit --amend - 已在遠(yuǎn)程:
git push -f
- 僅本地:
- 查看當(dāng)前工作目錄的文件狀態(tài) -
git status - 查看已修改文件與歷史版本的比較 -
git diff,圖形比較界面git difftool - 忽視文件(不受git管理) - 創(chuàng)建并配置文件
.gitignore - 恢復(fù)被修改的文件 -
git checkout -- <file> - 刪除文件 -
git rm file, 刪除目錄:git rm -r folder - 查看提交記錄
- 一般情況(使用reset后之前的記錄會被沖掉) -
git log - 所有提交過的記錄 -
git reflog - 精簡顯示
git --name-status --oneline可設(shè)置快捷別名:git config --global alias.ll 'log --name-status --oneline'
- 一般情況(使用reset后之前的記錄會被沖掉) -
- 取消放入暫存區(qū)的文件
git reset HEAD <file> - 版本回退
git reset --hard HEAD - 打標(biāo)簽
git tag -a v0.0.1 -m "tag message" - 儲藏(用于工作被打斷時,暫存當(dāng)前的工作狀態(tài)) -
git stash,- 顯示暫存狀態(tài):
git stash list, - 恢復(fù)暫存狀態(tài):
git stash apply - 刪除暫存狀態(tài):
git stash drop - 恢復(fù)暫存狀態(tài):
git stash pop
- 顯示暫存狀態(tài):
- 分支操作
- 查看分支:
git branch - 創(chuàng)建分支:
git branch branchName - 切換分支:
git checkout branchName - 刪除分支:
git branch -d branchName - 創(chuàng)建并切換分支:
git checkout -b branchName - 合并分支:
git merge branchName
- 查看分支:
解決沖突
- 直接使用某個分支
# 使用當(dāng)前分支的文件
git checkout --ours <file>
# 使用被合并的文件
git checkout --theirs <file>
-
手動解決沖突
- 在自己編輯器中修改
- 借助
git mergetool
-
通過習(xí)慣避免沖突
- 修改代碼之前 先 pull 代碼
- 通過 git flow 管理項目開發(fā)
遠(yuǎn)程git倉庫的使用 --阮一峰blog
使用git服務(wù)器
- 初始化一個本地倉庫
git init - 將現(xiàn)有倉庫clone出一個裸倉庫
git clone --bare my_project my_project.git-- 相當(dāng)于cp -rf my_project/.git my_project.git
遠(yuǎn)程倉庫通常以.git命名的裸倉庫 - 將裸倉庫拷貝到遠(yuǎn)程服務(wù)器上
scp -r my_project.git user@host:/path
scp 為security copy 用于實現(xiàn)兩個主機間的加密傳輸 - 至此,遠(yuǎn)程倉庫就搭建好了,可通過
git clone命令獲取倉庫內(nèi)容 - 建立遠(yuǎn)程倉庫的連接
git remote add origin git_server_path - 從遠(yuǎn)程倉庫獲取內(nèi)容
git pull origin master - 將本地倉庫內(nèi)容推送到遠(yuǎn)程倉庫
git push origin master
使用github
- 本地git設(shè)置
git config --global user.name "*YOUR NAME*"
git config --global user.email "*YOUR EMAIL ADDRESS*"
- github創(chuàng)建倉庫
- 通過ssh協(xié)議clone倉庫
git clone ssh_address/ 或者本地創(chuàng)建好項目,再git remote add remoteRepoName gitRepoPath - 將本機公鑰上傳到github
- 創(chuàng)建公鑰
ssh-keygen -t rsa -C "[your_email@youremail.com]"(如果有則不需要) - 復(fù)制
~./ssh/id_rsa.pub到https://github.com/settings/ssh新建的記錄
- 創(chuàng)建公鑰
- 驗證
git -T git@github.com - 通過git進行遠(yuǎn)程操作
參考資料:
