天天看點

工作中對git使用的總結

       git與svn的差別,簡單的說,

       svn在checkout後,如果不送出,那麼版本庫沒有記錄,如果修改的檔案比較多,中間想回退幾個檔案,非常麻煩。git 是clone下來代碼和記錄,不送出到伺服器時,可以本地多次commit,能做到部分回退,最後push到伺服器,push的除了代碼變更,還沒有每一次的送出記錄。

另外,git對一些場景比較适用,比如新需求正在開發,突然發現線上有bug,svn随着不斷送出,代碼已經與生産環境有差異,最好的辦法是取某個時間的版本進行修改,再一點點合并進去。而git,線上與開發可以是不同分支,可以優先改線上代碼,完成debug後,将線上分支merge到開發分支,就可以了。

1.clone代碼

指令 git clone -b dev https://github.com/xuezhankui/SpringbootExample

黃色部分為clone dev分支,不加的話,clone下來master分支,修改分支可以通過git branch指令來改

2.git branch指令

首先,查詢本地分支和遠端分支都有哪些

git branch -a

黃色部分代表遠端分支,沒有參數顯示本地分支。

其次,改變push的分支

因為是從master clone到本地master,是以master分支的push,必将上傳到線上master分支,現在改一下。

情況1:如果線上有dev分支,想clone這個,但是是以masterclone下來的,

這時候隻需要

git checkout -b dev origin/dev 作用是checkout遠端的dev分支,在本地起名為dev分支,并切換到本地的dev分支

情況2:

使用本地dev分支,push的時候指定master分支。

雖然不建議這麼做,至少給個方法

1.此做法與合并時有點像

git checkout dev 切換到dev分支

git branch --set-upstream-to=origin/master 設定push的目标

git push

2.一步搞定

git push origin master

最後,删除分支

git branch -d 要删除的分支

3.送出代碼

這個簡單,就簡單說了

1。用git status指令,可以檢視到都改了哪些檔案

2.git add

兩種方式,第一種,git add 路徑/檔案名

第二種,git add * //添加所有變更檔案

3. git commit

git commit -m “注釋資訊”

4.合并以及沖突合并

場景:在dev_feature_xx分支改完了,需要合并進dev

方法一:

git checkout dev 切換到dev

git merge dev_feature_xx

可能會産生沖突,沖突的檔案可以用git status找到

commit前也可以用 git diff dev_feature_xx dev 對比一下

合并完沖突檔案

git add 沖突檔案

git commit -m 'merge'

如果不确定dev對應哪個remote分支,可以執行一下

git branch --set-upstream-to=origin/dev 設定push的目的地

git push

或者

git push origin/dev

也有時候用另一種方式,基本差不多,看具體情況

git checkout dev

git pull origin dev_feature_xx

修改沖突檔案

git add 沖突檔案

git commit -m 'merge'

git push origin/dev

5 rollback

首先了解兩個指令

git reflog 版本變化的記錄,包含回退操作

git log 每次送出的記錄,包含了注釋,和commit id

方式一:

id方式 git reset <id> <檔案名>

檔案名不寫的話,恢複所有檔案

方式二:

HEAD方式,目前版本是HEAD

比如你修改了檔案,後悔修改了,可以

git reset HEAD <檔案名>

如果想恢複到上一個版本

git reset HEAD^

再上一個版本HEAD^^,以此類推

6.其他操作

       git rm <檔案名>  删除,這裡指從git庫删除。

相當于 rm <檔案名> git add <檔案名>

删除後要commit。

        删除檔案後的恢複:以a.txt為例

        1.未commit到git庫的檔案,删除後就沒有了

        2.删除操作在執行commit之前,可以 git reset HEAD a.txt,将檔案恢複到緩沖區,然後,git checkout a.txt找回。

        3.删除操作已經送出,可以 git reset HEAD^ a.txt,将檔案恢複到緩沖區,然後,git checkout a.txt找回。

posted on 2019-02-24 18:56 薛占奎 閱讀(...) 評論(...) 編輯 收藏

git