編輯:關於android開發
這篇有關git的博客,寫著寫著有些崩了。裡面有些碎碎念了。下次一定注意這個問題。
創建項目:
提交代碼:
檢查狀態:
你可以很好的控制處理 log
命令要精確顯示的內容。我喜歡 單行格式:
$ git log --pretty=oneline
你應該看到:
$ git log --pretty=oneline
1f7ec5eaa8f37c2770dae3b984c55a1531fcc9e7 Added a comment
582495ae59ca91bca156a3372a72f88f6261698b Added a default value
323e28d99a07d404c04f27eb6e415d4b8ab1d615 Using ARGV
94164160adf8faa3119b409fcfcd13d0a0eb8020 First Commit
log
命令有許多選項用來選擇顯示哪個條目。玩玩下面的選 項:
$ git log --pretty=oneline --max-count=2
$ git log --pretty=oneline --since='5 minutes ago'
$ git log --pretty=oneline --until='5 minutes ago'
$ git log --pretty=oneline --author=<your name>
$ git log --pretty=oneline --all
參閱 man git-log
了解更多細節。
這是我用來復查上周所做更改的命令。如果我只想看自己所 作的更改,那麼我將添加--author=jim
。
$ git log --all --pretty=format:'%h %cd %s (%an)' --since='7 days ago'
隨著時間的推移,我發現在工作時最喜歡下列日志格式。
$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short'
它看起來像這樣:
$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
* 1f7ec5e 2013-04-13 | Added a comment (HEAD, master) [Jim Weirich]
* 582495a 2013-04-13 | Added a default value [Jim Weirich]
* 323e28d 2013-04-13 | Using ARGV [Jim Weirich]
* 9416416 2013-04-13 | First Commit [Jim Weirich]
讓我們看一下細節:
--pretty="..."
定義輸出的格式%h
是提交 hash 的縮寫%d
是提交的裝飾(如分支頭或標簽)%ad
是創作日期%s
是注釋%an
是作者姓名--graph
使用 ASCII 圖形布局顯示提交樹--date=short
保留日期格式更好且更短
獲取舊版本:
為版本打標簽
標記先前的版本======》通過上面的方法獲取舊版本,然後再為當前版本打標簽。
去除標簽:
撤銷更改:(這裡都以hello.rb文件為例)
@處理之前確定你在master的最新提交上===》 git checkout master ;
@檢查狀態,確定更改的內容沒有緩存,更沒有提交,屬於撤銷本地更改===》 git status;
@使用checkout命令檢出更改的文件,在倉庫中的版本,以hello.rb文件為例
$ git checkout hello.rb //這句就撤銷了本地更改,下面兩句是查看 hello.rb 的內容 $ git status $ cat hello.rb
2.撤銷緩存更改
@檢查狀態,確定更改的內容已經緩存,但沒有提交,屬於撤銷緩存更改===》 git status;
@清空暫存區內容===》git reset HEAD hello.rb
@使用checkout命令檢出提交的版本(即上一次提交的內容)===》git checkout hello.rb
3.撤銷提交的更改
@使用創建一個提交來移除由不想 要的提交所引入的更改===》git reset HEAD
@上面的語句將進入編輯器,你可以編輯默認的提交信息,或直接 離開它。保存並關閉文件。會看到:
$ git revert HEAD [master f98cb24] Revert "third commit" 1 file changed, 1 insertion(+), 3 deletions(-)
@第二步就已經成功了,此時讓我們來查看提交記錄(這裡的git hist 是自己定義的命令,可以用git log 查看):
$ git hist * f98cb24 2016-04-04 | Revert "third commit" (HEAD -> master) [mecury] * da6b209 2016-04-04 | third commit [mecury] * d44641b 2016-04-04 | second commit (tag: v1) [mecury] * 46de4a5 2016-04-04 | First Commit (tag: v1-beta) [mecury]
重置分支:
但在我們移除提交前,讓我們使用一個標簽來標記最新的提 交以便能夠再次找到它。
$ git tag oops
看看上面的日志歷史,我們將知道標記為“v1”的提交是錯誤 提交之前的正確提交。讓我們重置分支到該位置。因為分支 已經標記,所以我們可以在 reset
命令中使用標簽名( 如果它沒有被標記,那麼我們只能使用哈希值)。
$ git reset --hard v1
$ git hist
$ git reset --hard v1
HEAD is now at 1f7ec5e Added a comment
$ git hist
* 1f7ec5e 2013-04-13 | Added a comment (HEAD, v1, master) [Jim Weirich]
* 582495a 2013-04-13 | Added a default value (v1-beta) [Jim Weirich]
* 323e28d 2013-04-13 | Using ARGV [Jim Weirich]
* 9416416 2013-04-13 | First Commit [Jim Weirich]
我們的 master 分支現在指到 v1 提交,並且 Oops 和 Revert Oops 提 交已經不在分支中。--hard
參數表示應當更新工作目錄以便與新的分 支頭保持一致。
但錯誤的提交發生了什麼?結果是提交仍然在倉庫中。事實上,我們仍然 能夠引用它們。記得在本實驗開始我們使用標簽“oops”標記了還原的提交。 讓我們看看所有的提交。
$ git hist --all
$ git hist --all
* a10293f 2013-04-13 | Revert "Oops, we didn't want this commit" (oops) [Jim Weirich]
* 838742c 2013-04-13 | Oops, we didn't want this commit [Jim Weirich]
* 1f7ec5e 2013-04-13 | Added a comment (HEAD, v1, master) [Jim Weirich]
* 582495a 2013-04-13 | Added a default value (v1-beta) [Jim Weirich]
* 323e28d 2013-04-13 | Using ARGV [Jim Weirich]
* 9416416 2013-04-13 | First Commit [Jim Weirich]
在這兒我們看到錯誤的提交並沒有消失。它們仍然在倉庫中。它們只是不再 列到 master 分支中。如果我們沒有標記它們,它們依然在倉庫中,但除了 使用哈希值外沒有別的方法引用它們。未引用的提交保留在倉庫中,一直到 系統運行垃圾回收軟件時。
修正提交:
給程序添加作者注釋。
# Default is World
# Author: Jim Weirich
name = ARGV.first || "World"
puts "Hello, #{name}!"
$ git add hello.rb
$ git commit -m "Add an author comment"
在你做了提交之後,你意識到任何好的作者注釋都應該包含 Email 地址。更新 hello 程序來包含 Email。
# Default is World
# Author: Jim Weirich ([email protected])
name = ARGV.first || "World"
puts "Hello, #{name}!"
我們真的不想因為 Email 而分開提交。讓我們修正先前的提交 來包含 Email 更改。
$ git add hello.rb
$ git commit --amend -m "Add an author/email comment"
$ git add hello.rb
$ git commit --amend -m "Add an author/email comment"
[master eb30103] Add an author/email comment
1 files changed, 2 insertions(+), 1 deletions(-)
$ git hist
$ git hist
* eb30103 2013-04-13 | Add an author/email comment (HEAD, master) [Jim Weirich]
* 1f7ec5e 2013-04-13 | Added a comment (v1) [Jim Weirich]
* 582495a 2013-04-13 | Added a default value (v1-beta) [Jim Weirich]
* 323e28d 2013-04-13 | Using ARGV [Jim Weirich]
* 9416416 2013-04-13 | First Commit [Jim Weirich]
我們可以看到最初的“author”提交現在消失了,而且它已經 被“author/email”提交替換。通過重置分支到某個提交並重 新提交新的更改,你可以實現相同的效果。
移動文件:
$ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: hello.rb -> lib/hello.rb 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)
通過使用 Git 來移動文件,我們通知了 Git 兩件事:
git checkedou -b greet //創建了一個名為greet的新分支
!上面語句是git branch branchname 及 git checkout branchname的簡寫(branchname:分支名)
git checkout master //切換到master主分支
git checkout branchname:切換到分支branchname
git hist --all //--all能顯示出來所有的分支
git merge master //將分支mster合並到當前分支
將分支切到master,此時更改hello.rb並且提交就會產生沖突。
原因:應為master已經和greet分支合並,但現在在master又有一個新的提交還沒有合並回greet,沖突產生。
如果此時返回greet分支並且嘗試合並master分支後,查看hello.rb,如圖
解決後:
變基失敗
查看所有的遠程鏈接信息
git remote -v
查看某個遠程連接的詳細信息
git remote show [remote-name]
為本地添加一個普通的遠程倉庫
git remote add pb git://github.com/paulboone/ticgit.git
pb為倉庫的別名,後面為倉庫的地址
為本地添加一個origin倉庫
git remote add origin [倉庫url]
重命名遠程連接
git remote renamed [old name] [new name]
刪除遠程倉庫
git remote rm [shortname]
pull 和 fetch 的區別:
1.git fetch 相當於是從遠程獲取最新版本到本地,不會自動merge
git fetch origin master
2.git pull 當於是從遠程獲取最新版本並merge到本地
1. 創建新的版本庫
在GitHub中,一個項目對應一個版本庫,創建一個新的版本庫,就是創建一個新的項目。
1.克隆版本庫:
git clone [email protected]:mecury/HelloWorld.git //mecury是注冊時的名字,HelloWorld是新創建的版本庫</br>
2.添加README.md文件並提交(這個也可以直接在GitHub中修改)
git add REAMDE.md
3.向GitHub中推送,完成版本庫的初始化
git push origin master
2.從已有的版本庫中創建
git init //在當前項目的根目錄下
git add README.md
git commit -m"README for project"
git push -u origin master
git push -f origin master
退出git的vim編輯器:
1.按 i ,進入insert編輯模式
2. 編輯完成後,按 esc 鍵
3. 輸入 :wq! ,然後回車即可刪除
android源代碼在線搜索 在沒有google的時代,當在開發中遇到問題時,程序員唯一的方式就是去讀源代碼,雖然現在可以通過搜索引擎解決大部分開發問題,但是要想理解其內
Android系統中解析XML通常使用三種方法,分別是SAX、pull和DOM
Android自定義控件之自定義組合控件(三),android控件前言: 前兩篇介紹了自定義控件的基礎原理Android自定義控件
伴隨ListView、RecyclerView、ScrollView滾動滑入滑出小圖標--第三方開源--FloatingActionButton,recyclerview