代碼管理工具作用
- 防止代碼丟失,做備份
- 代碼版本的管理,可以進(jìn)行多個(gè)節(jié)點(diǎn)的備份,在多個(gè)版本之間跳躍
- 可以方便的將代碼在多人之間進(jìn)行共享傳輸
- 多人開(kāi)發(fā)時(shí)有各種模式可以方便代碼管理
git
git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),可用于高效的管理大小項(xiàng)目。
分布式和集中式
- 分布式:每個(gè)節(jié)點(diǎn)都保存完成的代碼,沒(méi)有明確的中央服務(wù)器,節(jié)點(diǎn)之間項(xiàng)目推送下載代碼完成代碼共享
- 集中式:代碼集中管理,每次完成的代碼上傳到中央管理器,然后再統(tǒng)一從中央管理器下載代碼使用
git特點(diǎn)
- git可以管理各種文件,特別是代碼項(xiàng)目,多在*nix系統(tǒng)中使用
- git是分布式管理,不同于集中式,這是git和svn的核心區(qū)別
- git可以更好的支持分支,方便多人協(xié)同工作
- git分布式代碼更安全,有全球唯一的commit版本號(hào)
- git是開(kāi)源的系統(tǒng)
- git可以脫網(wǎng)工作,且數(shù)據(jù)傳輸速度較快
git安裝
- linux:
sudo apt-get install git - windows: Git for windows
git配置命令
配置級(jí)別
- 系統(tǒng)中所有的用戶都可使用該配置
命令:git config --system
配置文件:/etc/gitconfig - 當(dāng)前用戶可使用該配置
命令:git config --global
配置文件:~/.gitconfig - 當(dāng)前項(xiàng)目可使用該配置
命令:git config
配置文件:project/.git/config
配置內(nèi)容
- 配置用戶名
配置用戶名為:Jason
sudo git config --system user.name Jason - 配置用戶郵箱
配置郵箱為:123@yeah.net
git config --global user.email 123@yeah.net - 配置編譯器
配置編譯器為:sublime
git config core.editor sublime - 查看配置信息
git config --list
git命令
常用基本命令
- 初始化倉(cāng)庫(kù)
git init
在某個(gè)目錄下初始化倉(cāng)庫(kù)后會(huì)自動(dòng)產(chǎn)生.git目錄。該目錄下工作的所有文檔即可以使用git進(jìn)行管理。 - 查看分支狀態(tài)
git status
默認(rèn)工作分支為master,可通過(guò)創(chuàng)建新的分支切換 - 文件提交
git add [file]- 將文件提交到暫存區(qū)
- 提交內(nèi)容可以是一個(gè)文件,多個(gè)文件用個(gè)空格分開(kāi)
- 如果是
*表示所有文件,也可以是目錄
- 刪除暫存區(qū)某個(gè)文件提交記錄
git rm --cached file - 文件同步到本地倉(cāng)庫(kù)
git commit -m "some message"- 同步時(shí)需要附加一些同步信息在
-m后添加 - 所有對(duì)工作區(qū)的修改如果想同步到本地倉(cāng)庫(kù),都需要
add--->commit
- 同步時(shí)需要附加一些同步信息在
- 查看
commit日志git loggit log --pretty=oneline
一些工作區(qū)命令
- 查看本地文件和工作區(qū)差異
git diff file - 從本地倉(cāng)庫(kù)恢復(fù)文件
git checkout file - 丟棄工作區(qū)修改
git checkout -- file
本地倉(cāng)庫(kù)文件的移動(dòng)和刪除
用法和mv,rm命令相同。操作后直接commit即可工作區(qū)和本地倉(cāng)庫(kù)同步
- 移動(dòng)文件
git mv file dir - 刪除文件
git mv file
版本控制命令
- 回到上一個(gè)版本
git reset --hard HEAD^
HEAD后的^數(shù)量決定了回到上幾個(gè)版本 - 回到指定版本
git reset --hard commit_id
使用commit前7位即可,回到指定的版本 - 查看所有歷史版本號(hào)
git reflog
會(huì)有所有的操作記錄,最新的操作始終在最上邊
標(biāo)簽管理
在當(dāng)前工作位置添加快照,保存工作狀態(tài),一般用于版本的迭代。
創(chuàng)建新的標(biāo)簽
-
git tag v1.0創(chuàng)建新的標(biāo)簽 -
git tag v1.0 -m "message"添加標(biāo)簽信息 -
git tag v0.9 [commit_id]指定某個(gè)commit_id打標(biāo)簽
默認(rèn)在最新的commit_id處打標(biāo)簽
刪除標(biāo)簽
git tag -d v1.0
查看標(biāo)簽
-
git tag列出當(dāng)前標(biāo)簽 -
git show v1.0顯示標(biāo)簽具體信息
去往某個(gè)標(biāo)簽版本
git reset --hard v0.9
臨時(shí)工作區(qū)操作
- 創(chuàng)建保存臨時(shí)工作區(qū)
git stash - 查看保存的工作區(qū)
git stash list - 應(yīng)用哪個(gè)工作區(qū)
git stash apply stash@{1} - 應(yīng)用上一個(gè)工作區(qū)并且刪除
git stash pop - 刪除工作區(qū)
git stash drop stash@{0}刪除某一個(gè)
git stash clear刪除所有
分支操作
什么是分支
分支即每個(gè)人獲取原有代碼,在此基礎(chǔ)上創(chuàng)建自己的工作環(huán)境,單獨(dú)開(kāi)發(fā),不會(huì)影響其他分支的操作。開(kāi)發(fā)完成后再統(tǒng)一合并到主線分支中。
分支的好處
安全,不影響其他人工作,自己控制進(jìn)度
分支操作
- 查看當(dāng)前分支
git branch
前面有*號(hào)的分支表示當(dāng)前正在工作的分支 - 創(chuàng)建分支
git branch [branch_name] - 切換工作分支
git checkout [branch] - 創(chuàng)建并切換到新的分支
git checkout -b [branch_name] - 分支合并
git merge [branch]將某個(gè)分支合并到當(dāng)前分支- 合并過(guò)程中如果沒(méi)有沖突則直接合并后當(dāng)前分支即為干凈的狀態(tài)
- 如果產(chǎn)生沖突則需要人為選擇然后在進(jìn)行
add,commit等操作 - 在創(chuàng)建分支前盡量保證當(dāng)前分支是干凈點(diǎn),以減少?zèng)_突的發(fā)生
- 刪除分支
git branch -d [branch_name] - 強(qiáng)制刪除沒(méi)有合并的分支
git branch -D [branch_name]
遠(yuǎn)程倉(cāng)庫(kù)
遠(yuǎn)程主機(jī)上的倉(cāng)庫(kù)。實(shí)際上git是分布式的,每一臺(tái)主機(jī)的git結(jié)構(gòu)都相似,只是把其他主機(jī)的git倉(cāng)庫(kù)叫做遠(yuǎn)程而已。
創(chuàng)建共享倉(cāng)庫(kù)
- 創(chuàng)建文件夾
mkdir gitrepo - 設(shè)置文件夾屬主
chown imings:imings gitrepo - 將該文件夾設(shè)置為可共享的git倉(cāng)庫(kù)
cd gitrepo
git init --bare fly.git - 設(shè)置本地倉(cāng)庫(kù)屬主
chown -R imings:imings fly.git
添加遠(yuǎn)程倉(cāng)庫(kù)
git remote add origin imings@127.0.0.1:/home/imings/gitrepo/fly.git
- 默認(rèn)使用SSH作為傳輸手段
- 必須在本地的某個(gè)git倉(cāng)庫(kù)下執(zhí)行才能使本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián)
刪除遠(yuǎn)程主機(jī)
git remote rm [origin]
將本地分支推送到遠(yuǎn)程
git push -u origin master
在第一次向遠(yuǎn)程倉(cāng)庫(kù)推送時(shí)需要加 -u選項(xiàng),以后就不需要了
從遠(yuǎn)程倉(cāng)庫(kù)獲取項(xiàng)目
git clone imings@127.0.0.1:/home/imings/gitrepo/fly.git
從遠(yuǎn)程倉(cāng)庫(kù)拉取分支或代碼
- 直接拉取遠(yuǎn)程分支和當(dāng)前工作分支合并
git pull origin imings* - 拉取遠(yuǎn)程分支到本地,不合并
git pull origin imings(遠(yuǎn)程分支名) : imings(本地分支名)
代碼退出和拉取
- 將本地代碼推送到連接的遠(yuǎn)程倉(cāng)庫(kù)
git push
git push --force origin當(dāng)本地版本比遠(yuǎn)程版本舊是用本地舊版本覆蓋遠(yuǎn)程 - 從遠(yuǎn)程倉(cāng)庫(kù)更新代碼
git pull
git fetch如果有新的分支拉取到本地不會(huì)和本地分支合并
github
- github是一個(gè)開(kāi)源項(xiàng)目社區(qū)網(wǎng)站,擁有全球最多的開(kāi)源項(xiàng)目。開(kāi)發(fā)者可以注冊(cè)這個(gè)網(wǎng)站建立自己的github倉(cāng)庫(kù)。然后就可以在本地通過(guò)git像操作遠(yuǎn)程倉(cāng)庫(kù)一樣操作github倉(cāng)庫(kù)。
- git是github唯一指定的代碼管理工具。
- 網(wǎng)址:https://github.com/
添加ssh秘鑰
- 在本地主機(jī)生成ssh密鑰對(duì)
ssh-keygen - 默認(rèn)密鑰對(duì)存放在
~/.ssh/下 - 生成過(guò)程會(huì)提示設(shè)置密碼,如果直接回車則表示不設(shè)置密碼
- 進(jìn)入
~/.ssh目錄復(fù)制id_rsa.pub公鑰內(nèi)容 - 登錄github賬號(hào),找到
settings -
settings左側(cè)SSH and GPG keys --> new ssh key填寫title,將復(fù)制內(nèi)容加入key文本框點(diǎn)擊add...
操作github倉(cāng)庫(kù)
-
git remote連接遠(yuǎn)程github倉(cāng)庫(kù),如果需要輸入密碼輸入github密碼即可 - 使用
git push等操作遠(yuǎn)程倉(cāng)庫(kù)的方法操作即可