如果這個項目的代碼我們在本地還沒有,我們先去GitLab里邊找對應(yīng)的Git地址,然后Clone到本地:
git clone https://github.com/ITmxs/mygit.git
接到了新的需求,我們要新建一個分支,然后基于這個分支去開發(fā):
git checkout -b feature/sanwaiAddLog
在開發(fā)的時候,我們肯定會有兩個操作:
不管怎么樣,等我們做到一定程度了,我們都會提交代碼。如果我們添加了新的文件,我們需要先add
,然后再commit
git add .git commit -m "try to commit files to GitHub, i am mxs"
假設(shè)我們一切順利,在沒人打擾的情況下已經(jīng)寫好了代碼了,然后我們會把自己的分支push
到遠程倉庫
git push
假設(shè)我們寫到一半,其他小伙伴已經(jīng)把他的代碼merge
到主分支了,我們也需要把他最新的 代碼給pull
拉取下來。(可以 git fetch + git merge 替代)
git pull
如果沒有沖突,那git就會把他的代碼給merge
到我當前的分支上。如果有沖突,Git會提醒我去手動解決一下沖突。
看Git工作區(qū)、暫存區(qū)的變更情況(可以知道哪些沒有commit、哪些沒有被Git追蹤):git status
拉取遠程最新的變更到本地:git fetch
切換分支:git checkout 分支名
將代碼還原到某個版本(包括工作目錄):git reset --hard 版本號
查看Git的提交(commit)記錄:git log
將代碼還原到某個版本后,后悔了,想重新回去,但在提交記錄已經(jīng)找不到了。git reset --hard
把reset 之后的 commit
都給抹殺掉了。找到最近的執(zhí)行Git命令:git reflog
還原到某個版本了,現(xiàn)在我為了穩(wěn)健,不想再原來的分支上修改了,再新建一個分支吧(-b
參數(shù)把當前分支切換到了要創(chuàng)建的分支上):git checkout -b 分支名
我們把上一次還是”相對穩(wěn)健“的分支合并到我新建的分支上:git merge 分支
突然想看看現(xiàn)在有多少個分支:git branch -a
新增幾個文件了,隨手git add
一下吧
改得差不多了,隨手git commit -m
一下吧,最好還是寫好備注,不然以后等改多了,你都不知道你改了什么啦。
改完了,提交到遠程吧:git push
想把遠程分支最新的代碼給拉下來,然后合并到本地上。我們可以用git fetch
和git merge
來實現(xiàn),也可以通過git pull
來實現(xiàn)。一般我用的都是git fetch
+git merge
,這樣會更加可控一些
有的時候,本地分支在master分支,然后忘了切其他的分支去修改,直接在master改了,然后也push到遠程了。等你發(fā)現(xiàn)的時候,你會真的想罵自己。
咋辦?最簡單的辦法其實我們還是可以git reset --hard
到對應(yīng)的版本,然后將其修改或者復(fù)原,再強制提交到master
分支:git push -u origin/master -f
假設(shè)我們寫到一半了,現(xiàn)在工作區(qū)的代碼都已經(jīng)commit
了。此時同事說要不幫忙一起排查一個問題,同事一般用的是自己分支,于是就得問他:你用的哪個分支啊?于是得把他的分支給拉下來,看看他的代碼哪兒有問題
git fecth -- 手動拉取遠程倉庫更新的信息git checkout 分支名 -- 切換到他的分支
現(xiàn)在切換到他的分支,相當于你的環(huán)境跟他的環(huán)境是一模一樣的,于是就可以愉快地一起看Bug了。
假設(shè)我們寫到一半了,現(xiàn)在工作區(qū)的代碼還沒commit
?,F(xiàn)在有同事說要排查問題或者一個新的Bug被發(fā)現(xiàn)了,要緊急切換到其他的分支?,F(xiàn)在我又不想commit
(我就寫了一半,編譯還報著錯誤,沒理由讓我commit
吧)。
這時,我會把工作區(qū)的代碼先stash
到暫存區(qū)給保存起來,然后就可以愉快地切換其他的分支了。
git stash
等我解決完另一個bug或者幫別人看完問題了,我再把剛剛保存在暫存區(qū)的代碼給撈出來,繼續(xù)干活
git stash pop
我一直在修Bug,現(xiàn)在的分支已經(jīng)被我搞得人摸鬼樣了,我非常難受,甚至不知道自己在這個過程中改了多少東西了。
思路已經(jīng)完全被打亂了,我想回到一個穩(wěn)定的commit
重新出發(fā),重來吧(通過下面的命令,把工作區(qū)的代碼都改成對應(yīng)commit的代碼了)。
git reset --hard 版本號
那我怎么找到版本號呢?Git也是有日志的:
git log --pretty=oneline
聯(lián)系客服