git使用心得

git裏有四種對象:commit、tree、blob、tag
文件的三種狀態:committed(已經提交的)、modified(已修改的)、staged(已暫存的)
git中的分支,本質上僅僅是個指向commit對象的可變指針。HEAD是一個指向你正在工作中的本地分支的指針(注:將HEAD想象爲當前分支的別名)。reset 會改變當前分支HEAD的引用值!checkout 會移動當前分支的HEAD!
git reset --hard commit-id 或者 git reset --soft commit-id都會幾個git log中的commit-id清除!
git config --list  ##查看本地配置信息
git checkout file-name   ##回退工作區的修改
git reset HEAD file-name  ##回退暫存區的修改
在Git中,用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫成HEAD~100。
git reset –hard HEAD~n   ##回退到前n個版本:
git reset --hard HEAD^   ##回退到上一個版本:
git reset HEAD  fileName  ##撤銷暫存區的修改
git reset --hard origin/remote-branch  ##撤銷本地修改,與遠程分支保持同步
git reset --hard  ##當前HEAD 重置,不會留下之前的痕跡。針對已經追蹤的文件,沒有追蹤的文件不會影響
git branch -d branch-name   ##刪除本地分支
git branch -D branch-name   ##強制刪除本地分支
git branch -r   ##列出遠程分支
git branch      ##列出本地分支
git branch -a  ##列出遠程和本地分支
git branch -v  ##查看本地所有分支的最後一次提交
git branch -vv  ##查看本地所有分支的最後一次提交和本地分支追蹤的遠程分支
git branch --merged  ##查看所有合併入當前分支的分支
git branch --no-merged  ##查看所有未合併入當前分支的分支
git branch newBranch  ##創建分支
git checkout -b newBranch   ##創建並切換分支
git checkout -b newBranch origin/remoteBranch  ##基於遠程分支切出本地分支
git branch newBranch tag  ##基於tag創建分支
git push origin HEAD:remote-branch  ##推送當前分支到遠程,名爲remote-branch
git push origin  :remote-branch  ##刪除遠程分支remote-branch
git push origin HEAD:refs/for/remote-branch  ##需要審覈
git push origin HEAD:refs/heads/remote-branch  ##直接入庫
git remote -v  ##查看遠程倉庫別名的具體地址
git diff  ##查看工作區修改和git庫的差別
git diff --stat  ##查看工作區和git庫簡單的diff結果
git diff --cached  ##查看暫存區和git庫的差別
git diff HEAD  ##查看工作區、暫存區和git庫的差別
git diff local-branch origin/remote-branch  ##比較本地分支和遠程分支的不同(均已入庫)
git revert 撤銷某次提交,此次提交之前和之後的commit和history都會保留,並且把這次撤銷作爲一次最新的提交。git revert是提交一個新的版本,將需要revert的版本的內容再反向修改回去,版本會遞增,不會影響之前提交的內容。
git clean -df  ##刪除文件和目錄
git clean -dxf  ##清除工作區所有沒有add的文件
git clean -h  ##顯示要刪除的文件和目錄
git commit --amend -m "message"  ##追加到上一個提交,commit對象不變
git commit -am "message"  ##git add和git commit -m的組合,前提是被改動文件已經是tracked
git stash;do some work;git stash pop
git branch --set-upstream local-branch origin/remote-branch  ##手動指定local-branch追蹤origin/remote-branch
git rev-parse:
git rev-parse --git-dir   ##顯示Git版本庫的位置
git rev-parse --show-cdup    ##顯示當前工作區目錄的深度(相對於.git的目錄)
git rev-parse --parseopt   ##解析命令行參數
git rev-parse --symbolic --branches  ##顯示所有分支(本地切出的)
git rev-parse --symbolic --tags  ##顯示里程碑
git rev-parse --symbolic --glob=refs/*  ##顯示定義的所有引用。其中refs/remotes/目錄下的引用稱爲遠程分支(或遠程引用)。refs/heads/目錄下的引用稱爲本地分支。
git rev-parse HEAD  ##顯示HEAD對應的SHA1哈希值
git rev-parse A^{tree} A:  ##顯示里程碑A對應的目錄樹
git config user.name/git config user.email   ##查看用戶名和郵箱地址
用戶名和郵箱地址是本地git客戶端的一個變量,不隨git庫而改變。每次commit都會用用戶名和郵箱紀錄。github的contributions統計就是按郵箱來統計的。
git config --global user.name "username"/git config --global user.email "email"   ##修改用戶名和郵箱地址
git config --global core.editor [編輯器名稱] ##設置編輯器,例如:git config -global core.editor vim

git config push.default simple
======================================================================
git pull 和 git fetch:
git fetch origin remote-branch(遠程分支名)  ##單獨拉某個遠程分支,並不會在本地創建分支
git fetch:從遠程獲取最新版本到本地不會自動合併。git pull:從遠程獲取最新版本並merge到本地。
git pull使用語法:
git pull [options] [<repository> [<refspec>…]]
將遠程存儲庫中的更改合併到當前分支中。在默認模式下,git pull是git fetch後跟git merge FETCH_HEAD的縮寫。更準確地說,git pull使用給定的參數運行git fetch,並調用git merge將檢索到的分支頭合併到當前分支中。 使用--rebase,它運行git rebase而不是git merge。
以下是一些示例:
$ git pull <遠程主機名> <遠程分支名>:<本地分支名>
比如,要取回origin主機的next分支,與本地的master分支合併,需要寫成下面這樣:
$ git pull origin next:master
如果遠程分支(next)要與當前分支合併,則冒號後面的部分可以省略。上面命令可以簡寫爲:
$ git pull origin next
上面命令表示,取回origin/next分支,再與當前分支合併。實質上,這等同於先做git fetch,再執行git merge。即: git fetch origin;git merge origin/next
======================================================================
git修改遠程倉庫地址的方法有三種:
1.修改命令:git remote origin set-url [url]
2.先刪後加git remote rm origin;git remote add origin [url]
3.直接修改config文件
git remote  ##不帶選項,列出所有遠程主機
git remote -v  | --verbose   ##-v選項,可以參看遠程主機的網址
git remote show <origin>  ##加上主機名(origin),可以查看該主機的詳細信息
git remote add  <origin >  ##添加遠程主機
git remote add <origin > <網址>  ##添加遠程倉
=====================================================================
建空分支方法:
git symbolic-ref HEAD refs/heads/master;rm .git/index;git clean -fdx
git add .;git commit -m "Initial commit"
git push origin HEAD:master
=====================================================================
從Git 版本庫的初始化,通常有兩種方式:
1)git clone:這是一種較爲簡單的初始化方式,當你已經有一個遠程的Git版本庫,只需要在本地克隆一份
例如:git  clone  git://github.com/someone/some_project.git   some_project 
上面的命令就是將'git://github.com/someone/some_project.git'這個URL地址的遠程版本庫,完全克隆到本地some_project目錄下
2)git init 和 git remote:這種方式稍微複雜一些,當你本地創建了一個工作目錄,你可以進入這個目錄,使用'git init'命令進行初始化;Git以後就會對該目錄下的文件進行版本控制,這時候如果你需要將它放到遠程服務器上,可以在遠程服務器上創建一個目錄,並把可訪問的URL記錄下來,此時你就可以利用'git remote add'命令來增加一個遠程服務器端,
例如:git  remote  add  origin  git://github.com/someone/another_project.git
上面的命令就會增加URL地址爲'git: //github.com/someone/another_project.git',名稱爲origin的遠程服務器,以後提交代碼的時候只需要使用origin別名即可。



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