乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Git 使用的簡單匯總

       Tornador 2014-01-16

      1. 配置

       

      git config --global user.name "your name"

      git config --global user.email  mail@box.com

      git config --global color.ui true

      git config --global core.editor vi

      git config --global alias.lol "log --graph --all"    設(shè)置alias,這樣lol就是自己新的命令了。

       

      2.基本使用

      1.顯示當(dāng)前的配置信息

      git config --list

       

      2. 創(chuàng)建repo

      從別的地方獲取

      git clone git://git.kernel.org/pub/scm/git/git.git



      自己建立

      mkdir test

      cd test

      git init

       

      3. 顯示狀態(tài)

      git status

       

      4. commit

      git add file.1 file.2 先增加文件,增加到index中。這樣commit的時候才知道要commit哪些文件。

      或者

      git add -p   用來interactively選擇哪些改變需要被commit

      git commit -m "log message"

       

      或者

      git commit -a  自動檢查應(yīng)該commit什么文件。如果是新增的文件,仍然要使用git add來添加。

       

      5. 顯示以前的工作

      git log 輸出格式

      git log

      git log -p       顯示patch

      git log --stat   顯示改動的一個總結(jié)

      git log --graph  只顯示當(dāng)前branch的

      git log --graph --all    顯示所有branch的

      git log --graph --all --decorate 顯示branch的名字


      git log --pretty=oneline, short, full, fuller  輸出的log 形式不同

      git log --pretty=format:"%h - %an, %ar : %s"   按照指定的格式輸出。

      關(guān)于--pretty的其他選項和具體的format格式,參考 git log --help中PRETTY FORMAT這部分。


      git log --follow file.c

      這個功能很有意思,尤其是當(dāng)file.c被移動后。

      通常我們會移動某個文件到某個目錄下。如果這么做,git log是不能顯示目錄移動前的記錄的。

      那就加上 --follow吧。


      git log的篩選

      git log -2 -p   顯示最近兩次commit的log 和 diff

      git log --author="Author Name" 篩選特定作者的log

      git log --since="2012-2-23" --before="2012-2-24" 篩選時間段

      git log --grep="key word" 在commit 的message中查找關(guān)鍵字

      git log branch --not master 查看在branch上的,但不在master上的記錄。


      git log -S"func_name"  查找某個字符出現(xiàn),或者移出的commit。 比如可以查找一個函數(shù)是什么時候添加,或者刪除的。


      git show sha1   這個sha1是每個commit的sha1,這樣顯示某個commit的完全信息,包括diff

       

      6. 撤銷改動

      git checkout -- file.1

      撤銷了file.1的這次改動。只是撤銷了沒有staged的改動.

      中間的 -- 表明了這是一個文件 而不是一個branch的名字


      git reset --hard HEAD

      撤銷了所有沒有commit的改動,包括了stage的和沒有stage的。

      這條命令的結(jié)果一樣

      git checkout HEAD file.1

      包括了staged 和沒有staged的都會清除。


      有時候我們發(fā)現(xiàn),之前做個一個commit有問題,不想要,想要去掉。

      git revert HEAD      自動得重新做一個commit,將最后一次的commit返回回來。

      git revert HEAD^     自動得重新做一個commit,將最后第二次的commit 返回回來。

      7. 刪除一個commit

      git reset --hard HEAD~1

      刪除了最近的commit


      8. 修改最近的一個commit

      git commit --amend

       

      7.顯示所做的改動

      git diff

      顯示所有的改動。 沒有add到index中的。

       

      git diff --staged或者 git diff --cached

      顯示staged改動,也就是add的東東,也就是將要commit的東東。

       

      git diff commit1 commit2

      顯示這兩個commit之間的變動, 從commit1到commit2的變動。


      git diff commit1..commit2

      兩個點(diǎn),效果跟上面的一樣


      git diff commit1...commit2

      三個點(diǎn),表示的是發(fā)生在commit2分支,一直到commit1和commit2共同父親的變化。


      git blame -C file1.c

      顯示文件具體的改動。。。。恩,好像是用來找是誰的錯?


      git blame -Ln,m file1.c

      查看n,m兩行間的改動。


      git blame commit1~1 -Ln,m file1.c

      查看commit1版本前的改動. 追查之前的log。


      git blame commit1~1 -Ln,m -- old/file.c

      如果這個文件被重命名過,或者移動過位置,就要輸入舊的文件的名字。

      而且一定要加上 -- , 一定。

       

      8. 刪除某個文件

      git rm file-name

      從庫和當(dāng)前的working directory中刪掉這個文件

      git rm --cached file-name

      只從庫中刪除,保留當(dāng)前的本地文件。


      9. 重命名一個文件

      git mv file file-new


      10. 應(yīng)用patch

      git apply patch-file

      這樣做從patch-file中應(yīng)用這個patch。 效果和patch命令類似。

      但是好處是,git apply要么成功,要么不成功。不想patch,有可能有部分的patch打上了,但是有的沒有打上。

      git apply后,并沒有自動生成一個commit.


      git apply --check  可以用來檢測這個patch 是不是會產(chǎn)生沖突或者失敗。


      git am patch-file

      這是專門為git 設(shè)計的命令。 patch-file是通過git format-patch 生成的。

      其中包含了作者信息和簡單描述。

      git am后,會自動的生成一個commit.


      git am --resolved

      git am 過程中可能會有conflict. 如過遇到conflict, 那就需要手動修改code, git add 后

      用git am --resolved


      11. git 制作patch

      具體步驟寫在了 http://blog.csdn.net/richardysteven/article/details/6701156


      3. commit range

      在git中,我們經(jīng)常需要制定一個commit的范圍,比如git log中,可以顯示某范圍內(nèi)的改動。

      除了man gitrevisions, 在這個網(wǎng)站上也有不過的描述,尤其是對 double dot 和 triple dot

      http:///book/ch6-1.html

      http:///questions/462974/whats-the-difference-between-and-in-git-commit-ranges

      而且這種語法,在git log和git diff兩種情況下,有不同的意義.


      在git log中,

      git log ^r1 r2 表示顯示從r2到root,但是去掉r1到root中和r2到root有重復(fù)的。

      這個也可以表示為 git log r1..r2.


      git log r1...r2 表示 顯示從r1到root, r2到root,但是去掉他們共有的部分。


      我這樣理解, 前一種顯示的是樹上的一個分支。而后一種顯示了兩個分支。


      在git diff中

      git diff目的是比較兩個commit之間的區(qū)別。


      git diff A B 和 git diff A..B 是一樣的,就是顯示這兩個之間的區(qū)別。


      git diff A...B 和 git diff $(git-merge-base A B) B一樣。 就是顯示 在B這個分支上,做了什么改動。

                            有時候這個命令是,git merge-base A B


      在一個branch上,但不在另一個branch上

      git log local_copy ^kernel 

      這樣可以再merge前,看看都有哪些東西要commit.

      這個命令用來看,在local_copy branch上,但是不在kernel branch上的。





      4. Branch

      1. 顯示branch

      git branch

      git branch -v 顯示詳細(xì)點(diǎn)的信息

      git branch --merged

       

      2. 創(chuàng)建branch

      git branch testing

      或者

      git checkout -b new_brach

      這樣新建并且切換到了new_brach上

       

      還有一種創(chuàng)建branch的辦法是

      git branch branch_name  b42294309188d57bf3398ed35660170a237d8c0a

      注意,這后面這一長串的就是每個commit的sha1碼。

       

      3. 切換到某個branch

      git checkout testing

       

      4. 圖形化顯示branch信息

      gitk

      gitk --all

       

      5. merge

      先轉(zhuǎn)到要merge到的branch,如

      git checkout master

      一般都會merge到master上。

       

      然后調(diào)用

      git merge testing

      這樣就把testing branch上的改動merge過來了。

       

      6. 刪除branch

      好了,這個branch不用了,刪掉吧

      git branch -d testing


      7. 處理conflict

      在merge的過程中一般會遇到conflict.

      先用git status查看哪些文件產(chǎn)生的沖突。

      可以逐一修改文件,也可以用git mergetool 來進(jìn)行修改。

      當(dāng)所有的都修改好, 使用git commit。


      8。 查看有哪些branch merge進(jìn)來了,哪些沒有

      git branch --merged

      git branch --no-merged

      比如說我們checkout 到 master,用--no-merged 可以看到還有哪個branch的改動沒有到master上。


      5. Stash

      git stash 用來備份當(dāng)前工作區(qū)的內(nèi)容。 從最近的一次提交中讀取相關(guān)內(nèi)容,讓工作區(qū)保證和上次提交的內(nèi)容一致。

      可以多次使用git stash來保存當(dāng)前的修改。


      git list可以看到一共保存了多少次。

      linux-2.6$ git stash list
      stash@{0}: WIP on 3.0: 02f8c6a Linux 3.0
      stash@{1}: WIP on pci-fix: 79eefa4 Optimize the resource overlap check
      stash@{2}: WIP on pci-fix: 02f8c6a Linux 3.0
      stash@{3}: WIP on 3.0: 02f8c6a Linux 3.0

      git stash save "name"

      git stash

      這兩個都是保存當(dāng)前的改動, 如果有name則可以添加一個方便辨識的標(biāo)簽。


      git stash apply 用來恢復(fù)最近一次的修改。

      git stash apply stash@{1}來恢復(fù)指定的修改。


      git stash pop stash@{1} 的作用和git stash apply類似。

      git stash pop 會從stash棧中移除某個記錄,而git stash apply不會。


      git stash clear 清空棧。


      6. Tag

      1. 顯示tag

      git tag    顯示所有的tag


      匹配顯示

      $ git tag -l v3.0*
      v3.0
      v3.0-rc1
      v3.0-rc2
      v3.0-rc3
      v3.0-rc4
      v3.0-rc5
      v3.0-rc6
      v3.0-rc7


      2. 顯示某個tag的詳細(xì)信息

      git show v3.0


      3. 創(chuàng)建tag

      git tag -a v1.4 -m "my version 1.4"


      git tag -s v1.5 -m "my version 1.5"

      這個將會加上pgp的簽名


      對于一個-s的tag, 你可以

      git tag -v v1.5

      來驗證這個tag, 當(dāng)然你需要有對方的PGP公鑰。


      git tag v1.4-lw

      這個是輕量級的tag。


      git tag -a v1.2 SHA

      對某個指定的SHA打tag,默認(rèn)是HEAD


      git push origin v1.2

      git push origin --tags

      默認(rèn)情況下是不會將tag的信息送到遠(yuǎn)端的。

      第一的命令將某個指定的tag送到遠(yuǎn)端。

      第二個命令將所有的tag送到遠(yuǎn)端。


      7. Remote Repository

      https://github.com/ 這個網(wǎng)上可以提供建立一個免費(fèi)的git的repo

      remote repo是用來多個人合作的。恩。。。,比較高級。

       

      顯示remote repo的信息

      git remote

      git remote -v

      git remote show origin


      添加別的remote 庫

      git remote add localname URL

      也就是用這個localname 來代表URL


      然后就可以從remote中下載代碼

      git fetch localname


      默認(rèn)glone后local的HEAD是track在origin/master上的,

      所以如果你想要work on別的branch,需要先在本地建立一個branch

      git branch --track feature origin/feature

      這個意思是本地有個叫feature的branch,這個是track origin/feature的。


      查看remote的情況

      git remote show origin


      上傳changes,如果你有權(quán)限,你可以上傳自己的更新到remote

      git push origin master

      意思是push到 origin這個遠(yuǎn)端樹的master 分支上

      git push origin :master

      是刪除remote的分支

       

      下載別的更新?

      git pull

      下載了更新就直接merge了

       

      當(dāng)本地的git倉庫更新后,我們需要與遠(yuǎn)端server上的倉庫同步。

      一般這么做

      git fetch   將同步一下狀態(tài)

      git fetch -p 可以清空遠(yuǎn)端已經(jīng)不用的分支

      git branch -v 可以看到本地倉庫中分支的狀態(tài)。

      git branch -av 可以看到遠(yuǎn)端和本地分支的狀態(tài)

      git checkout branchname 換到你想要更新的local branch上

      git rebase origin/branchname 這樣可以將本地做的commit 取下,并重新apply到最新的地方。

       

      8. Some Tips

      1. 假如編輯到了某個版本,發(fā)現(xiàn)某個功能不起作用了,或者有bug了。但是自己知道之前的某個版本是好的。

      git bisect start

      git bisect bad      現(xiàn)在這個版本是壞的

      git bisect good good_commit   good_commit這個版本是好的

       

      接下來編譯,測試。 如果是好的

      git bisect good

      如果還是不好

      git bisect bad

      這樣git都會給你輸出某個中間的版本讓你繼續(xù)測試。

       

      找到了錯誤,用

      git bisect reset 恢復(fù)到原先的版本。

       

      2. git 命令在bash中自動補(bǔ)全

       http:///book/ch2-7.html

      將git-completion.bash 拷貝到 /etc/bash_completion.d/git

       

      3. git alias

      git config --global alias.co checkout

       

      4. 用git 打包

      git archive master | gzip  > master.tar.gz

      把master這個branch打包了。 


      5. cleanup

      git用得時間多了,會變慢。 那么可以用下面的命令優(yōu)化一下。

      git gc   - Cleanup unnecessary files and optimize the local repository

      git-repack - Pack unpacked objects in a repository


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多