bitbucket&git的學習筆記


1、安裝Git

  細節我就不說了,注意事項如下:

安裝完成后,還需要最后一步設置,在命令行輸入:

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。

注意git config命令的--global參數,用了這個參數,表示你這台機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址

2、選擇或者新建一個文件夾,將你要上傳的文件放到該文件夾下面,在該文件夾下右鍵運行Git,輸入命令:

git init

這時會在你的文件夾下生成一個隱藏的文件夾.git,有關本地操作的一些命令和之后需要用到的一些命令整理如下:

git add   //將文件的修改提交到暫存區或者叫版本庫中去

git commit -m "有關這次提交的描述"  //將文件的修改生成一個提交點,有唯一的ID與之對應。

git status  //查看當前的文件狀態,我建議大家修改一個文件看看狀態,add后再看看狀態,commit后再看看他們的狀態。

git diff   //查看被修改的文件與被修改之前的差異

git log  //查看每次的提交信息

git log --pretty=oneline  //查看提交信息,但是只顯示一條

git reset --hard HEAD^/HEAD^^/HEAD~100  //返回到上一個/2/100個版本

git reset --hard 版本號  //回到所選的版本當中去,版本號可以用git log查看,版本號寫前幾位就行了。

git reflog //用來記錄你的每一次命令:

git log --graph --pretty=oneline --abbrev-commit //列出分支合並詳情

git diff HEAD -- filename   //命令可以查看工作區和版本庫里面最新版本的區別

git checkout -- filename //就是把filename文件在工作區的修改全部撤銷,這里有兩種情況:一種是readme.txt自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;一種是readme.txt已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。總之,就是讓這個文件回到最近一次git commitgit add時的狀態。

git rm test.txt  //刪除文件之后必須提交

git checkout --filename //其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

ssh-keygen -t rsa -C "youremail@example.com" //創建一個私鑰和公鑰

git clone git@bitbucket.org:WechaoHe/homomorphic-encryption.git //遠程倉庫clone

git checkout -b dev //創建並切換到dev分支

git branch //查看分支

git branch dev  //創建分支

git checkout dev  //查看分支

git merge dev//合並制定分支到現在所在的分支,這次合並是“快進模式”,

git tag v0.9 版本號//為相應的提交版本打上標簽

git tag -d v0.1 //刪除相應的標簽

             也就是直接把master指向dev的當前提交,若產生沖突則先手動改動,再提交git log查看

git branch -d dev //刪除分支

git remote -v //顯示遠程信息

git branch --set-upstream dev origin/dev  //git pull也失敗了,原因是沒有指定本地dev分支與遠程origin/dev分支的鏈接,根據提示,設置本地devorigin/dev的鏈接:

git push -u origin master  //將倉庫里面的提交推到遠程

在本地操作熟悉之后呢,我們再來看看遠程連接操作。

3、現在我假設你已經掌握怎么使用Git,並且已經安裝好了,同時擁有自己的bitbucket賬號。

到目前為止,我們已經掌握了如何在Git倉庫里對一個文件進行時光穿梭,你再也不用擔心文件備份或者丟失的問題了。

由於你的本地Git倉庫和bitbucket倉庫之間的傳輸是通過SSH加密的,所以,需要一點設置:

1步:創建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,我的目錄為C:\Users\admin\.ssh,如果有,再看看這個目錄下有沒有id_rsaid_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,Windows下打開Git Bash,創建SSH Key

$ ssh-keygen -t rsa -C "youremail@example.com"

你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可,由於這個Key也不是用於軍事目的,所以也無需設置密碼。

如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsaid_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

2步:登陸bitbucket,打開“Account settings”“SSH Keys”頁面:

然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內容bitbucket設置如下:

 

 

 

為什么bitbucket需要SSH Key呢?因為bitbucket需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,所以,bitbucket只要知道了你的公鑰,就可以確認只有你自己才能推送。

當然,bitbucket允許你添加多個Key。假定你有若干電腦,你一會兒在公司提交,一會兒在家里提交,只要把每台電腦的Key都添加到bitbucket,就可以在每台電腦上往bitbucket推送了。

