$ mkdir learngit//在當前目錄下建立乙個資料夾
$ cd learngit//進入learngit
$ pwd//顯示當前路徑
$ git init//將當前目錄變為git可以管理的目錄
$ git add hello.txt//提交變動到暫存區
$ git reset head readme.txt//撤銷暫存區的修改,並不會把修改工作區的內容
$ git commit -m 「提交日誌」//git的操作是以暫存庫為準,只不過是提交變動到版本庫後,暫存區版本庫工作區都一樣
$ git status//檢視工作區與暫存區的變動(當沒有變動可以看成暫存區版本庫工作區都一樣)
$ git diff readme.txt//檢視具體的修改
$ git diff head – readme.txt//檢視工作區和版本庫裡面最新版本的區別
$ git reset --hard head//硬回退到上乙個版本,head
表示上上個版本,head100表示往上100個版本
$ git reset --hard d7ecaba//硬重置到版本號前幾位為d7ecaba的版本
$ cat readme.txt//檢視檔案裡的內容
$ git log --pretty=oneline//精簡輸出到一行
$ git reflog//檢視命令歷史,可以用來恢復到某個歷史版本
$ git checkout – readme.txt//可以丟棄工作區的修改:當你的修改沒提交到暫存庫時,回退的是版本庫裡面的(其實此時版本庫和暫存庫此檔案一樣的,git的操作是以暫存庫為準,所以回退的還是暫存庫裡面的檔案);當你已經提交到暫存庫了,git操作是以暫存庫為準,所以回退還是暫存庫裡面的檔案(此時還沒提交到版本庫所以版本庫和暫存庫裡面此檔案是不一樣的)。
$ rm test.txt//刪除工作區里的test.txt,$ git checkout – test.txt可以從暫存庫裡面記錄的test.txt重置到工作區(舉例:比如說你修改了test.txt後add到了暫存區後,你又修改了test.txt,但是不小心$ rm test.txt了,要是你用$ git checkout – test.txt回退得到的是add那次的修改,之後的修改會沒了;當然你想恢復之後的修改那在這種情況下不要從暫存庫回退,那該怎麼做我也不知道)。我覺得要禁止用這條命令。
$ git rm test.txt//提交刪除test.txt到暫存區,此時暫存區和工作區已經沒test.txt,版本庫還有。$ git checkout – test.txt恢復不了,因為暫存區沒有test.txt了。想恢復它只有乙個辦法,先$ git reset head readme.txt撤銷暫存區的修改。此時用$ git status可以看到你的暫存區與工作區的不同,乙個不同就是工作區刪了test.txt。想恢復它到你的工作區還需要用$ git checkout – test.txt從暫存區拉取下來。
//如何在github建立遠端庫
1.在你的電腦建立ssh key。
在使用者主目錄(c:\users\你的使用者名稱\)下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個檔案,如果已經有了,可直接跳到下一步。如果沒有,開啟shell(windows下開啟git bash),建立ssh key:
$ ssh -keygen -t rsa -c 「[email protected]」
第一次建立會提示設定密碼,設定密碼時,密碼不會顯示出來。不設定密碼就直接按下enter鍵。
如果一切順利的話,可以在使用者主目錄裡找到.ssh目錄,裡面有id_rsa和id_rsa.pub兩個檔案,這兩個就是ssh key的秘鑰對,id_rsa是私鑰,不能洩露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
2.將id_rsa.pub裡面的內容新增到你在github裡面的ssh keys。
3.在github建立乙個git倉庫。
4.在你的電腦的本地要推送的倉庫下右鍵選單,選git bash here,輸入如下命令:
$ git remote add origin [email protected]:***/***.git
5.把本地庫所以的內容推送到運程庫。
$ git push -u origin master
由於遠端庫是空的,我們第一次推送master分支時,加上了-u引數,git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令($ git push origin master)。
$ git clone [email protected]:***/***.git//從github轉殖乙個庫
$ git checkout -b dev//在當前節點建立分支並切換到新分支
$ git branch dev//在當前節點建立分支
$ git checkout dev//切換到dev分支
$ git branch//檢視所以的分支,*所在指示當前分支
//合併分支處理衝突的方法
1.$ git merge dev//將dev分支合併到當前分支上,預設採用fast-forward(快進模式)。
2.可以用$ git status檢視衝突的檔案,直接開啟衝突的檔案修改衝突。
3.然後提交修改$ git add readme.txt。
4.提交到版本庫$ git commit -m 「conflict fixed」。
//第二種合併分支的方法
$ git merge --no-ff -m 「merge with no-ff」 dev
合併分支時,加上–no-ff引數就可以用普通模式(遞迴模式)合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。
//分支策略
在實際開發中,我們應該按照幾個基本原則進行分支管理:
首先,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev分支合併到master上,在master分支發布1.0版本;
你和你的小夥伴們每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合併就可以了;
合併後盡量把分支刪除。
$ git log --graph --pretty=oneline --abbrev-commit//檢視分支歷史
$ git branch -d dev//刪除dev分支
$ git stash//在當前分支建立儲存庫
$ git stash list//列出所以的儲存庫
$ git stash pop//恢復的同時把stash內容也刪除
$ git stash drop//刪除乙個儲存
$ git stash pop stash@
$ git stash drop stash@
$ git cherry-pick 4c805e2//將乙個特定的提交複製到當前分支(挑揀功能)
$ git branch -d test//如果要刪除乙個沒有被合併過的分支,可以通過$ git branch -d test強制刪除
$ git remote//檢視遠端庫的資訊,遠端倉庫的預設名稱是origin
$ git remote -v//顯示遠端庫更詳細的資訊,可以看到抓取和推送的origin的位址
$ git push origin dev//將dev分支推送到遠端庫對應的遠端分支上//抓取分支
多人協作時,大家都會往master和dev分支上推送各自的修改。
$ git rebase//rebase操作可以把本地未push的分叉提交歷史整理成直線
$ git tag v1.0//在當前分支指向的節點打乙個新標籤(版本快照)
$ git tag//檢視所有標籤
$ git tag v0.9 0cabeb4//對0cabeb4這次提交打標籤
$ git show v0.9//檢視標籤資訊
$ git tag -a v0.1 -m 「version 0.1 released」 5e77bf4//還可以建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字
//注意:標籤總是和某個commit掛鉤。如果這個commit既出現在master分支,又出現在dev分支,那麼在這兩個分支上都可以看到這個
標籤。$ git tag -d v0.1//刪除標籤v0.1
$ git push origin v1.o//推送某個標籤到遠端
$ git push origin --tags//一次性推送全部尚未推送到遠端的本地標籤
$ git push origin :refs/tags/v0.9//如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,先從本地刪除;然後,用push從遠端刪除$ git config --global color.ui true//讓git顯示顏色,會讓命令輸出看起來更醒目
$ git config --global alias.lg 「log --color --graph --pretty=format:』%cred%h%creset -%c(yellow)%d%creset %s %cgreen(%cr) %c(bold blue)<%an>%creset』 --abbrev-commit」//簡化指令的輸入
$ git lg//使用簡化的指令
廖雪峰的git教程
dsp指令ixh DSP指令解釋
1.stm 8765,ar7 把立即數 存放到ar7 所指定的資料儲存單元中去 2.mpy 2,a 立即數 2與t 暫存器中的值相乘,並將乘積裝入累加器a中 3.mvpd table,ar1 把中table 標註的程式儲存器單元位址中的乙個字複製到由 ar4所指定的資料儲存單元中 去。4.bc ne...
彙編指令解釋
mov ax,30h ax 0x30 mov ax,30h ax中的內容是記憶體位址30h裡儲存的數值 bx 40f6h,記憶體位置40f6h 40f7h兩個位址中存放的數是22h 23h mov ax,bx 2223h傳送到ax中 mov ax,bx 40f6h傳送到ax中ldr r0,x 用於載...
dockefile 指令解釋
dockefile 指令解釋 除了注釋行之外的第一行,必須是 from 是基礎映象 from centos 映象維護者的資訊 maintainer zt 25958889 qq.com 指定該容器執行時的使用者名稱和 uid,後續的 run 命令也會使用這面指定的使用者執行 user xx work...