Git學習

一、介紹

提交代碼,代碼統一管理的工具,通過以下的操作,就可以輕鬆學習git。

二、原理

主要分爲workspace(工作區),index/stage(暫存區),Repository(本地倉庫),Remote(遠程倉庫)
在這裏插入圖片描述
在這裏插入圖片描述
注:git版本回退速度非常快,因爲git在內部有個指向當前版本的HEAD指針,當你版本回退,則Git僅僅是把HEAD指向append GPL,如下圖:
在這裏插入圖片描述

三、命令和操作

1.git:查看git是否安裝

mac 安裝git
1.先安裝homebrew
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
再安裝git
2.裝xcode(appstore下載),Xcode->preferences,Downloads->Command Line Tools,install

windows安裝git
下載git程序安裝,在開始菜單git bash命令就可以安裝成功

完成之後的配置:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

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

2.git init:初始化一個空倉庫,ls -ah就可以看到隱藏的 .git目錄

3.git add readme.txt:提交到暫存區(unix的哲學沒有消息就是好消息)

git add -A

4.git status:查看文件狀態

在這裏插入圖片描述
git add -A提交所有文件之後
在這裏插入圖片描述

5.git reset:默認是僅撤銷commit和add,工作區內容不變

git reset --soft:僅撤銷commit,暫存區和工作區內容bubain
git reset --hard commit-id:恢復到某個版本庫(暫存區、工作區均變化)
git reset –hard HEAD(在git中,用HEAD表示當前版本,上一個版本是HEAD,上上個版本是HEAD^^,如果100就是HEAD~100)

git reset –hard 提交號

git reset --hard origin/master:將遠程的代碼覆蓋本地的,丟棄暫存區和工作區的修改內容

6.git commit -m ‘note’

在這裏插入圖片描述

7.git push (-u) origin master:推到遠程倉庫

8.git pull

git fetch + git merge = git pull

??? Git fetch+ git rebase = Git pull --rebase
從目的來說,兩者沒差別,運行之後, 能獲得一樣的code base。但從版本管理角度,這兩者有各自的使用意義。對比來看,git merge多了一次提交–“合併提交”。git rebase則沒有。
git merge:
簡單來說,它把兩條不同分支歷史的所有提交合併成一條線,並在“末端”打個結,即生成一次合併提交。最後形成一條單一的提交線。
git rebase:
根據參數的不同,行爲有些差別。但總的來說,它相當於把分叉的兩條歷史提交線中的一條,每一次提交都撿選出來, 在另一條提交線上提交。最後也形成一條單一的提交線。
表示把本地當前分支裏的每個提交(commit)取消掉,並且把它們臨時 保存爲補丁(patch)(這些補丁放到".git/rebase"目錄中),然後把本地當前分支更新 爲最新的"origin"分支,最後把保存的這些補丁應用到本地當前分支上。
在rebase的過程中,也許會出現衝突(conflict). 在這種情況,Git會停止rebase並會讓你去解決 衝突;在解決完衝突後,用"git-add"命令去更新這些內容的索引(index), 然後,你無需執行 git-commit,只要執行:
$ git rebase --continue
這樣git會繼續應用(apply)餘下的補丁。
在任何時候,你可以用–abort參數來終止rebase的行動,並且"mywork" 分支會回到rebase開始前的狀態。
$ git rebase --abort

9.git diff readme.txt:查看比較,和本地庫進行比較

git diff -U
在這裏插入圖片描述

10.git log:查看提交歷史

11.git reflog:查看命令歷史,以便確定要回到未來哪個版本。

可以查看所有分支的所有操作記錄(包括(包括commit和reset的操作),包括已經被刪除的commit記錄,git log則不能察看已經刪除了的commit記錄

12.git stash:進入暫存區可以下代碼,對應一個git stash pop來恢復工作區代碼

rm rest.txt:刪除文件

git clone :從遠程倉庫克隆代碼

四、分支管理

head指針是指向當前分支,head,master各佔一個分支。

git checkout -b dev:創建本地分支,再提交

相當於git branch dev + git checkout dev

git branch -a:查看遠程和本地分支

git branch:查看當前分支

git branch -d dev:刪除分支

git push origin branchName:推送到遠程分支

git push origin :branchName:刪除遠程分支(origin後面有一個空格)

git checkout -b dev origin/dev:從遠程分支拉取本地分支

git merge branchName:本地合併分支,要想遠程合併,需要push

git branch --set-upstream-to origin/遠程分支名 本地分支名:本地和遠程分支之間建立聯繫

分支介紹:
楊凌傳

五、遠程倉庫gitlab

  1. ssh的key:ssh-keygen –t rsa –C "[email protected]"
  2. 在github中setting配置ssh key(將生成的公鑰粘貼進去)

六、解決衝突

多人協作模式:
1.首先提交併推送到git push origin branchName推送自己的修改
2.如果推送失敗,則因爲遠程分支比本地新,需要用git pull試圖合併
3.如果合併有衝突,則解決衝突,並在本地提交
4.解決衝突之後重新進行push

git stash

git stash pop = git stash apply + git stash drop

七、打標籤

產品發佈後,打tag,方便將來拉分支修復bug。

git tag v1.0:默認是在最新提交的commit上的。

git tag v0.9 6224:對應的提交版本號打標籤

git tag:查看所有的tag

git push origin tagname:推送本地一個標籤

git push origin --tags:推送全部未推送過的本地標籤

git tag -d tagname:刪除一個本地標籤

git push origin :refs/tags/tagname:可以刪除一個遠程標籤

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