Git 的命令操作
1. 配置
Git config --global user.name "your name"
git config --global user.email [email protected]
git config --global color.ui true
git config --global core.editor vi
git config --global alias.lol "log --graph --all" 設定alias,這樣lol就是自己新的命令了。
2.基本使用
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 製作patch
具體步驟寫在了 http://blog.csdn.NET/richardysteven/article/details/6701156
3. commit range
在git中,我們經常需要制定一個commit的範圍,比如git log中,可以顯示某範圍內的改動。
除了man gitrevisions, 在這個網站上也有不過的描述,尤其是對 double dot 和 triple dot
而且這種語法,在git log和git diff兩種情況下,有不同的意義.
在git log中,
git log ^r1 r2 表示顯示從r2到root,但是去掉r1到root中和r2到root有重複的。
這個也可以表示為 git log r1..r2.
git log r1...r2 表示 顯示從r1到root, r2到root,但是去掉他們共有的部分。
我這樣理解, 前一種顯示的是樹上的一個分支。而後一種顯示了兩個分支。
在git diff中
git diff目的是比較兩個commit之間的區別。
git diff A B 和 git diff A..B 是一樣的,就是顯示這兩個之間的區別。
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 顯示詳細點的資訊
git branch --merged
2. 建立branch
git branch testing
或者
git checkout -b new_brach
這樣新建並且切換到了new_brach上
還有一種建立branch的辦法是
git branch branch_name b42294309188d57bf3398ed35660170a237d8c0a
注意,這後面這一長串的就是每個commit的sha1碼。
3. 切換到某個branch
git checkout testing
4. 圖形化顯示branch資訊
gitk
gitk --all
5. merge
先轉到要merge到的branch,如
git checkout master
一般都會merge到master上。
然後呼叫
git merge testing
這樣就把testing branch上的改動merge過來了。
6. 刪除branch
好了,這個branch不用了,刪掉吧
git branch -d testing
7. 處理conflict
在merge的過程中一般會遇到conflict.
先用git status檢視哪些檔案產生的衝突。
可以逐一修改檔案,也可以用git mergetool 來進行修改。
當所有的都修改好, 使用git commit。
8。 檢視有哪些branch merge進來了,哪些沒有
git branch --merged
git branch --no-merged
比如說我們checkout 到 master,用--no-merged 可以看到還有哪個branch的改動沒有到master上。
5. Stash
git stash 用來備份當前工作區的內容。 從最近的一次提交中讀取相關內容,讓工作區保證和上次提交的內容一致。
可以多次使用git stash來儲存當前的修改。
git list可以看到一共儲存了多少次。
Linux-2.6$ git stash list
[email protected]{0}: WIP on 3.0: 02f8c6a Linux 3.0
[email protected]{1}: WIP on pci-fix: 79eefa4 Optimize the resource overlap check
[email protected]{2}: WIP on pci-fix: 02f8c6a Linux 3.0
[email protected]{3}: WIP on 3.0: 02f8c6a Linux 3.0
git stash save "name"
git stash
這兩個都是儲存當前的改動, 如果有name則可以新增一個方便辨識的標籤。
git stash apply 用來恢復最近一次的修改。
git stash apply [email protected]{1}來恢復指定的修改。
git stash pop [email protected]{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的詳細資訊
git show v3.0
3. 建立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, 當然你需要有對方的PGP公鑰。
git tag v1.4-lw
這個是輕量級的tag。
git tag -a v1.2 SHA
對某個指定的SHA打tag,預設是HEAD
git push origin v1.2
git push origin --tags
預設情況下是不會將tag的資訊送到遠端的。
第一的命令將某個指定的tag送到遠端。
第二個命令將所有的tag送到遠端。
7. Remote Repository
https://github.com/ 這個網上可以提供建立一個免費的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
預設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,如果你有許可權,你可以上傳自己的更新到remote
git push origin master
意思是push到 origin這個遠端樹的master 分支上
git push origin :master
是刪除remote的分支
下載別的更新?
git pull
下載了更新就直接merge了
當本地的git倉庫更新後,我們需要與遠端server上的倉庫同步。
一般這麼做
git fetch 將同步一下狀態
git fetch -p 可以清空遠端已經不用的分支
git branch -v 可以看到本地倉庫中分支的狀態。
git branch -av 可以看到遠端和本地分支的狀態
git checkout branchname 換到你想要更新的local branch上
git rebase origin/branchname 這樣可以將本地做的commit 取下,並重新apply到最新的地方。
8. Some Tips
1. 假如編輯到了某個版本,發現某個功能不起作用了,或者有bug了。但是自己知道之前的某個版本是好的。
git bisect start
git bisect bad 現在這個版本是壞的
git bisect good good_commit good_commit這個版本是好的
接下來編譯,測試。 如果是好的
git bisect good
如果還是不好
git bisect bad
這樣git都會給你輸出某個中間的版本讓你繼續測試。
找到了錯誤,用
git bisect reset 恢復到原先的版本。
2. git 命令在bash中自動補全
http://progit.org/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用得時間多了,會變慢。 那麼可以用下面的命令優化一下。
git gc - Cleanup unnecessary files and optimize the local repository
git-repack - Pack unpacked objects in a repository
相關推薦
使用git-命令操作
1、開啟git hash命令視窗; 2、使用git checkout 'branchName' 進入主分支下(xxx為分支名稱,如develop); 3、使用git pull命令從主分支拉最新的程式碼; 出現如下顯示,表示pull完成 4、pull完成
git命令操作
git status 查詢狀態git push 提交git clone +地址開啟vue專案:npm install 安裝依賴包cnpm install 安裝依賴包進入專案根目錄 npm run dev(跑起來~)>Listening at http://lo
Git命令操作記錄
Git命令列使用中做個筆記,以免忘記。 Git從master拉取完整程式碼 git clone 專案地址 git從其他遠端分支拉取完整程式碼,以release為例 git clone -b release 專案地址 進入專案,檢視所有本地 / 遠端分支 cd 專案
Git命令操作(一)
1.建立內容 下面建立一些檔案,它們會被放到版本控制之中 #Switch to homecd ~/# Create a directorymkdir ~/repo01# Switch into itcd repo01# Create a new directorymkdir datafiles# Cre
git --git命令操作
使用git 命令列操作。這樣能更加深層的理解git的原理。 有關git的操作詳細命令可以使用git help 使用git管理專案,第一件事就是建立倉庫。 git命令是: git init開啟git命令列工具。cd 到你的專案根目錄下; 然後敲入git init這樣git會
隨筆 新手的git命令操作
Git常用操作命令: 1) 遠端倉庫相關命令 檢出倉庫:$ git clone git://github.com/jquery/jquery.git 檢視遠端倉庫:$ git remote -v 新增遠端倉庫:$ git remote add [name] [ur
Git&GitHub學習筆記之(二)Git命令操作
在上篇文章中,我們就說過Git與GitHub不是一回事。GitHub是基於Git的,Git是基礎。所以再學習更多的GitHub知識之前,就得先了解Git。 一、什麼是Git Git 是一款免費、開源的分散式版本控制系統,他是著名的 Linux 發明者 L
【git】git命令操作
常用命令:git status 檢視狀態,在哪個分支上,有什麼需要提交的git log 檢視日誌git checkout master/dev 切換分支git checkout dev 切換到自己的分支git add . 新增新修改的git commit 提交git chec
git命令行基本操作
撤銷 合並 冒號 文件的 初始化 徹底 message rdquo only --------------------------------------------------------------------------------------------------
git 常用操作命令
進行 歷史 指定 demo 新的 地址 克隆 保存 txt文件 記錄下工作中,常用的Git命令操作,一個項目經常是多人協作開發,使用好git是開發人員必備的技能,下面記錄下一些基本的git操作,後續會記錄git解決沖突,合並分支,回滾,tag操作等。 克隆項目 - git
git常用操作命令
-m div blog origin 沖突 命令 com clas clear 代碼提交: git status git add . //或 git add * git commit -m "<message>" git push origin <yo
git 常用命令操作
命令操作 用戶名 每次 github blog mail 客戶端 strong str 目錄 一、用戶和郵箱 用戶和郵箱的作用 查看用戶名和郵箱地址 修改用戶名和郵箱地址 用戶名和郵箱地址的作用 用戶名和郵箱地址是本地git客戶端的一個變
Git 三、Git 命令行操作
mce IT image 本地庫 ima nts 系統用戶 賬號 name 1、本地庫初始化 在本地新建git倉庫D:\git\gitRep,右鍵——>git bush here (1)命令:git init (2)效果: (3)註意:.git 目錄中
2. github創建 git倉庫,克隆,拉取和推送操作(所有的git命令前提是一定在當前項目目錄下)
push mit 什麽 one alt class 所有 -m 註冊 步驟: 1.點擊小貓,回到初始頁面 2.點擊start a project,首先會出現一個驗證email地址(我們註冊的時候,有一個email輸入,進去郵箱驗證一下) 3.重新點擊sta
idea 通過命令操作git
mit 刪除 tails detail 項目 mod master 通過命令 article 關於如何把git(遠程)端項目拉取到idea端的操作可以觀看:https://blog.csdn.net/autfish/article/details/52513465 在本
git庫的基本命令操作
登入git git config --global user.name 'userName' #設定git賬戶,userName為使用者的git賬號 git config --global user.email 'email' #設定使用者的郵箱 建立一個資料夾
git常用命令操作
目前市場主流的版本控制系統主要分為:集中式版本控制系統與分散式版本控制系統。集中式版本控制目前主流的:SVN分散式版本控制系統目前主流的:Git 兩者之間的區別: 集中式有中央伺服器,開發人員需要從中央伺服器獲得最新版本的專案然後在本地開發,開發完推送到中央伺服器中,因此無法脫離伺服器。 分散式沒有中央伺
新手之git常用命令操作
有不對的歡迎指出,交流 1.git賬號訊息設定: git config --global --replace-all user.email "輸入你的郵箱" git config --global --replace-all user.name "輸入你的使
必須要會的Git基本使用及常用命令操作
之前一直用的svn,後來換了之後才發現git的強大功能,是svn不能比的。缺點就是可能上手比較難一點,剛開始自己研究了兩天才摸索出來一些基本使用方法。 最近做專案需要建庫等等,都用到了git,隨著越來越多的使用,也越來有越多的認識。 一開始都是別人建好遠端庫,克隆下來就行了。 下面
四、Git命令列操作
Git命令列操作 1、本地庫初始化 weChat目錄就是專案目錄。 注意:.git這個目錄存放的是本地庫相關的子目錄和檔案,不