Git常見命令及報錯

Git基本操作

安裝完Git,在開始菜單打開Git Bash後,先設置Git登錄信息

git config --global user.name "Name"
git config --global user.email "[email protected]"

常見文件位置操作:

pwd				#當前目錄
cd
mkdir				#新建文件夾

第一步,將當前目錄變爲git的本地版本庫(倉庫)。文件在工作區中,工作區與電腦裏的目錄相同。

git init

第二步,添加add文件到暫存區(Stage)。注意添加多個文件的格式,否則會被識別爲untracked File。

git add 1.txt
git add 2.txt 3.txt			#添加多個文件

第三步,一次性提交所有暫存區文件到本地版本庫master分支(分支可切換)中,-m參數message意爲本次說明。

git commit -m '此版本說明'

文件的add + commit + push/pull命令經常會用到,具體見下文。

恭喜你!基本的操作已經學會了。至此代碼們提交到了Git的工作區中,可以開始恣意縱情的寫代碼了,有不同的修改也可以根據提交記錄恢復。

工作區、暫存區、版本庫關係如下圖所示:

文檔版本管理

git status				#查詢Git當前狀態,常用。
git diff 1.txt				#查詢代碼與暫存區的修改區別
git log					#查詢git歷史,顯示太多時按q退出。加--graph參數圖形化顯示
git reflog				#查詢歷史版本號

修改出問題了怎麼辦,嘗試下版本回退,但是在還沒把本地版本庫推送到遠程前。reset既可以回退,也可以把暫存區回退到工作區。Git自動創建的第一個分支叫master,指向master的一個指針叫HEAD。

git reset --hard HEAD^
git reset --hard HEAD^^			#回退到上上次
git reset --hard HEAD~77		#回退第前77次修改
git reset --hard HEAD 8yfhY45		#回退到具體的版本號

撤銷此次修改

git checkout -- 1.txt

刪除暫存區中add的文件,不影響工作區的實際文件

git rm --cache 1.txt		#帶--cache參數不影響實際文件;或者-f參數將實際文件也刪除

刪除暫存區及工作區文件,如果commit過了可用 ‘checkout – 版本’ 撤銷,否則就找不到啦~

rm 1.txt		

刪除及整理某次commit歷史

git rebase -i HEAD~1		#刪除上次的
git rebase -i 9fbf10		#對id前幾位爲9fbf10之後的commit進行rebase
git rebase			#將分叉的commit歷史整理成一條直線,但本地的分叉提交歷史會被修改

想忽略某些文件不提交,需新建.gitignore文件寫入要忽略的文檔名

touch .gitignore		
# 在git bash中命令新建.gitignore,打開並寫入如下規則的目錄:
	*.log			#所有log格式文件
	*.temp
	/folder			# /某文件夾
	1.txt			#具體的某文檔名

連接GitHub遠程倉庫

通過驗證SSH Key將本地的testgit倉庫與Github倉庫連接,遠程庫的名字是origin:

git remote add origin https://github.com/Aeron9000/testgit	#與遠程倉庫建立連接
git push -u origin master			#本地倉庫推送到遠程倉庫,第一次帶-u參數關聯本地遠程
git push origin master				#本地推送到遠程倉庫,推送主分支master
git pull origin master				#拉取遠程倉庫master分支並與本地合併
git fetch origin master    			#只拉取遠程倉庫到本地。合併還要merge origin/master
git clone https://github.com/Aeron9000/testgit	#遠程倉庫克隆到本地

Git分支管理

git branch chs   			#創建chs分支
git checkout -b chs			#創建並切換到chs分支,只切換不帶-b參數
git branch				#查看本地分支
git branch -r    			#查看遠程現在分支
git merge chs				#在master下與chs合併。加--no-ff參數可保留原分支,往前走一個版本
git branch -d chs			#刪除chs分支

注:
在當前分支下刪除此分支則會報錯,
error: Cannot delete branch ‘chs’ checked out at 'C:/Users/testgit’

如果分支合併產生衝突,則在merge之後(可用git status查詢),修改1.txt並再次add + commit該文件可以解決衝突。

遠程協作管理,遠程庫的默認名是origin:

git merge –no-ff  -m “註釋” bno		#不用Fast Forword模式合併
git stash 				#隱藏該分支
git stash list
git stash pop				#恢復該分支並刪除stash list中的
git remote				#查詢遠程庫
git remote -v 		 		#查詢遠程庫詳細信息
git remote rm origin			#刪遠程庫

多人協作

git push origin chs			#chs分支推送到遠程庫
git checkout -b chs origin/chs		#遠程origin的chs分支到本地
git pull				#最新的提交從origin/chs抓下,在本地合併解決衝突

推送分支步驟:

  1. master分支是主分支,因此要時刻與遠程同步。
  2. 一些修復bug分支不要推送,可以先合併到主分支上,然後把主分支master推送到遠程。

多人協作模式:

  1. 首先,試圖用git push origin chs推送自己的修改。
  2. 如果推送失敗,則因爲遠程分支比你的本地更新早,需要用git pull試圖合併。
  3. 如果合併衝突,則需要解決衝突,並在本地提交,再用git push origin branch-name推送。

常見報錯應對

  • " Your branch is up to date with ‘origin/master’. "

  分支問題,需要新建並切換checkout到新分支再add+commit,等merge分支後再push到遠程倉庫。

  • " Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: ‘git pull …’) before pushing again."

  git push -f -u origin master 強推至遠程服務器,會強制刪除遠程倉庫中衝突文件。或者,git pull origin master --allow-unrelated-histories

  • " Changes not staged for commit. "

  沒有add文件,或者儘管add了但是存在大小寫不對應問題。

  • " Please enter a commit message to explain why this merge is necessary."

  因爲本地庫的代碼跟遠程庫有衝突需要合併,可修改完後按ESC,然後輸入":wq"


學習更多詳細的Git參考:
https://www.liaoxuefeng.com/wiki/896043488029600

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章