1.顯示當前的配置信息
復制代碼代碼如下:
git config --list
2. 創建repo
從別的地方獲取
復制代碼代碼如下:
git clone git://git.kernel.org/pub/scm/git/git.git
自己建立
復制代碼代碼如下:
mkdir test
cd test
git init
3. 顯示狀態
復制代碼代碼如下: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 自動檢查應該commit什麼文件。如果是新增的文件,仍然要使用git add來添加。
5. 顯示以前的工作
復制代碼代碼如下:git log 輸出格式
復制代碼代碼如下:git log
復制代碼代碼如下:git log -p 顯示patch
復制代碼代碼如下:git log --stat 顯示改動的一個總結
復制代碼代碼如下:git log --graph 只顯示當前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" 按照指定的格式輸出。
關於--pretty的其他選項和具體的format格式,參考 git log --help中PRETTY FORMAT這部分。
復制代碼代碼如下:
git log --follow file.c
這個功能很有意思,尤其是當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中查找關鍵字
git log branch --not master 查看在branch上的,但不在master上的記錄。
git log -S"func_name" 查找某個字符出現,或者移出的commit。 比如可以查找一個函數是什麼時候添加,或者刪除的。
git show sha1 這個sha1是每個commit的sha1,這樣顯示某個commit的完全信息,包括diff
6. 撤銷改動
復制代碼代碼如下:
git checkout -- file.1
撤銷了file.1的這次改動。只是撤銷了沒有staged的改動.
中間的 -- 表明了這是一個文件 而不是一個branch的名字
復制代碼代碼如下:
git reset --hard HEAD
撤銷了所有沒有commit的改動,包括了stage的和沒有stage的。
這條命令的結果一樣
git checkout HEAD file.1
包括了staged 和沒有staged的都會清除。
有時候我們發現,之前做個一個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
兩個點,效果跟上面的一樣
復制代碼代碼如下:
git diff commit1...commit2
三個點,表示的是發生在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
從庫和當前的working directory中刪掉這個文件
復制代碼代碼如下:
git rm --cached file-name
只從庫中刪除,保留當前的本地文件。
9. 重命名一個文件
復制代碼代碼如下:
git mv file file-new
10. 應用patch
復制代碼代碼如下:
git apply patch-file
這樣做從patch-file中應用這個patch。 效果和patch命令類似。
但是好處是,git apply要麼成功,要麼不成功。不想patch,有可能有部分的patch打上了,但是有的沒有打上。
git apply後,並沒有自動生成一個commit.
git apply --check 可以用來檢測這個patch 是不是會產生沖突或者失敗。
復制代碼代碼如下:
git am patch-file
這是專門為git 設計的命令。 patch-file是通過git format-patch 生成的。
其中包含了作者信息和簡單描述。
git am後,會自動的生成一個commit.
復制代碼代碼如下:
git am --resolved
git am 過程中可能會有conflict. 如過遇到conflict, 那就需要手動修改code, git add 後
用git am --resolved
11 刪除一些沒有git add的文件;
復制代碼代碼如下:
git clean
參數
-n 顯示將要刪除的文件和目錄
-f 刪除文件
-df 刪除文件和目錄
復制代碼代碼如下:
git clean -df alps/
git remote
git是一個分布式代碼管理工具,所以可以支持多個倉庫,在git裡,服務器上的倉庫在本地稱之為remote。
直接clone一個倉庫:
復制代碼代碼如下:
$: git clone [email protected]:projects/search.git
另外一種clone方式:
復制代碼代碼如下:
# 創建目錄初始化本地倉庫
$: mkdir search && cd search
$: git init
# 添加遠程倉庫路徑
$: git remote add github [email protected]:yyfrankyy/search.git
# 實際上,pull 就是 fetch + merge
$: git pull github --all --tags
把工作目錄遷移到github上面:
復制代碼代碼如下:
$: git remote add github [email protected]:yyfrankyy/search.git
$: git push github --all --tags
顯示所有的遠程倉庫
復制代碼代碼如下:
$: git remote -v
origin [email protected]:projects/search.git (fetch)
origin [email protected]:projects/search.git (push)
github [email protected]:yyfrankyy/search.git (fetch)
github [email protected]:yyfrankyy/search.git (push)
重命名遠程倉庫
復制代碼代碼如下:
$: git remote rename github gh
$: git remote
origin
gh
刪除遠程倉庫
復制代碼代碼如下:
$: git remote rm github
$: git remote
origin
從遠程倉庫抓取數據,更新本地倉庫:
復制代碼代碼如下:
$: git fetch origin
remote: Counting objects: 58, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 44 (delta 24), reused 1 (delta 0)
Unpacking objects: 100% (44/44), done.
From git://search.ued.taobao.net:projects/search.git
* [new branch] product -> origin/product
查看遠程倉庫信息,可用於跟蹤別人的push:
復制代碼代碼如下:
$: git remote show origin
* remote origin
Fetch URL: [email protected]:projects/search.git
Push URL: [email protected]:projects/search.git
HEAD branch: master
Remote branches:
master tracked
p4popt tracked
prepub tracked
product tracked
Local branches configured for 'git pull':
master merges with remote master
p4popt merges with remote p4popt
prepub merges with remote prepub
product merges with remote product
Local refs configured for 'git push':
master pushes to master (up to date)
p4popt pushes to p4popt (up to date)
prepub pushes to prepub (up to date)
product pushes to product (up to date)