初始化、提交代碼到遠程倉庫
正常情況下,用戶名、密碼全局設置一次就可以,使用較少【略過】,如有需要自行百度
新建一個工程,想提交到遠程倉庫【遠程倉庫也沒有】
如下步驟可實現提交到遠程倉庫
# 1.初始化
git init
# 2.添加所有文件到本地倉庫
git add .
# 3.提交到本地倉庫(備註自行修改)
git commit -m "init"
# 4.新建遠程倉庫
git remote add origin https://git倉庫地址/分組名/倉庫名.git
# 示例: git remote add origin https://github.com/xx-group/first-project.git
# 5. push到遠程倉庫
git push origin master
注意事項:執行4、5步時一定要注意網絡通常,否則會出現失敗、提交卡死到情況
如果出現git push卡死(writing objects、pushing...),按ctrl+c結束提交。找到網絡通暢的地方。在idea的Terminal窗口,鍵入git gc並回車,重新執行第5步
上述全部完成後,已經有master分支了,
切換分支並創建遠程分支(當然可以用idea操作,此處是複習git命令)
# 會創建新的test分支
git checkout -b test
# 再提交到遠程倉庫到test(還沒有test分支)
git push origin test
上述命令在遠程已經創建了test分支
# 更新代碼
git fetch
可以看到已經出現了origin/test分支
若想新建dev分支,可採取相同到方法(上述新建test分支)
上述第4步執行報錯,提示倉庫不存在,則在github上新建倉庫。
再執行
git pull --rebase origin master
最後執行
git push -u origin master
原因是本地倉庫和遠程倉庫沒有關聯!!
補充知識:
若提交時沒有.gitignore文件,提交了一推沒用的文件(.idea/*,target/*),那怎麼刪除遠程倉庫的暱?以下步驟可完成刪除
// 1.刪除idea文件及裏面所有文件
git rm -rf .idea/
// 2.提交到本地倉庫
git commit -m "delete file"
// 3.push到遠程倉庫
git push origin master
從歷史提交中檢出新分支
方案一
步驟:
1.查詢歷史提交ID
2.基於歷史提交檢出新分支
3.分支檢出後正常操作(修改、提交到遠程等等)
1.查詢歷史提交id
方法一通過指令: git log
方法二通過idea:
2.檢出分支,完成
git checkout -b 分支名 歷史提交ID
示例:
git checkout -b v1.0 dcddaf590fe6a97b05d13014d8eca3b0d3a90611
歷史提交ID輸入前8位即可(已經複製就粘貼全部)
方案二
使用idea,默認已經打開了項目
點擊下方Version Control -> Log
查看和設置用戶名密碼
說明:用戶名和郵箱地址是本地git客戶端的一個變量,不隨git庫而改變。
每次commit都會用用戶名和郵箱記錄。
github的contributions統計就是按郵箱來統計的。
2.修改密碼(請自行驗證)
git config --global credential.helper store (輸入這個命令後,以後只要在輸入一次用戶名密碼)
3.查看用戶名和郵箱地址
git config user.name
git config user.email
4.修改用戶名和郵箱地址:
git config --global user.name "username"
git config --global user.email "email"
常見錯誤及解決辦法
5.git clone 拉取代碼報錯 repository 'http://xxxx.xx.xx.git' -- not found.
出現這種情況,本地已經保存了對應的賬號密碼,對於當前操作權限不匹配;解決方案:拉取代碼時添加具有權限的賬號密碼:
格式如下:
錯誤信息:repository 'http://遠程倉庫的域名或者IP/xxx/xxx.git' not found
執行git指令:git clone http://username:password@遠程倉庫的域名或者IP/xxx/xxx.git
示例:
錯誤信息: repository 'http://gitlab-vpc.test.com/test-group/test.git' not found
對應gitlab賬號密碼分別爲:root 和 123456
則執行git的指令爲:git clone http://root:123456@gitlab-vpc.test.com/test-group/test.git
6.將拉下來的代碼推到新倉庫
6.1設置新的倉庫url(注意:確保已經添加了公鑰到新的機器上)
指令:git remote set-url origin 新gitlab地址
示例:git remote set-url origin http://gitlab-vpc.new-test.com/test-group/test.git
6.2將當前分支推到新倉庫
特別提醒:建議使用新倉庫沒有的分支名(使用新倉庫沒有的分支名不會有以下錯誤)
指令:git push origin 分支名
示例: git push origin dev
如果推送報錯“提示找不到refs...”,原因是本地和遠程倉庫不匹配,進行強制推送,指令改爲
git push -f origin 分支名
示例:
git push -f origin dev
7.push到新倉庫的代碼合併代碼時遇到合併失敗報錯:refusing to merge unrelated histories
背景: 拉取新push上去的分支(例如dev),然後merge舊分支(master)到新分支報錯refusing to merge unrelated histories
解決辦法:當前處於新分支(dev),執行拉取舊分支(master)分支代碼時,加上參數 --allow-unrelated-histories
git pull origin 分支名 --allow-unrelated-histories
示例:
git pull origin master --allow-unrelated-histories
有衝突解決掉,沒有衝突表示已經拉取成功完成了
git pull 相當於git fetch和git merge的組成
最後再push即可
8.報錯 The project you were looking for could not be found解決
(背景:mac重裝系統後,登陸同一個ID,同步了鑰匙串,之前保存了同樣的git賬號信息導致報錯)
原因:重複保存賬號密碼導致報錯
解決辦法:刪除之前保存的賬號(有說在執行clone時帶上賬號信息,我覺得太麻煩。故採取刪除之前保存的賬號)
以mac本爲例
8.1打開“鑰匙串”找到如下git地址,本機有2個地址,直接刪除(另外:如果IntelliJ開頭的鑰匙串也保存了git賬號密碼同樣也刪除 )
8.2刪除的方法是“右鍵”->選擇“刪除xxxxxxxx"
用idea分別打開2個git的任意一個項目,在當前項目下執行任意指令(clone、fetch、pull、push、merge等)按照提示重新輸入賬號密碼即可重新保存。