Git 學習筆記

2021-09-02 23:25:37 字數 4157 閱讀 5166

git 學習筆記

檔案往git版本庫里新增的時候,是分兩步執行的:

第一步是用git add把檔案新增進去,實際上就是把檔案修改新增到暫存區;

第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

第三步提交到遠端git庫 git push

git branch檢視分支

git checkout master切換分支

git merge dev合併分支 注:fast-forward快速合併的提示,本次合併為快速合併,並不是每次合併都能快速合併

git branch -d dev刪除分支dev

解決衝突

分支管理策略

分支管理的幾個原則

bug分支

git stash list檢視工作現場

stash內容恢復git stash pop,恢復的同時把stash內容也刪了

feature分支

多人合作

抓取分支

解決衝突

多人協作的通常的工作模式

建立標籤

操作標籤

檢查規則git check-ignore

git切換遠端倉庫位址

建立git倉庫

mkdir react-music

cd react-music

git init

touch readme.md

git add readme.md

git commit -m "first commit"

git remote add origin [email protected]:rls0310/react-music.git

git push -u origin master

已有專案

cd existing_git_repo

git remote add origin [email protected]:rls0310/react-music.git

git push -u origin master

git 拉取遠端分支到本地

git通關攻略

$ git tag your-tag

$ git tag your-tag a38862a5a860

$ git tag

$ git tag -d your-tag

第1條命令是給最近一次提交打標籤;

第2條命令是給指定的某次提交打標籤,後面要寫上提交的 hash 值或者 hash 值的前幾位;

第3條命令是列出所有的標籤;第4條是刪除標籤。

檔案沒有提交全,解決辦法就是先用 git add

把忘記提交的檔案新增到暫存區,再用 git commit 命令加 --amend

引數把檔案追加到最近一次提交中去

$ git commit --amend 會彈出編輯框,ctrl+o(儲存) :qw(退出)

$ git commit --amend -m "new message" 提交說明

// 其中 -c 表示使用已提交過的說明,head

// 表示最近一次提交,加在一起就是使用最近一次的提交說明

$ git commit --amend -c head

$ git push remote-name branch-name

$ git push -u remote-name branch-name

$ git push

第1條命令是把本地的檔案推送到遠端倉庫,remote-name是遠端倉庫名,branch-name是分支名,如果你沒有重新命名過它們,那它們預設的名稱分別是 origin 和 master;

第2條命令加了乙個 -u 引數,目的是讓 git 把 remote-name 和 branch-name 記住,下次就不用再寫這2個引數了;

第3條命令就是使用過 -u 引數以後的推送命令,不需要任何引數了。

多人開發時,推送是有先有後的,按照 git 的規則,在你推送時如果已經有人比你早推送了,你若再推送就會收到乙個 "non-fast forward" 的提示,直譯就是「不能快進」。那麼此時你至少有2種辦法來解決:

方法一,先用 git pull 命令把遠端倉庫的最新**合併到本地,然後再提交。這時本地的提交和遠端的提交按時間順序混合排列。

方法二,用 git rebase 命令把本地倉庫的更新排到遠端倉庫更新之後,那這時候本地倉庫的所有提交都排在遠端倉庫的最後一次提交之後。

一般使用步驟:

檢視本地提交,並簡化輸出

git log --pretty=oneline

檢視遠端提交,並簡化輸出

git log origin/master --pretty=oneline

git git rebase 放到更新之後,才提交

git push origin master

$ git branch branch-name

$ git branch

第1條語句用於建立分支,branch-name 就是你要建立的分支名稱;

第2條語句用於列出全部分支。

$ git checkout tag-name 可以切換帶有'tag'的內容,就和切換分支一樣

如果』tag『 和 分支同名,那麼checkout會切換到分支。如果想切換到tag,如下:

$ git checkout tags/tag-name

建立分支,預設和當前主線一樣。可以指定建立和某一次提交一樣的分支

$ git branch branch-name hash-code 如:git branch cy c5dfer45fdf

刪除分支

$ git branch -d 分支名

優化你的倉庫,重新打包,並清除多餘的包

$ git repack

$ git repack -d

第1條命令是把物件打包到一起,

第2條命令是在打包後刪除已作廢的物件

$ git grep keyword

$ git grep keyword file-name

$ git rebase -i hash-code

開啟後顯示如下:

pick 06973a3 first coommit

pick 771b71d second commit

表示此次更新執行什麼操作的命令:

"pick",表示執行此次提交;

"reword",表示執行此次提交,但要修改備註內容;

"edit",表示可以修改此次提交,比如再追加檔案或修改檔案;

"squash",表示把此次提交的內容合併到上次提交中,備註內容也合併到上次提交中;

"fixup",和 "squash" 類似,但會丟棄掉此次備註內容;

"exec",執行命令列下的命令;

"drop",刪除此次提交。

git rebase -i 994f2b3a2df48ef4a4

squash 合併提交命令

pick 1ac3ed6 updating readme (squash this commit into adding readme) -> squash 1ac3ed6 updating readme (squash this commit into adding readme)

$ git merge branch-name --squash 

加了 --squash 系統不會自動commit需要手動commit加上-m注釋

取消某次提交

git revert 40c0e30361f58926adaa7a560940e363f0f4e11f --no-edit

刪除最後一次提交

git reset --hard head^

恢復指定提交

git reset --hard hash-code

Git學習筆記

git stash git stash list 顯示git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。git stash clear 清空git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。關於git stash的詳細解釋,適用場合,這裡做乙個說明 使用git...

git 學習筆記

1 git checkout master 切換分支 2 git checkout b xx 新建分支,同時切換到該分支 3 dev 4 git add a 將變動檔案,提交到index 5 git commit m 將 暫存區 檔案,加入到版本控制中。6 git checkout master 7...

Git 學習筆記

顯示版本庫.git所在的目錄 git rev parse git dir 顯示工作區的根目錄 git rev parse show toplevel 相對於工作區根目錄的相對目錄 git rev parse show prefix git config 命令各引數的區別 git config e 版...