git使用筆記

git使用筆記
==================================================
//建立目錄
mkdir paper-slider
cd paper-slider
//初始化 git
git init
//設置 git 用戶名 郵箱地址(通常應該跟github註冊郵箱一致)
http://gitref.org/zh/

//全局設置
git config --global user.name "yourname"
git config --global user.email "your-email-address"
//也可以給當前repo 單獨設置
git config user.name "yourname"
git config user.email "your-email-address"


git add readme.md
git commit -m 'init'
git remote add origin https://github.com/zxdong262/paper-slider.git
git push -u origin master

 

git add -A stages All

git add . stages new and modified, without deleted


git add -u stages modified and deleted, without new


//然後輸入用戶名密碼
git diff #尚未緩存的改動
$ git status -s查看你的文件在工作目錄與緩存的狀態
====================================================
tag管理(發行版本):
如果你達到一個重要的階段,並希望永遠記住那個特別的提交快照,你可以使用 git tag 給它打上標籤。 該 tag 命令基本上會給該特殊提交打上永久的書籤,從而使你在將來能夠用它與其他提交比較。
$ git tag -a v1.0 
$ git push –-tags共享標籤

刪除tag這麼用

git push origin --delete tag <tagname>


========================================================
使用 git fetch 更新你的項目,使用 git push 分享你的改動。 你可以用 git remote 管理你的遠程倉庫。
git remote add 爲你的項目添加一個新的遠端倉庫
如果你希望分享一個本地創建的倉庫,或者你想要獲取別人的倉庫中的貢獻 —— 如果你想要以任何方式與一個新倉庫溝通,最簡單的方式通常就是把它添加爲一個遠端倉庫。 執行 git remote add [alias] [url] 就可以。 此命令將 [url] 以 [alias] 的別名添加爲本地的遠端倉庫。


git pull 從遠端倉庫提取數據並嘗試合併到當前分支
git pull --rebase,這裏表示把你的本地當前分支裏的每個提交(commit)取消掉,並且把它們臨時 保存爲補丁(patch)(這些補丁放到".git/rebase"目錄中),然後把本地當前分支更新 爲最新的"origin"分支,最後把保存的這些補丁應用到本地當前分支上。
===============================
git log 過濾你的提交歷史記錄
git diff 
最後,要查看兩個提交快照的絕對改動,你可以用 git diff 命令。 這在兩個主要情況中廣爲使用 —— 查看兩個分支彼此之間的差值,和查看自發布或者某個舊歷史點之後都有啥變了。讓我們看看這倆情況
$ git diff v0.9

===========分支=================
git branch (branchname) 來創建分支, 使用 git checkout (branchname) 命令切換到該分支,在該分支的上下文環境中, 提交快照等,之後可以很容易地來回切換。
git branch -d (branchname) 刪除分支
一旦某分支有了獨立內容,你終究會希望將它合併回到你的主分支。 你可以使用 git merge 命令將任何分支合併到當前分支中去。 我們那上例中的“removals”分支爲例。假設我們創建了一個分支,移除了一些文件,並將它提交到該分支, 其實該分支是與我們的主分支(也就是“master”)獨立開來的。 要想將這些移除操作包含在主分支中,你可以將“removals”分支合並回去。

git checkout -b 創建並切換到分支

刪除遠程分支
git push origin :develop

=========================================
還原爲上一個提交的版本
git rebase -i HEAD~2

git push origin +master

將本地的狀態回退到和遠程的一樣  
git reset –hard origin/master
================================================

git clone只能clone遠程庫的master分支,無法clone所有分支,解決辦法如下:

