Git 踩坑記(持續更新)

@Git踩坑記前端

create by db on 2018-12-25 12:10:36
Recently revised in 2019-1-8 09:33:45git

Hello 小夥伴們,若是以爲本文還不錯,麻煩點個贊或者給個 star,大家的贊和 star 是我前進的動力!GitHub 地址github

前言

 成長之路從不是一路順風的,做爲Git新手,不免會遇到一些小坑。但只要有耐心,沒有什麼是解決不了的。windows

 在此,記錄一下本身遇到的一些小問題以及解決方案。其中有好多方法都是在大神博客彙總的,以避免本身之後找不到。在此,向那些大神致以誠摯的謝意。服務器

 做爲一隻前端菜鳥,這是我掘金分享的第三篇文章。若有不足,還請多多指教,謝謝你們。ssh

正文

一、使用git在本地建立一個項目的過程

  1. $ makdir ~/hello-world //建立一個項目目錄hello-world
  2. $ cd ~/hello-world //進入這個項目目錄
  3. $ git init //初始化,建立版本庫
  4. $ touch README //建立README文件
  5. $ git add README //將README文件添加到暫存區
  6. $ git commit -m 'first commit' //提交更新到倉庫,並註釋信息「first commit」
  7. $ git remote add origin git@github.com:dedsf/hello-world.git //鏈接遠程github項目
  8. $ git push -u origin master //將本地項目更新到github項目上去

二、多人多分支協做項目中的大致流程

一、下載遠程倉庫代碼至本地修改(多人協做)

  1. git clone -b [分支名] [倉庫位置] //下載遠程倉庫代碼至本地
  2. git checkout [分支名] //切換到所需分支
  3. git checkout -b [我的本地分支名] //建立並切換到我的本地分支
  • 注:更改代碼的時候,在我的本地分支進行更改,需上傳時再更新併合並

二、項目中代碼上傳(多人協做)

  1. git add . //添加代碼至暫存區
  2. git commit -m "註釋" //提交更新至倉庫
  3. git checkout [分支名] //切換到所需分支
  4. git merge [我的本地分支名] //合併我的本地分支
  5. git pull origin [分支名] //拉去遠程倉庫代碼刷新分支
  6. git push origin [分支名] // 上傳本地分支至遠程倉庫
  7. git branch -d [我的本地分支名] //刪除我的本地分支
  • 注:若5衝突,解決並重復1~7

三、ssh連接不上GitHub

 若是輸入$ ssh -T git@github.com,出現錯誤提示:Permission denied (publickey),由於新生成的key不能加入ssh就會致使鏈接不上github。編輯器

  • 解決辦法以下:
  1. 先輸入$ ssh-agent,再輸入$ ssh-add ~/.ssh/id_key,這樣就能夠了。工具

  2. 若是仍是不行的話,輸入ssh-add ~/.ssh/id_key 命令後出現報錯Could not open a connection to your authentication agent.解決方法是key用Git Gui的ssh工具生成,這樣生成的時候key就直接保存在ssh中了,不須要再ssh-add命令加入了,其它的user,token等配置都用命令行來作。fetch

  3. 最好檢查一下在你複製id_rsa.pub文件的內容時有沒有產生多餘的空格或空行,有些編輯器會幫你添加這些的。ui

四、提交錯誤

 若是輸入$ git push origin master,提示出錯信息:error:failed to push som refs to .......

  • 解決辦法以下:
  1. 先輸入$ git pull origin master //先把遠程服務器github上面的文件拉下來
  2. 再輸入$ git push origin master

五、刪除分支

刪除分支的時候必定要切換到其餘分支,再執行

  1. git branch -D <barnchName> //切換分支
  2. git branch -d [branch-name] //刪除分支

六、 重命名文件件或文件夾,並將此更改上傳

    • git mv -f [oldfolder] [newfolder] //更改文件夾名稱
    • git mv [foldername tempname] && git mv [tempname folderName] // 在大小寫不敏感的系統中,如windows,重命名文件的大小寫,使用臨時文件名
    • 更改文件名稱,需帶路徑或進入該文件所在文件夾
  1. git add -u [newfolder] //-u選項會只更新已經追蹤的文件和文件夾
  2. git commit -m "changed the foldername whaddup" //提交更改

七、刪除文件夾,並將此更改上傳

  1. git rm -r --cached [folderName]
  2. git commit -m '刪除了folderName'
  3. git push -u origin [分支名]

八、git add -u與-A .三者的區別

  • 添加當前目錄下的全部存在更改文件到暫存區
  • (包括提交新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件)

$ git add .

  • 添加已經被add的文件且存在更改的文件(Git根路徑如下全部文件)到暫存區
  • (提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new))

$ git add -u

  • 添加全部變化(Git根路徑如下全部文件)到暫存區
  • (包括提交新文件(new)、被修改(modified)文件以及被刪除(deleted)文件)

$ git add --all

$ git add -A // 簡寫

九、git回退版本並提交

  1. 直接找到要回退的版本號(這裏是:83ff2785),reset以後,強行推送到服務器端

git reset --hard 83ff2785

git push --force

  1. 此時若是有人獲取了更新的版本,可能拉去不下來,執行如下操做:

git fetch --all

git reset --hard origin/branchname

  branchname就是分支的名稱,這時候就和服務器端一致了。

小結

  • 敢於嘗試,善於總結。開啓你的Git踩坑之旅吧!

總結

  路漫漫其修遠兮,但願Git及GitHub能夠幫咱們記錄每個腳印,每一步成長。與諸君共勉。

 祝你們2019更上一層樓!

後記:Hello 小夥伴們,若是以爲本文還不錯,記得點個贊或者給個 star,大家的贊和 star 是我編寫更多更豐富文章的動力!GitHub 地址

知識共享許可協議
db 的文檔庫db 採用 知識共享 署名-非商業性使用-相同方式共享 4.0 國際 許可協議進行許可。
基於github.com/danygitgit上的做品創做。
本許可協議受權以外的使用權限能夠從 creativecommons.org/licenses/by… 處得到。

相關文章
相關標籤/搜索