git學習(這個我沒有整理,是我不斷在學習的過程當中,本身總結的,對象是我,不過有問題的,咱們能夠相互交流)

每次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 --global user.emlai  'efeff@.com‘
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-keygen -t rsa -c  "haib.wang@hotmail.com"
此時會生成.ssh文件,而後找到.pub文件,拷貝里面的ssh key 。
2.到github主頁上,添加 SSH Key
ssh -T  git@github.com
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
 
 
 
  • 爲版本庫添加名爲origin的遠程版本庫。html

    $ git remote add origin git@github.com:gotgithub/helloworld.git
    
  • 執行推送命令,完成GitHub版本庫的初始化。注意命令行中的-u參數,在推送成功後自動創建本地分支與遠程版本庫分支的追蹤。python

    $ git push -u 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的功能。
clip_image002[6]

 
衍合步驟:
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權威指南
相關文章
相關標籤/搜索