Git常用命令總結及一些問題思考

tankII發表於2021-09-09

感謝廖雪峰大神分享的Git課程

歡迎訪問

掌握以下命令,基本上日常夠用

git 常用命令總結

本地倉庫普通操作

建立版本庫

git init

新增檔案到快取區

git add file

新增到倉庫

git commit -m "commint describtion"

撤銷修改或清除快取區

git reset /git reset HEAD file

丟棄或撤銷修改

git checkout -- file

刪除

git rm file 
相當於git rm後git add

撤銷刪除操作

git reset 
git checkout --file

檢視指定檔案

git cat file

比對工作區與版本庫

 git diff

檢視日誌

git log

操作歷史

git reflog

版本回退

git reset --hard commit-id

或 git reset --hard HEAD-id相當於指定當前HEAD到指定版本

建立並指向分支

git checkout -b

切換分支

git checkout

檢視分支資訊

git branch 
詳細資訊 git branch -v

合併指定分支到當前分支

git merge

普通模式合併,保留分支資訊

git merge --no-ff -m ""  此資訊會在遠端顯示

刪除分支

git branch -d

臨時儲存工作區現場

git stash

列出工作區現場

git list

刪除現場並恢復工作區

git stash pop

新增當前工作區全部檔案到快取區

git add .

測試連線

ssh -T git@github.com

遠端庫與本地庫相關

新增遠端版本庫

git remote add origin git@github.com:路徑/版本庫.git

克隆遠端分支庫

git clone git@server:path/repo.git

本地建立遠端庫對應分支

git checkout -b branch origin/branch

從遠端庫拉取最新提交

git pull

關聯並推送本地版本庫到遠端庫

git push -u origin master

本地分支推送到遠端庫

git push

檢視遠端倉庫狀態

git remote show origin
git remote -v

本地分支與遠端分支比對

git diff origin/

強制遠端庫覆蓋本地

git fetch --all 
git reset --hard origin/master 
git pull

更新遠端資訊

git remote update

追蹤遠端分支

git fetch origin branch-name

建立本地與遠端分支的連線

git branch --set-upstream-to origin/

克隆指定分支

git clone -b git@server-name:path/.git

合併衝突

手動解決衝突之後 衝突檔案-->git->Resolve Conflicts

實戰問題及解決方式總結

commit 後無提交說明遇到的問題:Vim: Caught deadly signal SEGV,無法繼續操作git
?只能重啟git視窗?
退出log介面:q鍵退出

刪除部分log?
git reset --hard commit-id: HEAD指向commit-id版本,log只顯示當前HEAD版本 ,回退全部後仍可顯示全部log

刪除全部log?待研究

檢視幫助:git --help ;指定命令幫助 git log -help;

git reset --hard HEAD-id:回退到指定HEAD版本,id可透過git reflog檢視

版本回退:

git reset HEAD^

無--hard時:
Unstaged changes after reset: M ;

有--hard時:
完整命令: git reset --hard HEAD^
HEAD is now at

結果HEAD都指向指定版本

未commit的:
checkout -- 提示檔案匹配不到,需reset 或rest HEAD 清除快取區之後才能撤銷,-f強制刪除 無法撤銷

已commit的:
reset後checkout也無法撤銷,想撤銷只能reset --hard commit-id或reset --hard HEAD回退到提交刪除之前,無法回退指定檔案

新增遠端倉庫時提示:fatal: remote origin already exists.

進入vi:

vi 
.git/config刪除remote “origin”

退出vi編輯器:

ESC後 shift+zz儲存 退出

遠端庫與本地庫操作相關問題及總結

版本庫內檔案,同一路徑下的多個分支共享,分支提交,合併到主線

遠端庫預設名稱根據我們初次連線遠端庫時建立的為準

git pull 提示

there is no tracking information for the current branch說明本地分支和遠端分支的連線關係沒有建立

git pull提示
error: The following untracked working tree files would be overwritten by merge:.....

Please move or remove them before you can merge.

Aborting

git clean -d -fx ""
其中
x -----刪除忽略檔案已經對git來說不識別的檔案
d -----刪除未被新增到git的路徑中的檔案
f -----強制執行

本地與遠端操作流程

進入指定目錄後
若無倉庫時初始化倉庫
關聯遠端倉庫:git remote add origin git@server-name:path/.git
檢視遠端倉庫資訊:
git remote -v

兩種情況:

未clone過遠端分支時:

git remote show origin

git remote update

git pull

以上三個命令提示:

GitLab: The project you were looking for could not be found.

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

checkout -b /時:

提示:
fatal: 'origin/branch' is not a commit and a branch 'branch' cannot be created from it

checkout /

提示:
error: pathspec 'branch' did not match any file(s) known to git.

error: pathspec 'origin/branch' did not match any file(s) known to git.

此時只能克隆 
git clone git@server-name:path/.git 獲取倉庫再操作

待研究驗證

已克隆過遠端分支時:

已建立本地倉庫與遠端倉庫對應連線,預設為master分支,需要切換到已clone的倉庫程式碼路徑,繼續操作

git remote show origin 提示 tracked 
git remote update 
git pull 無最新提交提示already up-to-date
git fetch
以上命令均可正常操作

後續操作

建立並切換到與遠端庫對應本地分支 
git checkout -b branch origin/branch
變更已clone過的master分支程式碼為指定分支程式碼

git checkout master 切換到master分支,程式碼重下載

分支切換過程工作區程式碼會跟隨分支變動

git status 檢視倉庫狀態,未修改工作區情況下倉庫狀態不變 working tree clean

追蹤遠端庫
git fetch origin branch 
拉取最新提交git pull origin branch指定分支或git pull預設當前對應分支
建立連線git branch --set-upstream-to origin/

問題:遇到過 git pull 及git remote update 不拉取提示new 且未追蹤,待復現

注意:實際開發中需要

切換分支之前需commit工作區到本地分支倉庫,提交之後再切換分支,倉庫程式碼將會有所區別

git stash臨時儲存工作區後,需記住stash id,再切換分支操作,切回遠分支後透過git

stash popstash apply 恢復原工作區

謹記:

本地修改分支:用於本地修改

遠端同步分支:用於pull及push;本地修改分支合併到該分支,再push

切換分支前提交或臨時儲存本地修改分支修改內容到本地倉庫,以便切回該分支繼續修改

日常git 程式碼操作流程

本地倉庫已與遠端倉庫關聯後:

檢視遠端倉庫資訊 git remote show origin
追蹤最新提交git fetch origin branch
拉取最新提交 git pull

本地倉庫未與遠端關聯時:

關聯本地倉庫到遠端倉庫,
clone遠端分支,
git fetch追蹤,
git pull拉取
git push

提示:
fatal: The upstream branch of your current branch does not match
the name of your current branch. To push to the upstream branch
on the remote, use

`git push origin HEAD:`

`To push to the branch of the same name on the remote, use

git push origin `

完整提交流程

git stash儲存本地工作區

git checkout 切換到遠端分支

git pull拉取遠端提交

git checkout 切回本地

git merge --no-ff -m "" 遠端分支合併到本地,解決衝突

git checkout

git merge --no-ff -m "" 本地分支合併到遠端

git push origin HEAD:git push

原文連結:http://www.apkbus.com/blog-35555-76818.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1795/viewspace-2812742/,如需轉載,請註明出處,否則將追究法律責任。

相關文章