忙裏偷閒的時候,有一好友又來問我關於Git的命令問題。(爲啥是又,由於關於這個問題,他至少問了我三四五六遍了……每次講完,過段時間一定忘!!!也不知腦回路是咋整的???)
爲了讓他這個常常記不住的童鞋不要每次都來問我相同的問題,我決定把他能用到的命令,都列出來,做用也標明。
童鞋,下次本身來看文章啊~~~
No.1 克隆遠程倉庫git
git clone 遠程倉庫名 例如:https://gitee.com/****/****
No.2 查看遠程分支app
git branch -a
注:當前分支 僅有master一個遠程分支
No.3 建立本地分支test,環境切換爲test分支並推送至遠程(此時test的全部內容均爲master內容,也就是說,test分支是基於master的新的分支)spa
git checkout -b test // 此時在文件夾中增長一個readme.txt文件(也就是說,test分支內容已更改) // 將test分支推送至遠程 git add . git commit -m "add readme.txt" git push --set-upstream origin test // 僅有第一次推送至遠程時須要以上的push命令 // 在test分支以後更改內容推送至遠程時 均使用git push便可
No.4 多人協同開發過程當中,出現場景爲,同窗A 在分支dev上開發,同窗B在test上開發。此時同窗B須要基於同窗A的內容,開發新需求。操做步驟應爲:將本身本地test分支推送至遠程,確認無誤後,切換爲同窗A的dev分支,同時基於dev分支建立新分支名爲feature-dev,而後在新的分支上進行開發code
// 先拉取最新內容 git pull // 切換至dev分支 git checkout dev // 查看當前所在分支 git branch -a // 新建並切換至分支 feature-dev git checkout -b feature-dev // 此時再次查看當前所在分支 git branch -a // 當前所在分支爲feature-dev 進行一些內容操做 例如:增長兩張圖片 git add . git commit -m "add photo" git push --set-upstream origin feature-dev // 此時已經將feature-dev分支推送至遠程 // 接下來再修改內容須要add、commit、push便可
No.5 如今狀況是,我須要在同窗A的dev分支上去合併個人feature-dev的東西,也就是說,我須要把我更改的內容,合併到人家dev的分支上。此時我應該作的是:git pull 先獲取最新內容,而後切換至dev分支,而後合併我更改的內容blog
// 拉取最新 切換至dev git pull git checkout dev // 此時在dev分支,準備合併feature-dev的內容 git merge --squash feature-dev // --squash 當在feature-dev分支上提交過不少回時,使用此命令能夠將多條commit合併爲一條 // 即爲 多條合併 若是有錯回退的時候也方便 // 若是有衝突,解決衝突,若是沒有衝突便可提交 git add . git commit -m "dev merge feature-dev" git push // 此時合併已完成
No.6 嗯,我還沒想到有啥經常使用的,有啥須要補充的隨時補充吧~~~
補充1:這個補充來的有點快
No.7 同窗正在修改dev分支,而後呢,臨時任務,須要修改分支master,此時怎麼辦呢?
此時有幾種狀況:
一、在當前dev分支,git add ,而後git commit 提交,可是不須要push到遠程。此時切換至master,master並不會有dev分支的任何修改。
二、在當前dev分支,git add ,而後呢,不想commit,怎麼辦呢!!! 此時咱們能夠git stash,此時呢,會把全部未提交的修改(包括暫存的和非暫存的)都保存起來,用於後續恢復當前工做目錄。而後咱們切換到master去改東西,改完後切回咱們的dev分支時,git stash apply,將咱們剛剛儲藏的東西再拉回來,好了,繼續改咱們dev的內容吧。
三、在當前dev分支,git add ,而後呢,不想commit,也不想stash,直接切換分支,此時魔鬼操做來了!!!你在dev的修改東西所有帶進master,魔鬼操做,你只是想修改個master的東西,居然把你不想提交的東西也帶過來了。魔鬼不!!!因此這種操做不可取,不可取,不可取!!!除非你確實想把dev的東西帶到master。🙂圖片