天天看點

Git使用

Git使用及代碼倉庫介紹

目錄

  • 1.初始化Git
  • 2.建立忽略檔案
  • 3.把遠端repository加到本地
  • 4.将工作區代碼送出到本地暫存區
  • 5.配置使用者名郵箱
  • 6.送出暫存區代碼到本地代碼倉庫
  • 7.從遠端倉庫拉取代碼到本地倉庫
  • 8.送出本地倉庫代碼到遠端倉庫
  • 9.硬恢複到指定送出版本
    • 9.1 本地倉庫強制覆寫遠端倉庫
  • 10.導出送出修改日志
  • 11.檢視本地分支與遠端分支
  • 12.下載下傳遠端分支
  • 13.找回暫存區裡丢失的代碼
  • 14 修改最近一次commit的注釋
  • 15.修改作者名稱
  • 16. git tag的用法
    • 16.1.git的tag功能
    • 16.2.建立tag
    • 16.3.檢視tag
  • 17.git checkout -- file 可以丢棄工作區的修改
  • 18. git清除本地使用者名密碼
  • 19.把目前送出到git本地倉庫的代碼推送到遠端主機origin的Development分支上
  • 20. git remote: HTTP Basic: Access denied 錯誤解決辦法
  • 21. 設定本地ssh檔案

Git是一個很強大的代碼版本管理工具,在Git的使用過程中,不斷學習積累Git的指令行及其作用,在本篇文章中記錄了筆者使用過程的積累,以後還會持續更新。代碼倉庫分為分為工作區 暫存區 本地倉庫 遠端倉庫 四個區,主要工作流程為暫存,拉取,恢複暫存,合并(如果有沖突),送出,推送

git init

touch .gitignore(這裡面可以寫一些忽略檔案,git add/commit/push的時候不會上傳忽略檔案,可以參照其它項目)

git remote add origin 遠端位址

git add --all
git add .
           

git config user.name "JerryMouseLi"
git config user.email "[email protected]"
           

檢視使用者名以及郵件

+ 檢視目前登入賬号:

git config user.name

+ 檢視目前登入郵箱:

git config user.email
           

git commit -m "送出備注"

git pull origin master

pull包含了fetch跟merge将本地倉庫的變化與遠端倉庫變化,同名檔案合并。這裡有沖突需要解決沖突。

git push origin master

git reset --hard commit_id

`

git push origin master --force

git log --pretty=format:"%ai , %an: %s" --since=“100 day ago” >> ~/Desktop/commit.log

git log --pretty=format:"%ai , %an: %s" >> ~/Desktop/Readme.log

最終采用
git log  --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:"%ad , %an: %s" >> ~/Desktop/Readme.log 
           
選項   說明
%H    送出對象(commit)的完整哈希字串
%h    送出對象的簡短哈希字串
%T    樹對象(tree)的完整哈希字串
%t    樹對象的簡短哈希字串
%P    父對象(parent)的完整哈希字串
%p    父對象的簡短哈希字串
%an    作者(author)的名字
%ae    作者的電子郵件位址
%ad    作者修訂日期(可以用 -date= 選項定制格式)
%ar    作者修訂日期,按多久以前的方式顯示
%cn    送出者(committer)的名字
%ce    送出者的電子郵件位址
%cd    送出日期
%cr    送出日期,按多久以前的方式顯示
%s    送出說明
           

git branch -a 檢視所有分支

git branch -r檢視遠端分支

git branch  檢視分支
           

git clone -b CQDemo https://git.dev.tencent.com/xxx/xxx.git

git fsck --lost-found //找回git add過但是已經不存在檔案中的内容

git commit --amend

commit提供了一個--amend參數,可以修改最後一次送出的資訊.但是如果你已經push過了,那麼其曆史最後一次,永遠也不能修改了。

主要我用來導出git日志的時候用

git commit --amend --author "xw [email protected]"

// 設定全局

git config --global user.name "Author Name"

git config --global user.email "Author Email"

// 或者設定本地項目庫配置

git config user.name "Author Name"

git config user.email "Author Email"

我們常常在代碼封闆時,使用git 建立一個tag ,這樣一個不可修改的曆史代碼版本就像被我們封存起來一樣,不論是運維釋出拉取,或者以後的代碼版本管理,都是十分友善的

git 下打标簽其實有2種情況

  • 輕量級的:它其實是一個獨立的分支,或者說是一個不可變的分支.指向特定送出對象的引用
  • 帶附注的:實際上是存儲在倉庫中的一個獨立對象,它有自身的校驗和資訊,包含着标簽的名字,标簽說明,标簽本身也允許使用 GNU Privacy Guard (GPG) 來簽署或驗證,電子郵件位址和日期,一般我們都建議使用含附注型的标簽,以便保留相關資訊

    是以我們推薦使用第二種标簽形式

git tag -a V1.2 -m 'release 1.2'
           

上面的指令我們成功建立了本地一個版本 V1.2 ,并且添加了附注資訊 'release 1.2'

git tag
           

要顯示附注資訊,我們需要用 show 指令來檢視

git show V1.2
           

但是目前這個标簽僅僅是送出到了本地git倉庫.如何同步到遠端代碼庫

git push origin --tags
           

如果剛剛同步上去,你缺發現一個緻命bug ,需要重新打版本,現在還為時不晚.

git tag -d V1.2
           

到這一步我們隻是删除了本地 V1.2的版本,可是線上V1.2的版本還是存在,如何辦?這時我們可以推送的空的同名版本到線下,達到删除線上版本的目标:

git push origin :refs/tags/V1.2
           

如何擷取遠端版本?

git fetch origin tag V1.2
           

這樣我們可以精準拉取指定的某一個版本.适用于運維同學部署指定版本.

git checkout -- readme.txt

git config --system --unset credential.helper

git push origin Development

問題描述:

git push 報 HTTP Basic: Access denied 錯誤

原因:本地git配置的使用者名、密碼與gitlabs上注冊的使用者名、密碼不一緻。

解決方案:

  1. 如果賬号密碼有變動 用這個指令 git config –system –unset credential.helper 重新輸入賬号密碼 應該就能解決了
  2. 如果用了第一個指令 還不能解決問題那麼 用這個指令:

    git config –global http.emptyAuth true

    3.如果以上兩個方法不起作用,那麼采用以下方法:

進入控制台》使用者賬号》憑據管理器?windows憑據》普通憑據,在裡面找到git,點開編輯密碼,更新為最新密碼之後就可以正常操作了。

ssh-keygen -t rsa -C "[email protected]"
           

拷貝*.pub檔案ssh-rsa開頭

ssh方式連接配接遠端git服務

ssh -T [email protected]
           

注意必須在~/.ssh檔案夾下操作

The Sky is the limit.

git