這篇文章主要是介紹我在使用git中的有一些忘記了,但是很重要的命令。
git config alias.change-commits '!'"f() ; f "
git change-commits git_author_name "old name" "new name"
git change-commits git_author_email "[email protected]" "[email protected]" head~10..head
本地分支的重新命名
git branch -m oldbranchname newbranchname
如果想重新命名當前分支
git branch -m newbranchname
20190311update
問題是:之前add
和commit
時發現把 bin 和 obj 檔案包含進去了,後來再加了 .gitignore 發現沒用了。解決問題如下
git rm -r --cached .
git add .
git commit -am "remove ignored files"
20171127更新
檢視各個分支所指的當前物件
git log --oneline --decorate
git log --oneline --decorate --graph --all //輸出你的提交歷史,各個分支的指向,以及專案分支分叉的情況
git merge [branchname] 把 branchname 合併到當前分支
任何因包含合併衝突而有待解決的檔案,都會以未合併狀態標識出來。 git 會在有衝突的檔案中加入標準的衝突解決標記,這樣你可以開啟這些包含衝突的檔案然後手動解決衝突。 出現衝突的檔案會包含一些特殊區段,看起來像下面這個樣子:
<<<<<<< head:index.html contact : [email protected]
*****== please contact us at [email protected]
>>>>>>> iss53:index.html
這表示 head 所指示的版本(也就是你的 master 分支所在的位置,因為你在執行 merge 命令的時候已經檢出到了這個分支)在這個區段的上半部分( *****== 的上半部分),而 所要合併分支所指示的版本在 *****== 的下半部分。 為了解決衝突,你必須選擇使用由 *****== 分割的兩部分中的乙個,或者你也可以自行合併這些內容。 例如,你可以通過把這段內容換成下面的樣子來解決衝突:
git branch -v
git branch --merged / --no-merged 檢視已經合併或者未合併的分支
git branch -d / -d(強制刪除)
遠端倉庫名字 origin 與分支名字 master 一樣,在 git 中並沒有任何特別的含義一樣。 同時 master 是當你執行 git init 時預設的起始分支名字,原因僅僅是它的廣泛使用, origin 是當你執行 git clone 時預設的遠端倉庫名字。 如果你執行 git clone -o booyah ,那麼你預設的遠端分支名字將會是 booyah/master 。
2017 11 23 更新
git log
git log -p //顯示每次提交的內容差異
git log --stat //顯示每次提交的簡略的統計資訊
git log --pretty=format:"%h - %an, %ar : %s"
限制輸出長度
git log --sine=2.weeks
git log -顯示 前 n 條提交
git log --author 指定作者的提交
git log -sfunctionname 可以列出那些新增或移除了某些字串的提交
撤銷剛剛的乙個提交
git commit --amend //由於commit 資訊寫錯,好像經常用
當你使用 git add * 時,發現新增了不應該暫存的檔案,可以用下面的來取消暫存
git reset head git checkout -- //取消對乙個未加入暫存區檔案的修改
新增乙個遠端倉庫
git remote add git remote add pb
從遠端倉庫抓取與拉取
git fetch [remote-name] //git fetch origin
git push [remote-name] [branch-name]
檢視遠端倉庫
git remote show [remote-name]
遠端倉庫的移除與重新命名
git remote rename git remote rm
git tag 列出標籤
git 使用兩種主要型別的標籤: 輕量標籤(lightweight) 與 附註標籤(annotated)。
乙個輕量標籤很像乙個不會改變的分支-它只是乙個特定提交的引用。
附註標籤是儲存在git資料庫中的乙個完整物件。它們是可以被校驗的;其中包含打標籤者的名字、電子郵件位址、日期時間;還有乙個標籤資訊;並且可以使用gnu privacy guard (gpg) 簽名與驗證。
git tag -a v1.4 -m 'my version 1.4'
git show 可以看到標籤資訊對應的提交資訊
git tag v1.4-lw
git tag -a v1.2 9fsdfdasfa 某個提交的校驗和的值
git push origin v1.2 推送指定標籤
git push origin --tags 一次性推送把所有不在遠端倉庫伺服器上的標籤全部推送過去
在特定標籤上建立乙個新分支
git checkout -b [branchname] [tagname]
git checkout -b version2 v3.3.0
問題描述: 比如我覺得當前分支可能不適合線上的,那麼我需要來乙個更加安全的分支?
實現:
git checkout -b new-branch commitid
對 指定的commitid
建立新分支。
git clone myname
以前一直不知道,當暫存之後使用 git diff 就無效了,今天發現竟然還有這個
(在未 commit 的狀態下!)
git diff --cached
git diff --staged
首先先使用rm filename
然後再使用git rm filename
進行記錄。
另外一種情況是,我們想把檔案從 git 倉庫中刪除(亦即從暫存區域移除),但仍然希望保留在當前工作目錄中。 換句話說,你想讓檔案保留在磁碟,但是並不想讓 git 繼續跟蹤。 當你忘記新增 .gitignore 檔案,不小心把乙個很大的日誌檔案或一堆 .a 這樣的編譯生成檔案新增到暫存區時,這一做法尤其有用。 為達到這一目的,使用 --cached 選項
git rm --cached deletename
git工作中使用命令
1.檢視本次對檔案進行了哪些修改 git show 1 首先獲取commitid,可以通過git log 2 git show 檢視修改了哪些檔案 3 git show commitid 檢視檔案中修改的內容。刪除遠端分支 git push origin delete anjunshuang 建立乙...
日常工作中的shell指令碼
由於nginx開啟了ssl證書,從http公升級到https,所以要把 的html檔案中的http替換成https,寫了個小指令碼,如下 bin bash shell宣告 dir num find test name html 獲取test目錄下所有的html檔案 time date 定義時間變數 ...
工作中使用過的git 命令總結
檢視提交歷史記錄和某個記錄的修改詳情 1 git log 2 git show 1f2e6d6ae0bcbde88fc4b8409e5f4ceb1882f4de 檢視某個檔案的提交歷史記錄和某個記錄的修改詳情 1 git log pretty oneline git log pretty oneli...