git的一些基本使用

工作中對於項目的管理主要是基於git的,學習git還是很重要的。。。。。。

Git的特點 

  • Git是分佈式版本控制系統 
  • git的底層是用C來實現的 

Git相關參數的配置 用來指定自己的機器 

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

git config --global user.email “Your email" 

 

Git倉庫的建立 

mkdir path/filename 

cd paht/filename 

git init 

 

通過以上操作,就可以將本地的一個目錄聲明爲git倉庫,可以通過ls -a來查看當前目錄下是否有.git隱藏文件,該文件是用來跟蹤和管理版本庫的,不可亂動。 

 

關於基本操作 

touch filename 

git add filename        //將filename添加到當前的倉庫內 

git commit -m “tps”     //將添加到倉庫內的文件提交到倉庫內,其中tips是用來標記本次提交的提示信息 可以多次add然後一次commit 

git status    //用來顯示當前倉庫的狀態,例如修改了當前的某個文件但是還未提交,就會提示修改了其中的某個文件 

git diff filename    //用來顯示當前文件與之前的文件有哪些區別 

git log    //用來顯示從最近到最遠的提交日誌 

git reset —-hard HEAD~num    //用來會退到之前的某個版本

git reset —-hard commit_id    //用來定位到某個確定的時間點

git reflog     //可以用來查看歷史的每一次命令,同時可以查看對應的commit id

  • git log可以用來查看從當前時間點開始的所有commit的id,一般只需要前幾位就可以
  • 當使用git reset之後,git log的輸出結果也會產生變化,也就是說會導致如果後悔某次的回退操作,就會導致無法使用git log來查找到相關的commit id來進行回退

 

git庫可以分爲兩個部分,一個爲工作區,一個爲版本庫。其中版本庫分爲暫存區和分支區。 

  • 使用git add 操作就是將對應的file加入到暫存區 
  • 使用git commit就是將對應的節點加入到分支區 

 

例如,對於ReadMe.txt文件,先對其進行修改,然後使用git add將其加入到暫存區內,然後再次修改ReadMe.txt文件,這時使用git commit命令將暫存區內的文件提交到分支區,此時只有第一次修改的內容會被提交,第二次修改的內容則不會被提交;如果想要提交第二次修改的內容,則需要重新執行git add,將第二次修改的內容添加到暫存區,同時執行git commit將其提交 

git checkout —- filename    //將工作區內文件的修改進行撤銷 

  • 如果對於此文件,還未添加到暫存區,則將分支區內的內容還原給工作區 
  • 如果對於此文件,已經添加到了暫存區,則將暫存區的內容還原給工作區

git reset HEAD filename    //可以將暫存區內的修改撤銷,並回退到工作區 

注意以上幾種撤銷之間的區別: 

  • git reset —hard HEAD/commit_id 此命令使用來將工作區內的內容還原成分之區對應的節點 
  • git checkout -- filename 此命令是對工作區的修改進行撤銷,需要判斷暫存區內有無添加,是對應單個文件來說的 
  • git reset HEAD filename 此命令是將暫存區的添加內容進行刪除,是對應單個文件,而且是針對暫存區的內容 

 

  • git rm + git commit可以用來刪除分支區內的對應內容 

 

如果使用rm刪除本地的相關內容之後的確要進行刪除,則可以使用以上的命令來確定操作 

如果不是要進行刪除,則可以採用git checkout —- filename命令將版本庫內的內容還原到工作區 

 

通過將本地庫與github上的庫相關聯實現分佈式控制,github上的庫與本地的庫之間進行傳輸採用的是ssh加密的方式。即本地庫的私鑰和hub的公鑰鑰進行配對。 

ssh-keygen -t rsa -C "[email protected]”    //用來生成對應的公鑰和私鑰 

上述命令可以在.ssh目錄下生成兩個文件,id_rsa和id_rsa.pub兩個文件,分別表示一對私鑰和公鑰,其中公鑰需要添加到github倉庫中,這樣的話,只有具有對應的私鑰的用戶纔可以對項目中的內容進行修改。 

 

  • 在本地的倉庫執行以下命令,可以將本地倉庫與hub上的倉庫進行綁定 

git remote add origin [email protected]:<yourid>/<name.git>       //origin表示遠程庫的名字,一般默認情況下使用這個名字    <yourid>表示你的github名稱    <name.git>用來表示與本地倉庫相綁定的倉庫 

  • 在本地倉庫執行以下命令,將本地倉庫的內容推送到遠程庫上 

git push -u origin master    //origin表示需要推送的遠程庫的名稱    master表示需要推送到的分支    -u表示第一次添加時將本地的master分支推送到遠程庫的master分支,還會將本地的master分支與遠程庫的master分支相關聯 

 

git push origin master    //將本地的master推送到遠程庫中與其對應的分支上 

 

  • 將遠程庫clone到本地庫 

git clone [email protected]:<yourid>/<name.git>    //將遠程庫拷貝到本地庫 

     

關於分支

所謂分支,就是一段時間鏈,每個節點保存了對應提交的內容,而HEAD默認是指向了master,master是一個指針,指向了主鏈的最新節點。 

  • 創建並切換分支 

git checkout -b dev    //創建dev分支並切換到dev分支,所謂創建就是新建了一個dev指針指向當前的最新節點,所謂切換就是將HEAD轉而指向dev指針 

此指令相當於

git branch dev    //創建dev分支

git checkout dev    //切換到dev分支

使用git branch來顯示當前庫內包含的分支

當前分支前會有*標註

 

  • 合併分支

git merge <branchname>    //將<branchname>指向的分支合併到當前分支

 

  • 禁止使用Fast Foward模式

git merge —no-ff -m “tip” <branchname>    //通過禁止使用Fast Foward模式,可以在刪除分支後保留分支的信息

 

  • 刪除分支

git branch -d <branchname>    //將<branchname>指向的分支刪除

 

  • 查看分支圖

git log --graph    //使用此命令可以查看分支變化圖 

 

  • 保存當前的工作信息 

git stash    //此命令可以將當前分支的內容壓棧進行保存,然後就可以切換到其他的分支 

 

對於 git push origin master這種,可能會產生衝突,此時可以先採用git pull將庫的內容拉下來,然後在本地解決衝突之後再進行push操作。 

 

  • 合併多人協作的衝突

git Rebase

 

關於標籤

git tag <tagname>    //可以爲最近的commit打上標籤

git tag    //可以顯示當前的所有tag

git tag <tagname> commit_id    //爲指定的commit打上標籤

git tag -a <tagname> -m “tip” commit_id    //爲指定的commit打上標籤和說明性的文字

git show <tagname>    //顯示指定tag的說明性文字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章