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

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