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 薛占奎 閱讀(...) 評論(...) 編輯 收藏