如何使用 Git
一、克隆
1.在目錄/project 上右鍵選擇Git Bash Here,或者cmd,powershell都可以執行命令;
2.輸入命令git clone https://github.com/lingdian-ah/MainPage.git;
//會將該項目克隆到當前目錄下,/project/MainPage
二、Git使用步驟
開始學習
// 切換到項目文件夾下執行命令
1.touch readme.md // 創建readme.md文件,也可自己手動新建一個文件:鼠標右鍵新建文件
2.git init // 初始化,創建本地git倉庫,僅執行一次
3.git add README.md // 將文件添加到倉庫中,git add . 表示添加所有文件到本次倉庫,.點和*星號一個意思,表示全部(每次修改時需執行該命令)
4.git commit -m "first commit" // 提交,並輸入本次更改信息
//注意:也可以執行命令:git commit -a -m "本次更改內容" 表示提交所有更改文件,該命令等同於3,4步驟
5.git remote add origin http://gogit.qyvip.com/lingdian/mango.git // 添加遠程倉庫,如果不換倉庫,只需執行一次
6.git pull origin master // 拉取內容,如果知道沒有人更新過,可以不執行(此處爲master主分支,也有可能是其他分支)
7.git push -u origin master // 上傳本次更改的內容,後面是分支,此處爲master主分支,也有可能是其他分支
合併分支
場景:分支master,branch1,branch2
1.爲了解決master上的 bug1,創建了分支 branch1,在該分支上進行修改;git checkout -b branch1
2.爲了解決master上的 bug2,創建了分支 branch2,在該分支上進行修改;git checkout -b branch2
3.當 bug1 解決後,需要把 branch1分支上的內容合併到master上,執行命令:
git checkout master // 先切到master分支
git merge branch1 // 將branch1合併到master,此時由於沒用其他人調整,不存在衝突
4.此時爲了解決 bug2,已經在branch2上進行了多次修改提交,目前以解決該bug,假設解決bug1和bug2都修改了文件demo.java
5.現在進行最終合併,執行命令:
git checkout master // 同樣的需先切到master分支
git merge branch2 // 將 branch2 合併到 master,由於和branch1修改了同一個文件,此時會存在衝突
git status // 查看狀態,輸出:...略 Unmerged paths: ...略 demo.java
git mergetool 或者 vim 文件名// 使用工具處理衝突,會提示你輸入工具,可以直接回車,使用默認工具處理,工具中會體現文件差異等信息
git commit -a -m "merge branch2"// 解決衝突後,進行提交
git push origin master // 進行push,然後你可以在github上查看提交記錄,已經文件內容是否正確,這樣就ok了
三、常用命令
遠程地址相關命令:remote
1.添加遠程地址
git remote add origin 地址 // origin:自定義,遠程地址名稱,地址:爲github項目的地址
2.刪除遠程地址
git remote remove origin // origin:要刪除的地址
3.修改遠程地址
git remote set-url origin 新地址 // origin:遠程地址名稱,新地址:新的github項目地址
4.查看遠程地址
git remote // 查看名稱
git remote -v // 查看詳情,名稱+地址
分支相關命令:branch、checkout
1.創建分支
git branch 分支名稱 // 分支名稱:新建的分支名
2.切換分支
git checkout 分支名稱 // 分支名稱:要切換的到的分支名
3.創建分支並切換到該分支
git checkout -b 分支名稱 // 分支名稱:新建的分支名
git checkout -B 分支名稱 // 創建/重置分支,並切換到該分支
4.查看分支
git branch // 查看分支名稱
git branch -v // 查看分支詳情,名稱+最後提交記錄
git branch -a // 查看所有分支:包含遠程和本地分支
git branch --merged // 查看哪些分支已經合併到當前分支上,*表示當前分支
git branch --no-merged // 查看哪些分支還未合併到當前分支上,*表示當前分支
5.刪除分支
git branch -d 分支名稱 // 分支名稱:要刪除的分支名
重置命令:reset
1.將文件還原爲上次提交時的狀態(前提是該文件是未提交狀態)
git checkout -- 文件名稱
2.若文件已添加到本地倉庫,修改爲未添加
git reset HEAD 文件名稱 // 可以通過git add 文件名稱 再次添加文件到本地倉庫
日誌、記錄:log、diff、status、show
1.更新記錄
git log // 查看提交記錄,輸入q退出
2.顯示本次更改文件中改動的內容
git diff
3.顯示當前狀態,可以看到哪些文件更改了 ( 經常使用的一個命令 )
git status
4.顯示最後一次的文件更改情況
git show
IDEA Git 開發
分支a合併到master
通常情況下master主分支上是不做修改的。自己新建一個分支,在分支上進行修改,修改,測試好之後,再與主分支進行合併。
情況說明:現有分支master,分支a。在分支a上做了修改,想要和master主分支進行合併。大致步驟如下:
1.在分支a上修改後,需進行提交commit、上傳push→到分支a上;
2.idea右下角,Local Branches欄目:選中master,checkout切換到master主分支上;
3.然後同樣在idea右下角,Remote Branches欄目:選中分支a,Merge into Current;
4.此時還是在master主分支上,然後進行commit、push操作,這樣master上的代碼就更新了;
pull拉取失敗,又無法提交的解決辦法
思路:先將本地修改在git棧中保存起來,這樣本地修改就被清除了,此時我們再從遠程分支上pull拉取,就可以了。拉取成功後,再將git棧中保存的修改釋放出來,如果有代碼衝突,可進行merge操作。合併完成後,再進行commit、push完成更新。
1.選擇Stash Changes...,後輸入message(此次Stash的說明),最後進行創建(點擊Create Stash);
2.從遠程拉取,執行pull;
3.選擇Unstash Changes...,選中剛剛保存的Stash,並勾選Pop Stash(意思是把這個stash記錄清除),最後點擊Apply Stash;
4.此時可能會出現代碼衝突,彈出代碼衝突窗口,我們點擊merge...,進行手動合併;
.gitignore規則不生效的解決辦法
idea可以下載一個插件.gitignore,方便管理
把某些目錄或文件加入忽略規則,按照上述方法定義後發現並未生效,原因是.gitignore只能忽略那些原來沒有被追蹤的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。那麼解決方法就是先把本地緩存刪除(改變成未被追蹤狀態),然後再提交:
git rm -r --cached . //注意後面有個點
git add . //注意後面有個點
git commit -m "update .gitignore"
idea出現merging 分支a 的解決辦法
如何終止git merging狀態
在idea控制檯輸入:
git merge --abort //此時右下角就變爲了正常的分支狀態
錯誤
push rejected
情形:我在github上創建了一個倉庫與本地項目名稱相同,包含了README.md文件。本地項目也包含了README.md文件。在本地項目上創建了本地倉庫,添加了遠程鏈接。commit成功,push時出現這個問題。
解決:執行下面的命令,然後再push就成功了
// 允許合併不相關歷史的內容
git pull origin master --allow-unrelated-histories