Git使用筆記
聲明:本博客歡迎轉發,但請保留原作者信息!新浪微博:@孔令賢HW;博客地址:http://blog.csdn.net/lynn_kong內容系本人學習、研究和總結,如有雷同,實屬榮幸!
git config --list 查看系統變數的配置export https_proxy="http://XXXXXX:XXXXXX@XXXXXX:8080/" 配置代理密碼中的特殊字元轉義:ampersand & (%26)at @ (%40)space (%20)double-quote " (%22)single-quote " (%27)colon : (%3A)git clone git://github.com/schacon/grit.git mygrit 後面可以自定義要新建的項目目錄名稱git status 查看哪些文件當前處於什麼狀態git add <file> 將文件添加到暫存區刪除文件:1、手動刪除2、git rm <filename> (如果要刪除之前修改過且已暫存的文件,要加-f)3、提交從暫存中移除,但不刪除文件:git rm --cached readme.txt取消暫存:git reset HEAD readme.txt放棄未暫存文件所做的修改:git checkout -- readme.txt文件重命名:git mv <file_from> <file_to> ,相當於:$ mv README.txt README$ git rm README.txt$ git add README
git diff 查看尚未暫存的文件更新了哪些部分git diff --cached 查看已經暫存起來的文件和上次提交之間的差異忽略文件$ cat .gitignore*.[oa]!lib.atemp/如果文件已經暫存,不會立即使用gitignore的新規則,此時先用git rm --cached filename也可使用全局的.gitignore文件來對所有的代碼庫生效,比如新建文件~/.gitignore_global,然後執行:git config --global core.excludesfile ~/.gitignore_global
提交:git commitgit commit -m "commit message" 提交git commit -a -m "commit message" 跳過暫存,直接提交git commit --amend 重新提交,剛才提交完沒有作任何改動,可以重新編輯提交說明,也可以git add <file>, git commit --amend 增加要提交的文件,只會產生一次提交記錄日誌查看:git log -p展開顯示提交的內容差異;-2顯示最近兩條;--stat,僅顯示簡要的增改行數統計;git log --pretty=oneline 每個提交放在一行顯示git log --no-merges 不顯示merge的記錄git log --since=2.weeks 查看兩周內提交記錄,或類似於--since="2008-10-01" --before="2008-11-01"--grep 搜索提交中的關鍵字--author --committer圖形化工具:gitk標籤:git tag 列出標籤為先前的提交加標籤:1、git log --pretty=oneline2、git tag -a v1.2 9fceb02推送標籤到遠端倉庫:git push origin v1.2一次性推送所有標籤:git push origin --tagsgit remote -v 查看遠程倉庫和克隆地址git remote add [shortname] [url] 添加一個遠程倉庫git remote show [remote-name] 顯示遠端倉庫的詳細信息git remote rename old_name new_name 修改遠端倉庫在本地的簡稱git remote rm [remote-name] 移除遠端倉庫git fetch [repo] [branch] 抓取遠程倉庫的更新,但不合併(克隆操作會自動使用默認的 master 和 origin 名字)git fetch origin branch1 設定當前分支的 FETCH_HEAD" 為遠程伺服器的branch1分支,這個操作是git pull origin branch1的第一步git fetch origin branch1:branch2 首先執行上面的fetch操作使用遠程branch1分支在本地創建branch2(但不會切換到該分支), 如果本地不存在branch2分支, 則會自動創建一個新的branch2分支, 如果本地存在branch2分支, 並且是`fast forward", 則自動合併兩個分支, 否則, 會阻止以上操作git pull [repo] [branch] 將遠端分支自動合併到本地倉庫中當前分支git push [remote-name] [branch-name] 將本地倉庫中的數據推送到遠程倉庫,一個示例(將本地分支提交到遠程倉庫的另一個分支):git push origin localbranch:remotebranch
分支:git checkout -b [分支名] [遠程名]/[分支名] 創建分支(-d 刪除分支,-D 強制刪除)
git checkout <branch_name> 切換到分支(-b 新建並切換)刪除遠程伺服器上的分支:git push origin :<remote_branch>git merge <new_branch> 將新分支的內容合併到當前分支,如果遇到衝突,可以使用git status查看衝突的文件,手工解決後,git add,比如:- <<<<<<<HEAD:index.html
- <divid="footer">contact:email.support@github.com</div>
- =======
- <divid="footer">
- pleasecontactusatsupport@github.com
- </div>
- >>>>>>>iss53:index.html
git merge --no-ff myfeature --no-ff標記會使合併永遠創建一個新的commit對象,在新的分支中保留myfeature分支的merge記錄。
或者使用rebase(衍合): git checkout dev git rebase master生成dev分支的patch,在master分支打一遍,使dev成為master分支的直接下游(會修改dev的提交歷史),這樣,在maste分支執行git merge dev就完成了分支的合併;git rebase --onto master server client 取出 client 分支,找出 client 分支和 server 分支的共同祖先之後的變化,然後把它們在 master 上重演一遍(暫不合併server分支),然後在進入master分支進行merge操作。git rebase master server 隨後衍合server分支使用衍合需要注意:旦分支中的提交對象發布到公共倉庫,就千萬不要對該分支進行衍合操作。如果把衍合當成一種在推送之前清理提交歷史的手段,而且僅僅衍合那些尚未公開的提交對象,就沒問題。
git branch --merged,查看哪些分支已合併到當前分支git branch --no-merged,查看那些分支尚未合併到當前分支,此時也可以強制刪除分支:git branch -D <branch_name>
假如你想要丟棄你所有的本地改動與提交,可以到伺服器上獲取最新的版本並將你本地主分支指向到它:git fetch origingit reset --hard origin/master
git format-patch 為每個提交生成一個 .patch 後綴的 mbox 文件
應用補丁:
1、對於git diff命令生成的補丁文件,使用git apply,是事務性操作,比patch命令嚴謹很多,可以先用git apply --check查看補丁是否能夠乾淨順利地應用到當前分支;
2、對於format-patch生成的補丁,使用git am,自動創建提交對象,如果出現衝突:
- $(fixthefile)
- $gitaddfile
- $gitam--resolved
推薦閱讀:
※《水滸》筆記
※習拳筆記心得
※《南康筆記》之三 南康地名考
※風水筆記(二十)
TAG:筆記 |