git的一些指令

# 其他 / 51访问 / 0评论 / 2021-11-15
生成公钥,命令如下:ssh-keygen。
查看公钥,命令如下:cat ~/.ssh/id_rsa.pub。
官网git客户端下载		https://www.jianshu.com/p/fee5baf756c8
国内镜像git客户端下载	https://npm.taobao.org/mirrors/git-for-windows/

git clone url   		#克隆一个仓库到本地

git status			#查看当前分支信息

git add  .			#提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件到暂存区
git add -u 		#提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)到暂存区
git add -A 		#提交所有变化到暂存区

git commit -m "提交说明"	#把暂存的内容提交到本地仓库(HEAD当前本地分支)
git commit -a -m “massage”	#-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区
git commit --amend		#追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中

git remote -v 				#查看远程仓库地址
git remote add 远程仓库别名 url		#在本地添加一个远程仓库
git remote set-url 远程仓库别名 url		#在本地修改一个远程仓库的url
git remote rm 远程仓库别名			#在本地删除一个远程仓库
git remote set-url --add 远程仓库别名 url		#给一个远程仓库添加一个url(用于push时同时push 多个仓库)

git push origin master	#把文件推送到origin(远程仓库)的 master分支上(合并)
git push -f origin master	#把文件推送到origin(远程仓库)的 master分支上(强制覆盖)
git checkout -b dev		#将当前分支复制一个名为dev的分支(本地与远程同时执行)
git checkout master		#切换到master分支
git merge dev		#将dev分支合并到当前分支  (本地合并跟远程关,需要push 后才能和远程一致)

git branch -a		#查看本地与远程的所有分支列表
git branch			#查看本地所有分支列表
git branch -D dev		#删除本地为dev的分支
git push origin :dev   	#删除远程的dev分支(冒号前是空,代表本地是空)

git pull origin master				#从远程origin的master分支上获取最新版本merge(合并)到本地
git pull origin master --allow-unrelated-histories	#从远程origin的master分支上获取最新版本merge(强制合并)到本地
					#使用git pull命令的时候,可以使用--rebase参数,即git pull --rebase,
					#这里表示把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),
					#然后把本地当前分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到本地当前分支上

git fetch origin master			#把远程主机的更新全部取回本地,取回的代码对你本地的开发代码没有影响
	---  git fetch origin master:temp	#在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
	---  git diff temp			#比较本地代码与刚刚从远程下载下来的代码的区别;
	---  git merge temp			#合并temp分支到本地的master分支;
	---  git branch -d temp		#如果不想保留temp分支,删除;

git tag -a v1.0 -m 'my first version'	#打上版本标签  
git tag				#在控制台打印出当前仓库的所有标签
git tag  -d v1.00			#删除本地标签
git push origin  :v1.00		#删除git服务器上的标签
git push origin V1.00			#将V1.00标签提交到git服务器
git push origin --tags		#将本地所有标签一次性提交到git服务器
git checkout v1.00			#切换到v1.00

git reset --hard "head^"	#回退到上一个版本
git log  			#从最近到最远的提交日志  如果嫌输出信息太多,加上--pretty=oneline参数
git reflog			#查看所有的操作日志
git reset --hard dcd42fb	#按日志回滚数据(dcd42fb  为操作日志的标识)

git rebase -i HEAD~4	#合并最近的 4 次commit提交纪录,不要合并先前提交的东西,也就是已经提交远程分支的纪录(会自动进入vi编辑模式)
			#如果保存的时候,你碰到了这个错误error: cannot 'squash' without a previous commit注意不要合并先前提交的东西,也就是已经提交远程分支的纪录
			#如果你异常退出了 vi 窗口 git rebase --edit-todo  我们可以回去继续编辑git rebase --continue	#执行这个合并配置
	
git rebase dev		#将dev分支(不含dev分支上的commit提交记录)合并到当前分支  (本地合并跟远程关,需要push 后才能和远程一致)
			#在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
			#$ git rebase --continue
			#这样git会继续应用(apply)余下的补丁。


git rebase —abort		#终止 rebase 的行动,并且分支会回到 rebase 开始前的状态



忽略文件
在.gitignore中添加规则
*.sample		# 忽略所有 .sample 结尾的文件
!lib.sample	# 但 lib.sample 除外
/TODO		# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/		# 忽略 build/ 目录下的所有文件
doc/*.txt		# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

如果忽略的文件已被追踪哪请在当前分支clean时执行以下操作
git rm -r --cached .  这里也可以指定具体的文件
git add .
git commit -m 'update .gitignore'

局域网一

如果在局域网里,(注意:守护目录下面所有都是有效的git仓库才可以)
其中一个仓库可以用git daemon命令开启一个守护进程监听访问事件,将仓库暴露于局域网中。
其它仓库可以通过git命令访问这个仓库,可以clone,push等等。git daemon --export-all --verbose --base-path=.

在文件夹repo 中执行git init新建git仓库

在 repo目录下
执行git config --local receive.denyCurrentBranch updateInstead

执行git config --global sendpack.sideband false

在repo的上级目录中
执行git daemon --reuseaddr --base-path=. --export-all --verbose --enable=receive-pack开启服务器

在新建文件夹中git clone git://127.0.0.1/repo,push此时也可用

局域网二(本机共享)
git config --global receive.denyCurrentBranch ignore
修改根仓库.git/hooks/post-update.sample文件,在最下边添加以下代码:(将该文件后缀删除,变为post-update)
unset GIT_DIR
cd ..
git checkout -f
注释掉  #exec git update-server-info
通过共享的方式进行各种git 操作
局域网三(共享)
git init --bare   建立一个空的中央公共仓库
1

本文地址: https://www.kumaomao.cn/article/FFYFDRZIFG.html