最后友情提示,在bitbucket上免費托管的Git倉庫,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放進去。

如果你不想讓別人看到Git庫,你可以創建自己的私有庫。

4現在的情景是,你已經在本地創建了一個Git倉庫后,又想在bitbucket創建一個Git倉庫,並且讓這兩個倉庫進行遠程同步,這樣,bitbucket上的倉庫既可以作為備份,又可以讓其他人通過該倉庫來協作,真是一舉多得。

首先,登陸bitbucket,然后,創建一個新的倉庫。

 

建好的倉庫如上圖。

這時點擊我已經有了一個存在的項目。會看到如下圖:

 

第一個命令行是要你進入所在項目文件,你可以直接在相應文件下右鍵啟動Git

第二個命令是建立本機與bitbucket的關聯,添加后,遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫。

第三步,就可以把本地庫的所有內容推送到遠程庫上。

第四步是推送標簽,我們可以先不管。

把本地庫的內容推送到遠程,用git push命令,實際上是把當前分支master推送到遠程。

由於遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令。

推送成功后,可以立刻在bitbucket頁面中看到遠程庫的內容已經和本地一模一樣

從現在起,只要本地作了提交,就可以通過命令:

$ git push origin master

把本地master分支的最新修改推送至bitbucket,現在,你就擁有了真正的分布式版本庫!

SSH警告

當你第一次使用Gitclone或者push命令連接GitHub時,會得到一個警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.

RSA key fingerprint is xx.xx.xx.xx.xx.

Are you sure you want to continue connecting (yes/no)?

這是因為Git使用SSH連接,而SSH連接在第一次驗證GitHub服務器的Key時,需要你確認GitHubKey的指紋信息是否真的來自GitHub的服務器,輸入yes回車即可。

Git會輸出一個警告,告訴你已經把GitHubKey添加到本機的一個信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

這個警告只會出現一次,后面的操作就不會有任何警告了。

如果你實在擔心有人冒充GitHub服務器,輸入yes前可以對照GitHubRSA Key的指紋信息是否與SSH連接給出的一致。

有關同步協作時常見的問題:

推送分支

推送分支,就是把該分支上的所有本地提交推送到遠程庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上:

 git push origin master

如果要推送其他分支,比如dev,就改成:

 git push origin dev

抓取分支

多人協作時,大家都會往dev分支上推送各自的修改。

當你的小伙伴從遠程庫clone時,默認情況下,你的小伙伴只能看到本地的master分支。不信可以用git branch命令看看

現在,你的小伙伴要在dev分支上開發,就必須創建遠程origindev分支到本地,於是他用這個命令創建本地dev分支

 git checkout -b dev origin/dev

現在,他就可以在dev上繼續修改,然后,時不時地把dev分支push到遠程:

git push origin dev

你的小伙伴已經向origin/dev分支推送了他的提交,而碰巧你也對同樣的文件作了修改,並試圖推送:

git push origin dev

推送失敗,因為你的小伙伴的最新提交和你試圖推送的提交有沖突,解決辦法也很簡單,Git已經提示我們,先用git pull把最新的提交從origin/dev抓下來,然后,在本地合並,解決沖突,再推送:

$ git pull

git pull也失敗了,原因是沒有指定本地dev分支與遠程origin/dev分支的鏈接,根據提示,設置dev和origin/dev的鏈接:

 

$ git branch --set-upstream dev origin/dev

再pull:

$ git pull

這回git pull成功,但是合並有沖突,需要手動解決,解決的方法和分支管理中的解決沖突完全一樣。解決后,提交,再push

因此,多人協作的工作模式通常是這樣:

1首先,可以試圖用git push origin branch-name推送自己的修改

2如果推送失敗,則因為遠程分支比你的本地更新,需要先用git pull試圖合並;

3如果合並有沖突,則解決沖突,並在本地提交;

4沒有沖突或者解決掉沖突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream branch-name origin/branch-name。

這就是多人協作的工作模式,一旦熟悉了,就非常簡單。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM