每次git提交,都會有一個parent指針,指向上一次的commitcss
,
若是合併,master就和hotfix河道一塊兒,就直接刪除hotfix就OK
此時,雖然操做同樣,大底層實現不同,要xinchuangjian一個C6分支,master到C6分支。
git commit --amend
在屢次修改以後,就用該命令,amend很重要,不須要再創建另一個鏈接,在剛纔提交的修改信息上就OK
github:
http://blog.sina.com.cn/s/blog_67a3453d0101j8qr.html
git --global user.name 'wang'
git commit --amend --reset-author
gitconfig配置文件
git tag -a v1.0 -m 'myversion' 添加版本標籤
git show 顯示版本信息
git log 日誌
git checkout -b 'affs' 新建並切換到當前分支
git merge 合併分支
git branch 若是不加參數則說明顯示全部分支
git init 初始化項目倉庫
遠程倉庫,如今要建一個網頁版本,
gerrit看需不須要註冊
git clone www.
自動命名爲origin
一次Git 克隆會創建你本身的本地分支master 和遠程分支origin/master,
它們都指向origin/master 分支的最後一次提交。
git fetch 同步服務器上的數據
git push (遠程倉庫名) (分
支名):
$ git push origin new_branch(要推的分支)
若是此時另一我的用git fetch 了
他還沒法直接開發,要用:
git checkout -b serverfix origin/new_branch
即在遠程分直接出上鍵一個分支
注意在刪除文件或添加文件時,有時須要執行兩次執行add命令,才能保存已存。
無論刪除仍是添加,在你執行commit後都會顯示出來。
好比: 2 files changed ,1 files added ,deleted phont.py
STEP:
1.建立SSH Key
此時會生成.ssh文件,而後找到.pub文件,拷貝里面的ssh key 。
2.到github主頁上,添加 SSH Key
3.將本地倉庫代碼傳到github上
先配置
git config --global user.name "hbnn"
git config --global --reset-author
git remote add origin git@github.com:hbnn/My_paper.git
git clone git@github.com:hbnn/Python_PYQT.git
提交、上傳
git push origin v5(版本信息)
標準的提交版本信息:
一、建立里程碑
git tag -m "Release v1.0" v1.0
git push origin refs/tags/v1.0
git push origin master
refs/heads/ 存放的是本地分支的哈希值;android
refs/remotes/ 存放的是遠程分支的哈希值;git
refs/tags/ 存放的是tags的哈希值;github
Git 自動維護幾個symrefs ,在任什麼時候候均可以標識某次提交。web
HEAD服務器
標識當前分支的最後一次提交,當你變換分支,HEAD也換成新分支的最後一次提交。 ORIG_HEADapp
某些操做,如執行merge ,reset時,ORIG_HEAD 記住了變動時的版本,你能夠用ORIG_HEAD去恢復到上一次版本。 FETCH_HEADssh
MERGE_HEAD
Git rebase
通常在將服務器最新內容合併到本地時使用,例如:在版本C時從服務器上獲取內容到本地,修改了本地內容,此時想把本地修改的內容提交到服務器上;但發現服務器上的版本已經變爲G了,此時就須要先執行Git rebase,將服務器上的最新版本合併到本地。例如:
用下面兩幅圖解釋會比較清楚一些,rebase命令執行後,其實是將分支點從C移到了G,這樣分支也就具備了從C到G的功能。
衍合步驟:
git co experiment
git rebase master
git學習記錄:
切換到不一樣目錄
刪除遠程分支:git push origin :branch_name
注意origin與冒號之間必定要有空格。
git checkout -- benchmarks.rb 取消對該文件的修改。
移除遠程倉庫也能夠用:
git remote rm paul
$ git remote
origin
文件的3個狀態(很重要)
已提交;已修改;暫存;
已提交就是commit以後的文件
已修改就是你進行修改以後的(modify)
暫存文件就是修改後放入暫存區域(修改後執行,git add)提示,changed to be commited
若是添加新文件,編輯後還不是跟蹤文件(提示untracked files)
給git commit 加上-a 選項,Git 就
會自動把全部已經跟蹤過的文件暫存起來一併提交,從而跳過git add 步驟.不過要注意,這裏只是全部已經跟蹤過得文件,若是是未跟蹤的,好比新添加的文件,就須要先執行git add。
刪除文件git rm
。若是刪除以前修改過而且已經放到暫存區
域的話,則必需要用強制刪除選項-f(譯註:即force 的首字母),以防誤刪除文件後丟失
修改的內容。
git reset HEAD benchmarks.rb取消已經修改並暫存的文件。
git checkout -- benchmarks.rb 取消對文件的修改
git mergetool 可視化圖形工具,用於引導你解決衝突。
注意與遠程的交互:
假如你同步了服務器上的數據
此時origin/master與master指向同一個版本,當你在本地修改master文件時,master指針向前移,可是origin/master並無移動,而此時服務器上的數據,因爲別人的推送,又有了新的更新,你執行 git fetch origin 就會出現以下圖所示:
git merge origin/master 合併origin/master 和master
而後,執行git push origin master, origin/master和master就合併了。
git push origin featureB:featureBee(服務器上另外一我的建的分支),將本身的分支推到另一我的建的分支)
git checkout -b serverfix origin/serverfix 該命令是在遠程分支的基礎上新建的一個分支,內容和遠程分支內容是同步的。
git 學到127頁。
repo
repo是用來管理Android項目的,是用python寫的腳本。簡化了對多個git版本庫的管理,是git的封裝。
repo init 是克隆Android的一個清單庫,是經過XML技術創建的版本庫清單。
清單庫的manifest.xml文件有160多種版本庫的克隆方式。而後reposync 進行同步。
repo init:
repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0
-u 該參數指定清單庫的git服務器地址。
-b 檢出清單庫德爾特定分支
-m 當有多個清單文件時,能夠指定清單庫中的某個清單文件時有效的清單文件,默認的爲default.xml。他是在.repo/manifest中,.repo/manifest.xml只是一個符號連接,它實際上也是指向上個.xml文件。
在manifest.xml文件中:
<?xml version="1.0" encoding="UTF-8"?>
2 <manifest>
3 <remote fetch="ssh://gerrit.lud.stericsson.com:29418/" name="m74x0" review ="http://gerrit.lud.stericsson.com/gerrit"/>
4
5 <default remote="m74x0" revision="ste-dev-br1"/>
remote定義的是遠程版本庫,review是定義了代碼審覈服務器,git通常是與gerrit合用。這裏就是gerrit服務器。
default是設置默認的遠程版本庫和默認的分支revision。
<project groups="swpf_app,host_if,sipc_oem,wifi_extensions" name="android/ platform/vendor/st-ericsson/hardware/mpl" path="modem/datacom/ip/cnh1608154_ mpl" revision="fac095796825288882670d7f0a01ea7f5a83b73f"/>
一共有不少的project,語法都相同。
git push m74x0 HEAD:refs/for/ste-dev-br1
ste-dev-br1 是在.repo/repo/.git/remotes中
repo sync 同步全部的版本庫,第一次執行就是克隆,再次執行就是更新。
固然能夠指定特定的項目(project)
repo start實際是對git checkout -b命令的封裝。
repo checkout 至關於git checkout
repo upload 至關於git push
repo prune 至關於 git branch -d
參考資料:
【1】git手冊
【2】 Git權威指南