git小白入門全攻略

git是什麼(寫在前邊的叨叨,就是給一點不懂的小白打個比喻,大佬請自行跳過)

git在平時的開發中用的太頻繁了,以致於我都不知道如何去形容它。囧。
假設咱們開發的工做相似於圖書整理,寫的代碼就是不少人借書還書,假設我和你一塊兒來整理這些書,有不少人來借書,你給A一本,我給B一本,這沒有任何問題,可是,忽然來了C和D,他倆同時要借一本《時間簡史》,並且這本書僅此一本,個人手伸向了這本書,你的手也伸向了這本書,而後,是書在咱們倆的爭奪中被撕成兩半了?仍是我和你打起來了?
咱們固然都不會這麼蠢,咱們拿書的時候必定會看看對方有沒有正在拿,若是你先伸手了我就讓給你,沒有必要打一架(笑)。
咱們多人開發的時候,維護一套代碼,git這個工具就包含了咱們許多的行爲,好比經常使用的git pull 就至關因而用眼睛去看一下,看看書架是否是有別人已經動過了,別人已經把書擺滿了,本身還繼續往這個地方放書,固然放不進去啦。php

git安裝

  1. windows :https://git-scm.com/downloads
  2. linux:yum install git / apt-get install git
  3. MacOS: brew install git

git常規操做

1. 新建倉庫,設置全局的我的信息,ssh-key的設置

  • 新建倉庫
git init
  • 設置我的信息
git config --global user.name "yourname"
git config --global user.email test@runoob.com
git config --list  //查看當前配置信息
  • ssh-key的設置
    因爲本地Git倉庫和GitHub倉庫之間的傳輸是經過SSH加密的,因此必需要讓github倉庫認證你SSH key,在此以前,必需要生成SSH key。
    首先在家目錄下進入 .ssh 文件夾,若是沒有這個文件夾或者文件夾下沒有id_rsa、id_rsa.pub兩個文件,就進行下邊的生成過程。
ssh-keygen -t rsa -C "youremail@example.com"

以後一路回車,.ssh文件夾下就有了兩個文件,私鑰id_rsa和共鑰id_rsa.pub,須要提供ssh密鑰的都是要的共鑰,id_rsa.pub。linux

2. 拉取遠程倉庫,設定遠程倉庫,分支和遠程創建鏈接

  • 拉取遠程倉庫
git clone [git地址]

這個就是最經常使用的git拉取一個倉庫的代碼到本地的命令,會在當前的目錄下新建一個倉庫代碼文件夾。若是你的ssh已經保存在這個倉庫裏了,那麼你能夠push,不然的話你只有pull的權限。git

  • 設定遠程倉庫
    好比如今你是在本地init了一個倉庫,而後你在github上申請了一個倉庫地址,你要把你的代碼推到github上,就須要設定遠程倉庫了。
git remote add [名字] [地址]

好比git remote add origin git@github.com:gaopu1995/hiphp.git,就能夠把本地倉庫和遠程創建鏈接。通常默認叫它 origin。
其餘的幾個遠程倉庫命令:github

git remote  //查看當前遠程分支名字
git remote -v  //查看當前遠程分支的url,有兩個,一個fetch的,一個push的,通常會是同樣的,就是你設置的那一個
git remote remove <name>  //移除遠程分支
git remote -h  //其餘的就本身看一下幫助吧
  • 當前分支和遠程倉庫的分支創建鏈接
git push --set-upstream origin master

若是你刪除或者更換了遠程倉庫,新的倉庫在你推送的時候會讓你把你當前的分支和遠程分支創建映射關係,最後的兩個參數就是遠程倉庫名和遠程倉庫的分支名,操做對象是你當前分支。windows

3. 推拉提交,處理衝突

  • 推拉提交
git pull        //拉取最新代碼
git push        //把本地提交推送到遠程
git add [文件](多個文件空格隔開)        //把本地的更改添加到更改緩存中
git commit -m "提交註釋"        //提交目前緩存中的更改

解釋一下:緩存

  1. git的管理是針對修改的,而推拉的單位都是每次提交的修改,就是你每次拉取(pull)的時候,都是按照別人推送的內容拉取的。好比別人推送了三個文件的修改,那你拉下來,要麼不拉取,要麼就是這三個文件的改動。
  2. 而推送的時候,首先是有一個緩存區,你把你想要提交的修改文件添加到這個緩存區,而後提交的時候就會統一把這個緩存區裏的全部修改都提交到本地。
  3. 提交是提交到本地,本地的修改推送(push)到遠程倉庫,別人才能拉取到你的修改。
  4. commit的註釋必定要寫明白。這是個合做工具。交流很重要。
  • 處理衝突
  1. 衝突是什麼:好比一個文件,他修改了,而你在沒有拉取他的代碼以前,也對這個部分修改了,就會產生衝突。
  2. 爲何會有衝突:前邊說過,git是對修改進行管理的,好比原本是一個a,他把a->b,你把a->c,如今他先提交的,你拉取他的代碼,你的git合併大家的修改的時候,要把a變成b,可是你已經把a變成c了,git就會把這個區域標出來
  3. 怎麼改:衝突部分會用 >>>>>>>>分支 標出來,改爲正確的,add而後commit就行。ssh

    4. 新分支,分支合併,分支刪除

git checkout [分支名]  //切換分支
git checkout -b [新分支名]  //從當前分支copy一個新的分支
git branch -d [分支名]  //刪除分支
git branch  //顯示當前所在分支
git merge [分支名]  //當前分支合併目標分支的修改

5. 暫存stash

git stash   //暫存代碼
git stash list  //查看stash存的內容
git stash pop  //恢復第一個暫存
git stash clear  //清理暫存

6. 查看log

git log  //查看提交記錄
git log --oneline  //查看提交記錄的簡單模式

7. 回溯

git reset --hard commit_id  //回退到某個版本
相關文章
相關標籤/搜索