新手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)生敬肚,保持提交曲線為直線毕荐,讓大家易于理解。