Git的一些騷操作

2021-10-04 03:43:08 字數 4905 閱讀 4475

寫在前面: 

vim插入模式命令命令說明i

實現的是在游標之前的插入

i

大寫的i實現在游標所在行的最前面插入

a

實現在游標後插入

a

實現在游標所在行的行尾插入

o

實現在游標所在行的上方插入新行

o

是現在游標坐在行的下方插入新行

git中vim的命令

命令

說明

:w

儲存編輯後的檔案內容,但不退出vim編輯器。這個命令的作用是把記憶體緩衝區中的資料寫到啟動vim時指定的檔案中。

:w!

強制寫檔案,即強制覆蓋原有檔案。如果原有檔案的訪問許可權不允許寫入檔案,例如,原有的檔案為唯讀檔案,則可使用這個命令強制寫入。但是,這種命令用法僅當使用者是檔案的屬主時才適用,而超級使用者則不受此限制。

:wq

儲存檔案內容後退出vim編輯器。這個命令的作用是把記憶體緩衝區中的資料寫到啟動vim時指定的檔案中,然後退出vim編輯器。另外一種替代的方法是用zz命令。

:wq!

強制儲存檔案內容後退出vim編輯器。這個命令的作用是把記憶體緩衝區中的資料強制寫到啟動vim時指定的檔案中,然後退出vim編輯器。

zz

使用zz命令時,如果檔案已經做過編輯處理,則把記憶體緩衝區中的資料寫到啟動vim時指定的檔案中,然後退出vim編輯器。否則只是退出vim而已。注意,zz命令前面無需加冒號「:」,也無需按enter鍵。

:q

在未做任何編輯處理而準備退出vim時,可以使用此命令。如果已做過編輯處理,則vim不允許使用者使用「:q」命令退出,同時還會輸出下列警告資訊:no write since last change (:quit! overrides)

:q!

強制退出vim編輯器,放棄編輯處理的結果。如果確實不需要儲存修改後的檔案內容,可輸入「:q!」命令,強行退出vim編輯器。

:w filename

把編輯處理後的結果寫到指定的檔案中儲存

:w! filename

把編輯處理後的結果強制儲存到指定的檔案中,如果檔案已經存 在,則覆蓋現有的檔案。

:wq! filename

把編輯處理後的結果強制儲存到指定的檔案中,如果檔案已經存在,則覆蓋現有檔案,並退出vim編輯器。

新增已跟蹤的被修改(modified)和被刪除(deleted)檔案,不包括新檔案(new)(即:表示只新增暫存區已有的檔案(包括刪除操作),但不新增未跟蹤的新增檔案)

新增未跟蹤的新檔案(new)和已跟蹤的被修改(modified)檔案,不包括被刪除(deleted)檔案(注意:只能夠提交當前目錄或者它後代目錄下相應檔案)

(git add --all的縮寫)   新增所有變化;是上面兩個功能的合集,可以提交未跟蹤、修改和刪除檔案

假如遇到衝突也讓 git強制執行

1、切換到latest_branch分支下

git checkout --orphan latest_branch

2、新增所有檔案

git add –a

3、提交更改

git commit -m "

清除所有歷史版本以減少倉庫大小"

4、刪除分支

git branch -d master

5、將當前分支重新命名

git branch -m master

6、最後,強制更新儲存庫

git push -f origin master

背景:在本地初始化了乙個 git**倉庫,關聯到 github上新建的倉庫,第一次執行 git pull origin master 拉取遠端分支時,出現標題上的問題(git 2.9之後的版本才會出現此問題)

需要新增 --allow-unrelated-histories 告訴 git 允許不相關歷史合併,即寫成 git pull origin master --allow-unrelated-histories

1、找到你想要撤銷的commit id

git log

2、撤銷到當前 commit id的位置

git reset --soft commit id

或者

git reset -- mixed commit id

亦或者

git reset --hard commit id

如果你剛執行完commit後,想撤回 commit,可以直接:

git reset --soft head^

這樣就成功的撤銷了你的commit;注意,僅僅是撤回commit操作

head^的意思是上乙個版本,也可以寫成head~1;如果你進行了2次commit,想都撤回,可以使用head~2,以此類推

如果commit注釋寫錯了,想改一下注釋

git commit --amend

