git使用,Git的skil-map
生活随笔
收集整理的這篇文章主要介紹了
git使用,Git的skil-map
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
1. 檢出、克隆庫: git clone git://git.openwrt.org/openwrt.git2. git查看某個文件的修改歷史 git log --pretty=oneline 文件名 列出文件的所有改動歷史,注意,這里著眼于具體的一個文件,而不是git庫,如果是庫,那改動可多了去了~3. 查看具體的某次的改動的修改 git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e 每一行最前面的那一長串數字就是每次提交形成的哈希值Git常用命令 查看、添加、提交、刪除、找回,重置修改文件 git help <command> # 顯示command的help git show # 顯示某次提交的內容 git show $id git co -- <file> # 拋棄工作區修改 git co . # 拋棄工作區修改 git add <file> # 將工作文件修改提交到本地暫存區 git add . # 將所有修改過的工作文件提交暫存區 git rm <file> # 從版本庫中刪除文件 git rm <file> --cached # 從版本庫中刪除文件,但不刪除文件 git reset <file> # 從暫存區恢復到工作文件 git reset -- . # 從暫存區恢復到工作文件 git reset --hard # 恢復最近一次提交過的狀態,即放棄上次提交后的所有本次修改 git ci <file> git ci . git ci -a # 將git add, git rm和git ci等操作都合并在一起做 git ci -am "some comments" git ci --amend # 修改最后一次提交記錄 git revert <$id> # 恢復某次提交的狀態,恢復動作本身也創建次提交對象 git revert HEAD # 恢復最后一次提交的狀態查看文件diff git diff <file> # 比較當前文件和暫存區文件差異 git diff git diff <$id1> <$id2> # 比較兩次提交之間的差異 git diff <branch1>..<branch2> # 在兩個分支之間比較 git diff --staged # 比較暫存區和版本庫差異 git diff --cached # 比較暫存區和版本庫差異 git diff --stat # 僅僅比較統計信息查看提交記錄 git log git log <file> # 查看該文件每次提交記錄 git log -p <file> # 查看每次詳細修改內容的diff git log -p -2 # 查看最近兩次詳細修改內容的diff git log --stat #查看提交統計信息tig Mac上可以使用tig代替diff和log,brew install tigGit 本地分支管理 查看、切換、創建和刪除分支 git br -r # 查看遠程分支 git br <new_branch> # 創建新的分支 git br -v # 查看各個分支最后提交信息 git br --merged # 查看已經被合并到當前分支的分支 git br --no-merged # 查看尚未被合并到當前分支的分支 git co <branch> # 切換到某個分支 git co -b <new_branch> # 創建新的分支,并且切換過去 git co -b <new_branch> <branch> # 基于branch創建新的new_branch git co $id # 把某次歷史提交記錄checkout出來,但無分支信息,切換到其他分支會自動刪除 git co $id -b <new_branch> # 把某次歷史提交記錄checkout出來,創建成一個分支 git br -d <branch> # 刪除某個分支 git br -D <branch> # 強制刪除某個分支 (未被合并的分支被刪除的時候需要強制)分支合并和rebasegit merge <branch> # 將branch分支合并到當前分支 git merge origin/master --no-ff # 不要Fast-Foward合并,這樣可以生成merge提交 git rebase master <branch> # 將master rebase到branch,相當于: git co <branch> && git rebase master && git co master && git merge <branch>Git補丁管理(方便在多臺機器上開發同步時用) git diff > ../sync.patch # 生成補丁 git apply ../sync.patch # 打補丁 git apply --check ../sync.patch #測試補丁能否成功Git暫存管理 git stash # 暫存 git stash list # 列所有stash git stash apply # 恢復暫存的內容 git stash drop # 刪除暫存區Git遠程分支管理 git pull # 抓取遠程倉庫所有分支更新并合并到本地 git pull --no-ff # 抓取遠程倉庫所有分支更新并合并到本地,不要快進合并 git fetch origin # 抓取遠程倉庫更新 git merge origin/master # 將遠程主分支合并到本地當前分支 git co --track origin/branch # 跟蹤某個遠程分支創建相應的本地分支 git co -b <local_branch> origin/<remote_branch> # 基于遠程分支創建本地分支,功能同上 git push # push所有分支 git push origin master # 將本地主分支推到遠程主分支 git push -u origin master # 將本地主分支推到遠程(如無遠程主分支則創建,用于初始化遠程倉庫) git push origin <local_branch> # 創建遠程分支, origin是遠程倉庫名 git push origin <local_branch>:<remote_branch> # 創建遠程分支 git push origin :<remote_branch> #先刪除本地分支(git br -d <branch>),然后再push刪除遠程分支Git遠程倉庫管理GitHub git remote -v # 查看遠程服務器地址和倉庫名稱 git remote show origin # 查看遠程服務器倉庫狀態 git remote add origin git@ github:robbin/robbin_site.git # 添加遠程倉庫地址 git remote set-url origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址(用于修改遠程倉庫地址) git remote rm <repository> # 刪除遠程倉庫創建遠程倉庫 git clone --bare robbin_site robbin_site.git # 用帶版本的項目創建純版本倉庫 scp -r my_project.git git@ git.csdn.net:~ # 將純倉庫上傳到服務器上 mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服務器創建純倉庫 git remote add origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址 git push -u origin master # 客戶端首次提交 git push -u origin develop # 首次將本地develop分支提交到遠程develop分支,并且track git remote set-head origin master # 設置遠程倉庫的HEAD指向master分支也可以命令設置跟蹤遠程庫和本地庫 git branch --set-upstream master origin/master git branch --set-upstream develop origin/develop其它: git搭建 windows搭建git:http://v.qq.com/page/v/k/s/v0115ak5aks.html windows中使用git:http://v.qq.com/page/u/8/i/u0115yt2q8i.html 在vs中使用svn:http://v.qq.com/cover/6/6hwkm72fnkmh6hi.html?vid=k0116vxw2dr svn搭建:http://v.qq.com/cover/6/6hwkm72fnkmh6hi.html?vid=k0116vxw2dr 下載: https://launchpadlibrarian.net/172450987/gcc-linaro-4.8-2014.04.tar.xz 首先 github上的項目是開源的,別人都可以看到,所以你懂的。。。。 說重點: 1.創建一個新的repository: 先在github上創建并寫好相關名字,描述。 $cd ~/project //到project目錄 $git init //初始化 $git add . //把所有文件加入到索引(不想把所有文件加入,可以用gitignore或add 具體文件) $git commit -m "add some function" //必須填寫更新日志( -m “更新日志”也可) $git remote add origin https://username@github.com:username/projectname.git //先創建github網站賬戶,增加到remote $git push -u origin master //push到github上2.更新項目(新加了文件): $cd ~/project $git add . //這樣可以自動判斷新加了哪些文件,或者手動加入文件名字 $git commit //提交到本地倉庫 $git push origin master //不是新創建的,不用再add 到remote上了3.更新項目(沒新加文件,只有刪除或者修改文件): $cd ~/project $git commit -a //記錄刪除或修改了哪些文件 $git push origin master //提交到github4.忽略一些文件,比如*.o等: $cd ~/project $vim .gitignore //把文件類型加入到.gitignore中,保存 然后就可以git add . 能自動過濾這種文件5.clone代碼到本地: $git clone git@github.com:username/project.git 假如本地已經存在了代碼,而倉庫里有更新,把更改的合并到本地的項目: $git fetch origin //獲取遠程更新 $git merge origin/master //把更新的內容合并到本地分支6.撤銷 $git reset7.刪除 $git rm * // 不是用rmgit rm –cached ooxx ,Git只刪除倉庫中的代碼,而保留本地代碼 //------------------------------常見錯誤----------------------------------- 1.$ git remote add origin git@github.com:WadeLeng/hello-world.git 錯誤提示:fatal: remote origin already exists. 解決辦法:$ git remote rm origin 然后在執行:$ git remote add origin git@github.com:WadeLeng/hello-world.git 就不會報錯誤了 2. $ git push origin master 錯誤提示:error:failed to push som refs to 解決辦法:$ git pull origin master //先把遠程服務器github上面的文件拉先來,再push 上去。? 3.error:?The?requested?URL?returned?error:?403?Forbidden?while?accessing?https://github.com/wangz/future.git/info/refs ?解決方案:
vim .git/config
修改url?=?https://github.com/wangz/example.git ?
為:?url?=?https://wangz@github.com/wangz/example.git ?再次git push,彈出框輸入密碼,即可提交
本人遇到的還有一個錯誤就是,工程傳進github 了可是里頭缺少文件, 解決方法 $git add . (注意一點 。 )表示添加所有文件,gitconfig配置文件Git有一個工具被稱為git config,它允許你獲得和設置配置變量;這些變量可以控制Git的外觀和操作的各個方面。這些變量可以被存儲在三個不同的位置: 1./etc/gitconfig 文件:包含了適用于系統所有用戶和所有庫的值。如果你傳遞參數選項’--system’ 給 git config,它將明確的讀和寫這個文件。 2.~/.gitconfig 文件 :具體到你的用戶。你可以通過傳遞--global 選項使Git 讀或寫這個特定的文件。3.位于git目錄的config文件 (也就是 .git/config) :無論你當前在用的庫是什么,特定指向該單一的庫。每個級別重寫前一個級別的值。因此,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個值。在Windows系統中,Git在$HOME目錄中查找.gitconfig文件(對大多數人來說,位于C:\Documents and Settings\$USER下)。它也會查找/etc/gitconfig,盡管它是相對于Msys 根目錄的。這可能是你在Windows中運行安裝程序時決定安裝Git的任何地方。配置相關信息:2.1 當你安裝Git后首先要做的事情是設置你的用戶名稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:$ git config --global user.name "John Doe"$ git config --global user.email johndoe@example.com2.2 你的編輯器(Your Editor)現在,你的標識已經設置,你可以配置你的缺省文本編輯器,Git在需要你輸入一些消息時會使用該文本編輯器。缺省情況下,Git使用你的系統的缺省編輯器,這通常可能是vi 或者 vim。如果你想使用一個不同的文本編輯器,例如Emacs,你可以做如下操作:$ git config --global core.editor emacs
2.3 檢查你的設置(Checking Your Settings)如果你想檢查你的設置,你可以使用 git config --list 命令來列出Git可以在該處找到的所有的設置:$ git config --list你也可以查看Git認為的一個特定的關鍵字目前的值,使用如下命令 git config {key}:$ git config user.name2.4 獲取幫助(Getting help)如果當你在使用Git時需要幫助,有三種方法可以獲得任何git命令的手冊頁(manpage)幫助信息:$ git help <verb>$ git <verb> --help$ man git-<verb>例如,你可以運行如下命令獲取對config命令的手冊頁幫助:$ git help config
Git/Github使用方法小記 今天把人間網的桌面客戶端renjian-deck正式開源了,之前對javas-cript的了解其實非常的不夠的,所以這一次的代碼寫的也是亂七八糟重用性及其低下,雖然我無數次的想把代碼重新整理一下,不過還是糊里糊涂一時沖動的在他們還是亂七八糟的時候開源了。因為之前是基于git-hub上的一個開源項目,所以硬著頭皮也放到git-hub上,雖然沒有使用的經驗,不過磨機磨機還是搞定了。 以下是具體步驟,就當是自己做個筆記了,高手請繞道吧。 1、下載安裝桌面端git。 Win-dows請至:http://?code.?google.?com/?p/?msysgit/? 安裝的時候最好還是允許在shell嵌入git的命令,相對還是比較方便的。 OSX可以在xcode中安裝com-mand line tools,或者brew install git2、git的初始設置 git config --global user.name "Your Real Name" git config --global user.email you@email.address
3、建立倉庫 在git bash里找到你的項目目錄。(或直接用shell右鍵里的git bash here) git init 這樣在你的項目目錄下就會有一個.git的隱藏目錄(類似于.svn) 。4、初始化項目 git add . 留心后面的一個 “.” , 這是添加所有文件的情況,如果愿意,你也可以添加特定的幾個文件,比如git add readme.?txt等等。 之后就可以做我們的first com-mit到倉庫里了。 git commit -m 'first commit' -m 參數以及后面的字串是添加說明。5、 注冊git-hub賬號 下面就是與git-hub有關的操作了。 首先到http://?github.?com/?%E6%B3%A8%E5%86%8C%E8%B4%A6%E5%8F%B7%E3%80%82%E6%B3%A8%E5%86%8C%E4%B9%8B%E5%90%8E%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E8%BF%99%E6%A0%B7%E7%9A%84%E7%95%8C%E9%9D%A2%E3%80%82%E9%80%89%E6%8B%A9%E7%AC%AC%E4%B8%80%E9%A1%B9%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E9%A1%B9%E7%9B%AE%E3%80%82 表單需要填寫 Pro-ject Name(項目名稱) De-scrip-tion(描述) Homepage URL(主頁URL,一般就以項目名稱命名好了)6、創建SSH密匙 這步工作應該是最麻煩的吧。回到桌面,打開git bash,輸入以下命令。1 ssh-keygen -C 'your@email.address' -t rsa 確認使用默認路徑,然后輸入兩次你要是用的密碼就行(一般直接敲幾個回車不使用密碼)。7、提交密匙
現在又要回到git-hub的頁面上,在右上方工具欄里找到Ac-count Set-tings。在這個頁面上有一個SSH Pub-lic Keys標簽,選擇Add an-other pub-lic key。Title隨便取,Key是一段東西。 找到剛才創建密匙的那個目錄下(默認是C:\Documents and Settings\你的windows用戶名.ssh,OSX是~/.ssh)找到id_rsa.pub文件,把它打開可以看到一堆文字,拷貝下來黏貼到git-hub頁面key的空白處。然后Apply,就好了。 可以使用以下命令測試連接 ssh -v git@github.com 會要求輸入你剛才設置的密碼,如果成功的話可以看到這樣的ERROR(orz,起碼證明連接是成功了)1 ERROR: Hi Arthraim! You've successfully authenticated, but GitHub does not provide shell access
8、上傳代碼 最后就是上傳你的代碼了~ bash切換到你的項目目錄下,輸入以下命令。 git remote add origin git@github.com:你的github用戶名/你的github項目名.git git push origin master hehe,現在再去http://github.com/你的github用戶名/你的github項目 就可以看到你的項目了~ Good luck 當然這是從無到有,如果你有一個git的repo,想添加到git-hub上,那就直接使用第8步的命令就可以了(不要忘記密匙的相關工作)。話說很多初學者應該會和我一樣,在初期搞不清git和git-hub的關系,git是和CVS,SVN并列的一個概念,而git-hub是和Google Code, source-forge并列的一個概念,這樣說就明白了吧。所以,git的學習的話,參見這里。 BTW:Git-hub的社區感很好,體驗很不錯,怪不得有這么多人在git-hub上樂此不疲的交流代碼。
?
?
# Git## 分布式世界### 1. 版本控制之道- 版本庫- 集中式(CVS、SVN)- 分布式(git) - 工作目錄樹- 斷面視圖- 工作拷貝- 1、初始化(init).git目錄- 2、克隆(clone) - 代碼修改與文件同步 - 跟蹤項目、目錄和文件 - 使用標簽跟蹤里程碑 - 使用分支來跟蹤并行演進 - 合并 - 鎖機制### 2. 安裝與設置- 安裝- Linux- Mac:sudo port install git-core +svn +doc- Windows- Cygwin- MSys - 設置 git config- 提 交 者:git config --global user.name "Jamsonwoo"- 郵件地址:git config --global user.email "Jamsonwoo@126.com"- 查看:git config --global --list- 顏色:git config --global color.ui "auto" (auto/always/false)(注:MSys建議用always) - GUI- Tcl/TK:git gui(備注:工作目錄樹)- gitk --all(備注:工作目錄樹)- GitX (Mac) - 內置幫助- git help <command>- git-doc### 3. Hello Git- 創建版本庫:git int - 修改代碼- 1、添加索引:git add index.html- 2、提交記錄:git commit -m "add in hello git HTML" (備注:提交留言至少應該體現出進行本次修改的原因。先用一句簡單的話來概括該提交;然后用幾句話全面解釋。)- 3、查看日志- git log <-1>(擴展:SHA-1哈希碼)- git log --pretty=oneline - 視圖狀態:git status (備注:存放代碼)- 1、工作目錄樹 - 2、索引(暫存區) - 3、版本庫 - 分支- 1、創建分支:git branch 新分支名稱 父分支名稱 git branch RB_1.0 master- 2、提交修改:git commit -a(-a:提交全部修改過的文件)- 3、切換分支:git checkout 分支名稱 git checkout RB_1.0 - 處理發布- 1、打標簽:git tag 標簽名稱 打標簽的點 git tag 1.0 RB_1.0- 2、變基命令:git rebase 分支名稱(合并到主分支) git rebase RB_1.0- 3、刪除分支:git branch -d 分支名稱 git branch -d RB_1.0- 4、創建歸檔:git archive --format=輸出格式 --prefix=包內容 需要歸檔的標簽名稱 | gzip > 壓縮結果重定向 - git archive --format=tar --prefix=mysite-1.0/ 1.0 | gzip > mysite-1.0.tar.gz - git archive --format=zip --prefix=mysite-1.0/ 1.0 > mysite-1.0.zip - 克隆遠程版本庫:git clone 遠程版本庫的位置 存放該版本庫的本地目錄 git clone git://github.com/tswicegood/mysit.git mysite-remote## Git用法### 1. 添加與提交- 添加文件到暫存區- 1、啟動交互命令提示符:git add -i- 2、直接進入補丁模式:git add -p - 提交修改- 1、跟蹤空目錄:git不單獨記錄和跟蹤目錄,解決:在空目錄里添加一個句點開頭的空文件- 2、git commit 的提交留言編輯器 -v - 如果輸入不帶-m參數的git commit命令,Git將啟動編輯器來編輯提交留言。為啟動編輯器,Git會按照一下順序查找編輯器的設置:- 1、環境變量 GIT_EDITOR 的值。- 2、Git 的設置 core.editor 的值。- 3、環境變量 VISUAL 的值。- 4、環境變量 EDITOR 的值。- 5、如果上述值均為空,Git 會嘗試啟動 vi 編輯器。 - 提交三法 - 備注 a、提交暫存后的修改(先暫存后提交) - 備注 b、提交工作目錄樹中的所有修改(把修改直接提交) - 備注 c、提交工作目錄樹中執行的修改(把修改直接提交)- 1、添加到暫存區- 1、git add 文件- 2、git commit -m "留言"- 2、提交所有修改到版本庫:git commit -m "留言" -a- 3、指定提交文件(列表):git commit -m "留言" 文件 Git別名: git commit 簡寫為:git ci git config --global alias.ci "commit" - 查看修改內容- 1、查看當前狀態:git status Changes to be committed. 待提交變更 Changed but not updated. 未更新到索引的變更- 2、查看文件改動:git diff- a、git diff 無參 工作目錄樹 VS 暫存區- b、git diff --cached 暫存區 VS 版本庫- b、git diff HEAD 工作目錄樹(暫存+未暫存) VS 版本庫 - 管理文件- 1、文件重命名與移動:git mv 原文件名稱 新文件名稱- 2、復制文件:無git cp命令,無需復制- 3、忽略文件:- a、版本級:文件加入.gitignore文件中,支持通配符*- b、本地級:.git/info/exclude### 2. 分支- 什么叫分支- 分支重命名:git branch -m 分支原名稱 新名稱 git branch -m master mymaster- 顯示本地版本庫所有本地分支名稱:git branch- 創建分支:1、試驗性更改 2、增加新功能 3、Bug修復 - 創建新分支- 創建分支:git branch 新分支名稱 git branch newBranchName- 檢出分支:git checkout 分支名稱 git checkout newBranchName- 創建并檢出:git checkout -b 新分支名稱 新分支源分支 git checkout -b newBranchName2 master - 合并分支- 合并(merge)方法- 1、直接合并:把兩條分支上的歷史軌跡合并,交匯到一起- 2、壓合合并:一條分支上若干提交條目壓合成一個提交條目,提交到另一條分支的末梢- 3、揀選合并:揀選另一條分支上的某個提交條目的改動帶到當前分支上- 直接合并- git merge 分支名稱 git checkout alternate git add about.html git commit -m "add about page" git checkout master git merge alternate- 壓合合并- git merge --squash 分支名稱 git checkout -b contact master git add contact.html git commit -m "add contact file" git commit -m "add contact file 2" -a git checkout master git merge --squash contact git status git commit -m "add contact page" -m "has primary and secondary email"- 揀選合并- git cherry-pick 提交名稱 git checkout contact git commit -m "add contact 3" -a [contact 6dbaf82]...... git checkout master git cherry-pick 6dbaf82 / git cherry-pick -n 6dbaf82 - 沖突處理- git merge git checkout -b about master 編輯about.html git add about.html git commit -m "add about.html " git branch about2 about 編輯about.html git commit -m "add about.html 1" -a git checkout about2 編輯about.html git commit -m "add about.html 2" -a git checkout about git merge about2 git mergetool git commit- 處理沖突軟件(kdiff3):git config --global merge.tool kdiff3- git mergetool - 刪除分支- git branch -d 分支名稱 (成功合并到當前分支時) git branch -d about2- git branch -D 分支名稱 (強制刪除) - 分支重命名- git branch -m 原分支名稱 新分支名稱 (不允許重名) git branch -m contact abc- git branch -M 原分支名稱 新分支名稱 (強制覆蓋) git branch -m master contact### 3. 查詢歷史記錄- 查看日志- git log- j 向下瀏覽;k 向上瀏覽;q 退出- 提交名稱、提交人、提交日期、提交留言- git log -p (顯示版本之間的代碼差異)- git log -1(數字表示提交日志條數)- git log 7b1558c (指定提交名稱縮寫[前7位]) - 指定查找范圍- git log --since/before="英文格式日期"- git log --since="5 hours" (最近5小時內)- git log --before="2012-8.20" -1 (20120820之前的最后一條)- git log 最老版本..最新版本- git log 18f822e..0bb3dfb- 注:日志結果不包括最老,包括最新- git log 18f822e..HEAD / git log 18f822e..- git log 標簽名稱- git log --pretty=format:"%h %s" 1.0..HEAD- git log --pretty=oneline 1.0..HEAD- \^:回溯一個版本- git log 18f822e^^- 注:1、windows系統下,^需要添加雙引號 git log “18f822e^^”。- 注:2、當遇到某個節點(通常是版本合并后的節點)有并列的多個父節點時,“^1”代表第一個父節點,“^2”代表第二個,以此類推。而“^”是“^1”的簡寫。- *~N:回溯N個版本- git log -1 HEAD^^^ / git log -1 HEAD^~2 / git log -1 HEAD~1^ / git log -1 HEAD~3- git log -1 HEAD~10..HEAD - 查看版本間差異- git diff 版本名稱(與當前工作目錄樹的差異)- git diff 18f822e- git diff --stat 1.0(數據統計) - 查明提交者- git blame 文件名(特定代碼塊歷史)- git blame hello.html- 注:1、格式:提交名稱 初始文件名(提交人 提交時間 行號) 代碼行- 注:2、^脫字號開頭表示版本庫中第一個遞交- git blame -L <開始>,<結束> 文件名(特定代碼行歷史)- git blame -L 12,13 hello.html- git blame -L 12,+2 hello.html- git blame -L 12,-2 hello.html- git blame -L 正則表達式 文件名(特定代碼行歷史)- git blame -L "/<\/body>/",+2 hello.html- >git blame -L "/<\/body>/",-2 "4333289e^" -- index.html - 跟蹤內容- 檢查在同一個文件內移動或復制的代碼行:git blame -M 文件名- 查看文件之間的復制:git blame -C -C 文件名- 查看顯示代碼的具體變動的歷史記錄:git log -C -C -1 -p - 撤銷修改- 增補提交:git commit -C HEAD -a --amend- --amend:增補提交- -C:復用指定提交的提交留言- -c:打開編輯器,在已有提交留言基礎上修改- 反轉提交:git revert -n 提交名稱- 參數:--no-edit- 復位:git reset 提交名稱- 提交名稱默認值:HEAD- 提交名稱可用^和~修飾符- 參數--soft:暫存所有因復位帶來的差異,但不提交它- 參數--hard:慎用,從版本庫和工作目錄樹中同時刪除提交 - 重新改寫歷史記錄- 重新排序提交:git rebase -i HEAD~3- 將多個提交壓合成一個提交:git rebase -i 0bb3dfb^- 將一個提交分解成多個提交:git rebase --continue### 4. 與遠程版本庫協作- 網絡協議- SSH:用戶名@服務器名/版本庫路徑 git@github.com/tswicegood/mysite-chp6.git- git:協議://服務器名/版本庫路徑 (使用9418端口、匿名、無須加密、只讀) git://github.com/tswicegood/mysite-chp6.git- HTTP/HTTPS:需架設WebDAV服務- 最快:git- 安全:SSH- 不受防火墻限制:HTTP(S) - 克隆遠程版本庫:git clone git://github.com/tswicegood/mysite-chp6.git - 版本庫同步- 取來(fetch):git fetch- 查看遠程分支:git branch -r- 取來合并:git pull 遠程版本庫名稱 須要拖入的遠程分支名- 遠程分支名前綴origin/表示遠程版本庫上的分支名稱,origin是默認遠程版本庫別名 - 推入改動- 推入默認版本庫origin:git push- 查看推入哪些提交:git push --dry-run- 推入指定版本庫:git push <repository> <refspec> git push origin mybranch:master - 添加新的遠程版本庫- 一次拖入:git pull git://ourcompany.com/dev-erin.git- 使用別名:git remote add 別名 路徑- 查看遠程版本庫詳細信息:git remote show <name>- 刪除別名:git remote rm### 5. 管理本地版本庫- 使用標簽標記里程碑- 標簽只讀、標簽名不能包含空格- 查看已存在標簽:git tag- 新建標簽:git tag 標簽名- git tag 標簽名 提示名稱/分支名稱 - 發布分支的處理- 發布分支通常以RB_為前綴并包含版本號,RB_1.3- git branch RB_1.0.1 1.0 - 標簽與分支的有效名稱- 不能以“/”結尾- 不能以“.”開頭- 不能使用特殊字符:空格~^:?*[控制符刪除鍵- 不能出現“..” - 記錄和跟蹤多個項目- 多個項目共享一個版本庫- 多項目多版本庫 - 使用Git子模塊跟蹤外部版本庫- 添加新子模塊- 查看該版本庫的子模塊:git submodule- 添加新子模塊:git submodule add 源版本庫 存儲路徑 git submodule add git://github.com/tswicegood/hocus.git hocus- 初始化子模塊:git submodule init hocus- 克隆含子模塊的版本庫:git submodule update 子模塊名 cd work git clone magic new-magic cd new-magic git submodule git submodule init hocus git submodule update hocus- 改變子模塊的版本- 使用子模塊時要提防的錯誤- git add 確保結尾沒有“\”- submodule update 先檢查提交- 添加新內容到本地自模塊版本庫,要檢出正確分支- 修改提交,確保改動被送回遠程版本庫### 6. 高級功能- 壓縮版本庫- git gc 整理版本庫、優化Git內部存儲歷史記錄- git gc <--aggressive> 重新計算增量存儲單元 - 到處版本庫- 創建版本快照:git archive 格式類型 指定版本- git archive --format=<tar/zip> <--prefix=父目錄> 轉換格式 git archive --format=zip --prefix=mysite-release/ HEAD > mysite-release.zip git archive --format=tar --prefix=mysite-release/ HEAD | gzip > mysite-release.tar.gz - 分支變基- git rebase --continue/--skip/--abort- git rebase --onto master contacts search - 重現隱藏的歷史:git reflog - 二分查找- git bisect start- git bisect bad- git bisect good 1.0- git bisect reset- git bisect visualize- git bisect log- git bisect replay <文件>- git bisect run
?
?
?
?
git init git add . //指的是把所有文件 添加到本地repository git commit -m "test" //這里是添加commit的message git remote add origin git://git.openwrt.org/14.07/openwrt.git git push origin master //origin指的是remote 遠端地址, master 指的是你的分支。 代碼提交一般有五個步驟: 1.查看目前代碼的修改狀態 2.查看代碼修改內容 3.暫存需要提交的文件 4.提交已暫存的文件 5.同步到服務器1. 查看目前代碼的修改狀態 提交代碼之前,首先應該檢查目前所做的修改,運行git status命令 a) 已暫存 (changes to be committed) new file //表示新建文件 modified //表示修改文件 deleted //表示刪除文件 b) 已修改 (changed but not updated) modified //表示修改文件 deleted //表示刪除文件 另外,git 給出了可能需要的操作命令,git add/rm, gitcheckout --c) 未跟蹤 (untracked files)2. 查看代碼修改的內容git diff <file> 比較某文件與最近提交節點的差異。 注意:如果該文件已暫存,那么應該使用git diff –cached<file>git diff <hashcode> <hashcode> <file> 比較某文件在提交節點a,節點b的差異。 技巧:如果省略后面一個hashcode,則默認表示與上一提交節點比較。(也可以利用^運算符3. 暫存需要提交的文件 如果是新建的文件 則git add <file> 如果是修改的文件則git add <file> 如果是刪除的文件則 git rm <file>4. 提交已暫存的文件 git commit 注意注釋填寫規范。git commit --amend 修改最近一次提交。有時候如果提交注釋書寫有誤或者漏提文件,可以使用此命令。5. 同步到服務器 同步到服務器前先需要將服務器代碼同步到本地 命令: git pull 如果執行失敗,就按照提示還原有沖突的文件,然后再次嘗試同步。 命令:git checkout -- <有沖突的文件路徑>同步到服務器 命令: git push origin <本地分支名> 如果執行失敗,一般是沒有將服務器代碼同步到本地導致的,先執行上面的git pull命令。總結
以上是生活随笔為你收集整理的git使用,Git的skil-map的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IPv6协议介绍
- 下一篇: 为什么局域网的IP普遍是192.168开