1. 找一個乾淨目錄,假設是git_work 2. cd git_work 3. git clone http://myrepo.xxx.com/project/.git ,這樣在git_work目錄下得到一個project子目錄 4. cd project 5. git branch -a,列出所有分支名稱如下: remotes/origin/dev remotes/origin/release 6. git checkout -b dev origin/dev,作用是checkout遠程的dev分支,在本地起名爲dev分支,並切換到本地的dev分支 7. git checkout -b release origin/release,作用參見上一步解釋 8. git checkout dev,切換回dev分支,並開始開發。 ============================================= git stash保存工作現場 1.使用gitstash保存當前的工作現場,那麼就可以切換到其他分支進行工作,或者在當前分支上完成其他緊急的工作,比如修訂一個bug測試提交。 2.如果一個使用了一個git stash,切換到一個分支,且在該分支上的工作未完成也需要保存它的工作現場。再使用gitstash。那麼stash 隊列中就有了兩個工作現場。 3.可以使用git stash list。查看stash隊列。 4.如果在一個分支上想要恢復某一個工作現場怎麼辦:先用git stashlist查看stash隊列。確定要恢復哪個工作現場到當前分支。然後用git stash pop stash@{num}。num就是你要恢復的工作現場的編號。 5.如果想要清空stash隊列則使用git stash clear。 6.同時注意使用git stashpop命令是恢復stash隊列中的stash@{0}即最上層的那個工作現場。而且使用pop命令恢復的工作現場,其對應的stash在隊列中刪除。使用git stash apply stash@{num}方法除了不在stash隊列刪除外其他和git stashpop 完全一樣。 
=============================================== 撤銷操作

修改最後一次提交

有時候我們提交完了才發現漏掉了幾個文件沒有加,或者提交信息寫錯了。想要撤消剛纔的提交操作,可以使用 --amend 選項重新提交:

$ git commit --amend

此命令將使用當前的暫存區域快照提交。如果剛纔提交完沒有作任何改動,直接運行此命令的話,相當於有機會重新編輯提交說明,但將要提交的文件快照和之前的一樣。

啓動文本編輯器後,會看到上次提交時的說明,編輯它確認沒問題後保存退出,就會使用新的提交說明覆蓋剛纔失誤的提交。

如果剛纔提交時忘了暫存某些修改,可以先補上暫存操作,然後再運行 --amend 提交:

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

上面的三條命令最終只是產生一個提交,第二個提交命令修正了第一個的提交內容。

取消已經暫存的文件

接下來的兩個小節將演示如何取消暫存區域中的文件,以及如何取消工作目錄中已修改的文件。不用擔心,查看文件狀態的時候就提示了該如何撤消,所以不需要死記硬背。來看下面的例子,有兩個修改過的文件,我們想要分開提交,但不小心用 git add . 全加到了暫存區域。該如何撤消暫存其中的一個文件呢?其實,git status 的命令輸出已經告訴了我們該怎麼做:

$ git add .
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt
        modified:   benchmarks.rb

就在 “Changes to be committed” 下面,括號中有提示,可以使用 git reset HEAD <file>... 的方式取消暫存。好吧,我們來試試取消暫存 benchmarks.rb 文件:

$ git reset HEAD benchmarks.rb
Unstaged changes after reset:
M       benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

這條命令看起來有些古怪,先別管,能用就行。現在 benchmarks.rb 文件又回到了之前已修改未暫存的狀態。

取消對文件的修改

如果覺得剛纔對 benchmarks.rb 的修改完全沒有必要,該如何取消修改,回到之前的狀態(也就是修改之前的版本)呢?git status 同樣提示了具體的撤消方法,接着上面的例子,現在未暫存區域看起來像這樣:

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

在第二個括號中,我們看到了拋棄文件修改的命令(至少在 Git 1.6.1 以及更高版本中會這樣提示,如果你還在用老版本,我們強烈建議你升級,以獲取最佳的用戶體驗),讓我們試試看:

$ git checkout -- benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

可以看到,該文件已經恢復到修改前的版本。你可能已經意識到了,這條命令有些危險,所有對文件的修改都沒有了,因爲我們剛剛把之前版本的文件複製過來重寫了此文件。所以在用這條命令前,請務必確定真的不再需要保留剛纔的修改。如果只是想回退版本,同時保留剛纔的修改以便將來繼續工作,可以用下章介紹的 stashing 和分支來處理,應該會更好些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章