此時會進入預設vim編輯器,修改注釋完畢後儲存就好了,當然你也可以直接

git commit --amend –m 「新命名」

只需要:git rebase --abort,放棄當前操作退出 rebase-merge目錄

注意不要合併先前提交過的東西,也就是已經提交遠端分支的紀錄

有兩種方法:一種是使用 commit把未暫存的檔案進行一次提交,但我們並不想增加乙個髒的提交,雖然說可以進行 commit合併,可這不是自找麻煩嗎,那麼你可以考慮第二種;第二種就是使用 git stash(git儲藏),git stash會把所有未提交的修改(包括暫存的和非暫存的)都儲存起來,用於後續恢復當前工作目錄;使用該命令後會推送乙個新的儲藏,當前的工作目錄就乾淨了,這樣就可以接著使用 git rebase了;需要說明一點,stash是本地的,不會通過 git push命令上傳到 git server上;然後想重新應用快取的 stash,可以通過 git stash pop命令恢復之前快取的工作目錄

1、修改多個提交資訊,可以通過給 git rebase 增加 -i 選項來互動式地執行變基。 必須指定想要重寫多久遠的歷史,這可以通過告訴命令將要變基到的提交來做到。

例如,如果想要修改最近三次提交資訊,或者那組提交中的任意乙個提交資訊, 將想要修改的最近一次提交的父提交作為引數傳遞給 git rebase -i 命令,例如你想修改倒數第三次的歷史,即 head~2^ 或 head~3(兩者是一樣的),亦或者通過 commit id來操作。 記住 ~3 可能比較容易,因為你正嘗試修改最後三次提交,但是注意實際上指定了以前的四次提交;那麼我們只需要修改提交的父提交:

git rebase -i head~3

再次記住這是乙個變基命令 —— 在head~3…head範圍內的每乙個修改了提交資訊的提交及其所有後裔都會被重寫。 不要涉及任何已經推送到**伺服器的提交 —— 這樣做會產生一次變更的兩個版本,因而使他人困惑。

2、在文字編輯器上找到想要修改的歷史資訊,修改pick為edit;需要重點注意的是相對於正常使用的log命令,這些提交顯示的順序是相反的

3、當儲存並退出編輯器時,git 將你帶回到列表中的最後一次提交,然後輸入 git commit –amend,接著修改提交資訊,然後退出編輯器;最後,執行 git rebase --continue,這個命令將會自動地應用另外兩個提交,然後就完成了

有時候我們在 master分支上 commit了多次,但是後面覺得這些東西應該另外開乙個分支 dev儲存比較好,並且想保留之前已經 push上遠端倉庫的**,那麼需要以下操作:

1、先把當前的所有檔案放到暫存區裡面

git add –a

2、新建乙個分支 dev,並切換到該分支

git checkout -b dev

3、把所有未提交的修改(包括暫存的和非暫存的)都儲存起來

git stash

4、切換回去 master分支

git checkout master

5、從遠端分支拉取**,但是不同步合併本地分支

git fetch –all

6、設定本地的master 與遠端 master 的commit 一致

git reset --hard origin/master

7、回到我們工作的 dev分支

git checkout dev

8、恢復之前快取的工作目錄

git stash pop

Mac OS 上的一些騷操作

本帖記錄個人在使用 mac 作業系統上的一些騷操作,不斷更新,以饗讀者。用雙指上下劃觸控板嗎?no,我們有更騷的操作 command 回到頂部 command 滾到底部 另外,fn 上滾一頁 fn 下滾一頁 fn home,回到頂部 fn end,滾到底部 有時候從網上看到不錯的文字想要貼上到 wo...

C語言的一些騷操作 (一)

逗號用來連線兩個表示式,並以右邊的表示式的值為結果,逗號在所有運算子中先級最低。int n 1 2,2 3,4 5 n 1 取右邊最後乙個結果 int n 1 2,2 3,4 5 n 1 2 即 n 3短路與 左邊表示式是false,右邊就不執行,邏輯表示式值為false。短路或 左邊表示式是tru...

git的一些操作

轉殖新增 git clone 位址 github轉殖 下來 git add 新增修改的 git status 檢視狀態 git commit m 新增備註 git push 遠端推送 修改後提交 git pull 每次上傳 前都要拉 git add 新增修改的 git status 檢視狀態 git...