1. 程式人生 > >工作中對git使用的總結

工作中對git使用的總結

git clone 作用 master 提交代碼 兩種 sta debug hub svn

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找回。

工作中對git使用的總結