使用Git倉庫的原理:
不同于SVN,Git采用分布式的原理,即每一臺電腦上都有完整的Git倉庫代碼,所以無論當(dāng)前電腦有沒有網(wǎng)絡(luò),都可以正常上傳到本地的Git倉庫,等到有網(wǎng)絡(luò)的時候和遠(yuǎn)程倉庫同步即可,這也是和SVN的最大的一個區(qū)別。
當(dāng)我們Clone一份遠(yuǎn)程分支的代碼到本地時,本地會同時生成一份完成的Git代碼倉庫(可以通過SourceTree來進(jìn)行可視化的查看,develop、其他開發(fā)人員的分支都可見)。當(dāng)我們修改完本地代碼后,進(jìn)行 add 命令,會將代碼添加到git緩沖區(qū)(我們是感知不到的),然后進(jìn)行 commit 命令,即會將修改上傳到本地代碼倉的分支。此時,其他開發(fā)人員通過遠(yuǎn)程分支是看不到我們的修改的,因?yàn)槲覀冞€沒有將本地倉庫的代碼推送到遠(yuǎn)程倉庫,這時我們可以進(jìn)行 push 命令,會將本地倉庫的特定分支的代碼推送到遠(yuǎn)程倉庫里的特定分支。至此,我們就完成了代碼的修改、上傳、更新操作。
命令行 + SourceTree 配合使用更加方便快捷哦!
1、撤銷、回退本地修改
放棄對本地已經(jīng)修改但是尚未提交的文件的修改,還原到其未修改前的狀態(tài)
注??:已經(jīng) add/commit 的文件不適用這個方法,可以手動或者利用SourceTree進(jìn)行已修改代碼的撤回,然后在進(jìn)行"git add .", 在終端就能看到未修改任何代碼了。
git checkout . //撤銷所有已修改但未提交的文件的修改,但是不包括新增的文件
git checkout [filename] //撤銷對指定文件的修改,[filename]為文件路徑
2、回退版本
3、同步當(dāng)前分支的最新代碼(針對多人開發(fā))
git pull //將當(dāng)前遠(yuǎn)程分支上的最新代碼同步到本地代碼中
git pull origin [branchName] //取回遠(yuǎn)程某個分支的更新,與本地的代碼進(jìn)行合并
4、拉取某個特定分支的代碼到本地
git clone -b [branchName] [git address .git] //[branchName]指的是需要拉取遠(yuǎn)程分支的路徑,eg:origin/featureName,其中featureName是創(chuàng)建分支時自定義的分支名稱;[git address .git]代表代碼倉的完整路徑
5、合并代碼
git merge [branchName] //[branchName]分支名稱,eg:origin/featureName,表示合入某個分支的代碼;origin/develop,表示合入develop的代碼,即將當(dāng)前分支的代碼同步到develop
注意??:當(dāng)我們將某個分支合并到當(dāng)前分支時,一般不需要指定合入分支的版本,因?yàn)間it會幫我們?nèi)z測并將本地沒有的代碼進(jìn)行合入,例如拉取本地分支時版本是2345,則在merge時會將目標(biāo)分支2345版本后的代碼合進(jìn)來。
merge后,我們執(zhí)行命令git status來查看修改,此時沒有沖突的話,則這些修改的文件都是其他成員的修改,我們只需要commit、push等就OK了;如果有沖突,則使用IDE解決沖突即可
6、切換分支
git checkout [branchName] //[branchName]表示分支名稱,eg:git checkout develop、git checkout feature/myBranch
7、查看當(dāng)前本地的修改
git status //紅色顯示的表示你修改的文件
8、將修改的文件添加到git緩沖區(qū)
git add [fileName] //添加某個特定紅色顯示的文件,提交到緩沖區(qū)
git add . //把所有修改的文件全部添加到git緩沖區(qū)
9、提交代碼到本地倉庫分支
git commit -m"修改內(nèi)容說明"
10、將本地倉庫分支的代碼推送到遠(yuǎn)程分支
git push //完成push后,才表示本次修改的代碼已經(jīng)上傳到了遠(yuǎn)程的修改分支上
git push origin [branchName] //將提交到本地git倉庫的代碼推送到遠(yuǎn)程某個分支上
11、查看當(dāng)前分支的上傳log記錄
git log
12、查看當(dāng)前的分支情況
git branch //當(dāng)前本地代碼可以關(guān)聯(lián)的本地分支:綠色表示當(dāng)前已關(guān)聯(lián)的本地分支,黑色表示本地倉庫存在的可關(guān)聯(lián)的分支
git branch -a //紅色表示當(dāng)前遠(yuǎn)程倉庫中的分支信息