新手git操作指南
前言:之前對git的操作只是停留在一個人的開發(fā)練習(xí)操作中,而git除了在版本管理方面有起到作用,對于多人協(xié)作也起了不少作用,導(dǎo)師也提了一個code review的想法,所以我也去多查看了一些常見的git操作,再此做一個記錄,也給之后一些實習(xí)小白一點點幫助吧。
1 git項目提交
- 全局配置:
git config --global user.name "joanaxu"
git config --global user.email "joanaxu@tencent.com"
- 從0開始從遠(yuǎn)程倉庫拉取新項目
git clone http://git.code.oa.com/joanaxu/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
說明: 第一次關(guān)聯(lián)使用git push -u origin master命令,加上-u參數(shù),
git會把本地倉庫master分支內(nèi)容推送到遠(yuǎn)程倉庫的master分支,并且會將本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,
以后本地提交時只需要使用git push origin master命令即可。當(dāng)遠(yuǎn)程倉庫為空時可以關(guān)聯(lián)成功。
- 將本地現(xiàn)有項目推到遠(yuǎn)程master上
盜圖的
cd existing_folder
git init
git remote add origin http://git.code.oa.com/joanaxu/test.git
git add .
git commit
git push -u origin master
2 git常見操作命令
-
分支相關(guān)
盜圖的
git branch // 查看本地分支
git branch -a // 查看所有分支
git checkkout -b test // 創(chuàng)建test分支并切換到test分支
git checkout test // 切換到test分支
git branch test // 創(chuàng)建一個test的本地分支
git merge feature1 // 將feature1分支合并到當(dāng)前分支
git branch -d feature1 // 將feature1分支刪除
- 忽略一些提交的文件
忽略一些文件、文件夾不提交
在倉庫根目錄下創(chuàng)建名稱為“.gitignore”的文件,寫入不需要的文件夾名或文件,每個元素占一行即可,如
target
bin
*.db
- 推送改動
git push origin 分支名 // 將本地修改推送到遠(yuǎn)程服務(wù)分支上
git remote add origin <server> // 以后可以直接用origin來表示遠(yuǎn)程
- 更新本地分支
git pull // 從遠(yuǎn)程拉取分支
- Bug 分支
場景:當(dāng)我們在一個開放分支上開放一段時間之后,測試那邊有一個bug急需修改,因為我們當(dāng)前的工作還沒有完成,不能直接把當(dāng)前的修改提交上去。其次,我們也不會直接不提交直接切換分支,這時候可以使用git stash
。git stash
可以對當(dāng)前的工作修改內(nèi)容進(jìn)行隱藏存進(jìn)暫存區(qū),等到bug修改完成后再回過來將暫存區(qū)內(nèi)的修改拿出來繼續(xù)開心地碼代碼。
git stash //將修改存儲到暫存區(qū),工作區(qū)會刪除這些修改
git checkout <bug_branch>
git stash show //查看剛才暫存的修改
git checkout <feture_branch> //切換剛才功能開發(fā)的分支
git stash pop //取出修改
git stash list //查看暫存區(qū)的所有暫存修改記錄
git stash list //查看暫存區(qū)的所有暫存修改
git stash apply stash@{X} //取出相應(yīng)的暫存
git stash drop stash@{X} //將記錄列表中取出的對應(yīng)暫存記錄刪除
- 建議使用git rebase,這是為了使提交線上的邏輯不會那么復(fù)雜
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
git merge 和 git rebase 都是合并當(dāng)前分支到另外一支分支上。
1、git merge
用git pull命令把"origin"分支上的修改pull下來與本地提交合并(merge)成版本M,但這樣會形成圖中的菱形,讓人很困惑。
盜圖的
2、git rebase
創(chuàng)建一個新的提交R,R的文件內(nèi)容和上面M的一樣,但我們將E提交廢除,當(dāng)它不存在(圖中用虛線表示)。由于這種刪除,小李不應(yīng)該push其他的repository.rebase的好處是避免了菱形的產(chǎn)生,保持提交曲線為直線,讓大家易于理解。
盜圖的