git 基本知識
git是一個分布式版本控制系統,可以進行代碼的管理,合并别人的代碼等,最開始接觸git是在GitHub網站上,号稱全球最大同性交友網站,活躍着各種各樣的大佬,當然也有像我這樣的小白存在。
如果你看到一個項目覺得挺好的,你可以把這個項目fork下來,研究的過程中你的水準也越來越高,終于有一天你發現其實大佬的代碼可以進行優化,于是你把fork的項目clone到本地,修改之後push到自己的遠端倉庫,接着你特别驕傲的pull request 給大佬,申請代碼合并,大佬看到後覺得你寫的代碼還不錯,就會同意merge,也就是把你修改的代碼合并到已有的項目中去,于是你就出名了,也成了别人眼中的大佬。。。。
預備知識:
首先你得有一個github賬号,然後你得下載下傳git,然後傻瓜式安裝即可,這裡不再贅述。
1.首先主要介紹ssh的建立以及git的配置
首先設定username,email:
右鍵 git bash 打開,輸入:
Administrator@HJS-MKR MINGW64 /f/Git/kaggle (dev)
$ git config --global user.name "你的github使用者名"
Administrator@HJS-MKR MINGW64 /f/Git/kaggle (dev)
$ git config --global user.email "你的email"
Administrator@HJS-MKR MINGW64 /f/Git/kaggle (dev)
$
2.接下來通過終端指令建立ssh key:
ssh-keygen -t rsa -C “你的email”
接下來直接三個回車就行,好像是需要設定什麼密碼密碼,其實不用設,别人也不會無聊修改你的。。。
然後在.ssh目錄下(我的是在C/users/Adimin,,HJS/.ssh目錄下)生成 id_rsa.pub 和id_rsa兩個檔案,我們需要打開id_rsa_pub檔案(用記事本或者編輯器都可以)複制裡邊的key,下一步要用到
3.上傳ssh key 到github伺服器上面
首先你要登入github賬号,然後點選settings–>>添加ssh key–>>new ssh key
然後把我們剛才複制的key放到這裡的key ,title随便寫就行,主要是為了區分
4.連接配接驗證
ssh -T [email protected]
如果回車之後傳回的資訊是Hi,,you are successfully,,,,
說明你設定對了,連接配接成功,接下來就可以進行接下來的操作了!
好了 我要介紹的正文開始啦~~~~~~~~
這篇文章主要是總結一下兩方面的知識點:
1.把遠端倉庫的項目fork到本地倉庫,然後在本地倉庫修改之後push到遠端倉庫
首先你去你的github上建立一個倉庫 (當然你也可以fork别人的項目),我就用我之前的study了
首先你進入到這個倉庫,點選右邊的那個clone or download ,然後點選clone with ssh 那個對應的位址,複制下來
接下來你就在你想要存這個倉庫(項目)的檔案夾下面(我是放在F盤的Git下了),在這個檔案夾下右鍵 git bash 然後你就可以在終端秀各種操作了
pwd 可以檢視目前所在的檔案夾
然後
git clone [email protected]:xuanbabybaby/study.git (xuanbabybaby是我的賬号 你複制你自己的就行)
複制完成100%之後 你打開你剛才存這個項目的檔案夾,發現裡面多了一個檔案 也就是剛才我們clone下來的項目(study)
然後cd study 進入到study檔案夾下,,
ls 可以用于檢視目前項目包含哪些檔案。
git status可以檢視目前的狀态
接下來我們可以在本地倉庫study下面修改幾個檔案,也就是我們可以建立py檔案 或者.txt檔案都可以(test6.py)
接下來在終端輸入 git add test6.py
然後git commit -m “這裡寫自己的描述 可以說 add a py file”
最後就可以送出到你剛才的遠端倉庫了 git push -u origin master
如果沒什麼錯的話 ,你會發現在github遠端倉庫study下面會增加一個你剛才添加的test6.py檔案!
是不是很簡單呀~~~~
第二個就是 如果我們有一個遠端倉庫study 然後有一個本地倉庫study2(注意 study2不是簡單地clone study的 而是不同于study的新的存在 那麼我們應該如何在本地倉庫study2修改檔案 同步到遠端倉庫study呢)
和前面步驟大緻一樣,我就直接寫了:
在f/Git 下面建立本地倉庫study2 在裡面建立一個py檔案比如test7.py 然後我們打開終端 進入該本地倉庫
cd /f/Git/study2,接下來你輸入git add test7.py是會報錯的!!你需要初始化本地倉庫!!git init !!! 然後你會發現本地倉庫現在多了一個.git檔案夾 接下來你就可以進行git add test7.py 和 git commit -m “add a test7.py”
由于我們是把一個新的本地倉庫和不同于它的遠端倉庫建立同步 是以我們需要進行連接配接操作:
git remote add origin [email protected]:xuanbabybaby/study.git 後面這個是你要更新到的遠端倉庫的位址 你想把本地倉庫修改的東西同步到哪個地方你就修改成哪個遠端倉庫的位址!!
接下來輸入 git push -u origin matser
然後又報錯了 :
$ git push -u origin master
To github.com:xuanbabybaby/study.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to '[email protected]:xuanbabybaby/study.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
之是以會出現這個錯誤,是因為我們自己建立的本地倉庫是沒有readme檔案的 我們需要把兩者同步:
git pull –rebase origin master
接下來你會發現自己的倉庫和遠端的倉庫同步了,,隻不過本地倉庫多了一個test7.py也就是我們最開始添加的那個檔案,這就和第一個問題完全一樣了
最後一步就是把本地倉庫修改的檔案push到遠端倉庫:
git push -u origin master
然後你就會發現你的遠端倉庫下面多了一個test7.py檔案
如何把大佬的檔案fork下來,然後我們在本地倉庫修改,然後送出到遠端倉庫 最後pull request 給大佬呢?
比如我把之前fork大佬的項目 kaggel clone到本地倉庫 (直接在f盤下面 一會我還要删掉的)
然後進入到該檔案夾下 cd kaggle
然後在本地倉庫增加一個檔案:test1.py 好像不能是檔案夾~
git add test1.py
git commit -m "add a test2 .py"
此步可以先不弄【最後直接git push -u origin dev 這裡我這樣操作也成功了呢,,,,】
其實接下來的操作 按照我個人的了解就是:
因為你是fork别人的項目 是以要和大佬的保持一緻?
是以需要添加大佬的遠端倉庫
首先看一下 git remote 看一下遠端倉庫的名字 origin 其實就是我們fork的項目 我們自己的遠端倉庫名字
接下來 我們想和大佬的遠端倉庫連接配接:
git remote add origin_online https://github.com/apachecn/kaggle.git (這個是fork大佬的項目位址)中間那個origin_online 是大佬的遠端倉庫名稱 不過好像一般都用origin是你自己fork的項目 遠端倉庫名稱
連接配接成功後:
git pull origin_online master 就可以保持同步了大佬的項目 一更新本地的也更新,是這樣嗎?
最後就可以push 操作了 git push origin dev 是上傳到自己的repo倉庫 因為是origin ~
删掉遠端倉庫的檔案
參考
參考
參考
參考
參考
參考
參考
參考
git參考