Git操作指南及git常用命令汇总

1.安装及GIT基础使用

安装gitgit小乌龟

安装小乌龟(在setting->network->修改ssh.exe的路径)

ssh .exe 的路径 : git 的安装目录 /usr/bin/ssh.exe

2. 生成公钥:【公司的git服务器界面就会有相关方法】

# 使用ssh-keygen命令生成公钥,并配置到远程库的界面上

ssh-keygen

#【家目录的 .ssh目录中的 .pub文件】

3. 配置用户名和邮箱

#【家目录的.gitconfig文件】

git config --global user.name 工号
git config --global user.email 自己的公司邮箱

4.克隆代码  (只有第一次需要)

git  clone 网址【ssh协议和https协议】(需要有权限/申请)

5. 本地创建新的分的分支

【好习惯,就是每开发一个新的需求,都创建一个本地分支,然后提交的时候也提交到远程的同名分 支】

# 本地master只做备份分支预留

git branch + 分支名

git checkout 分支名

# 创建分支并切换

git checkout -b 分支名

6. 编辑代码(工作区)

# 保存到暂存区;注意:add的文件一定是自己想提交的文件

git add 文件名

git add .  # 点表示当前目录下的所有修改

7. 提交到本地库

git commit -m "提交这个代码原因"

git commit

直接 git commit (适用于需要提交的描述信息比较长的时候)执行后会直接进入到一个编辑模式,在里面编辑写入你的描述信息,然后 Shift 键 + : wq 保存即可

8. 推送到远程分支


git push origin 本地分支名:远程分支名

9.在远程界面创建一个merge请求

pull request 】    源远程分支( 自己 ) - > 主干分支 (master)
跟踪自己的merge 请求最终合并到主干 ( 合并本次 merge)
(1) 门禁必须跑过【写代码,最基本的要求,编程规范要了解】
(2) 找两个同事帮你检视代码
(3) 找领导合并代码
场景一 拉代码时出现的问题
拉代码时出现的问题
git pull origin 远程分支
(1)出现【rejected】拒绝的错误(原因主要是本地的提交和原master上的提交出现分叉)

解决方法一(建议):
1、git pull origin master
2、会进入一个vim界面
3、直接保存退出

解决方法二(建议):
1、git pull
(可能需要操作的)
2、git branch --set-upstream-to=origin/远程分支名 本地分支名
3、git pull
4、会进入一个vim界面
5、直接保存退出

解决方法三:
1、git pull --no-edit

解决方法四(建议):
1、git pull --rebase

解决办法五(更建议):
【git rebase会进行变基操作,不会让git的提交记录出现分叉】【注意进行
git rebase后的push命令可能需要增加-f选项】
1、git fetch
2、git rebase 【或者git rebase origin/master】
git rebase 后的 push 命令可能需要增加 -f 选项】
1、git fetch
2、git rebase 【或者git rebase origin/master】

(2)git fetch 和 git pull的区别

git fetch 只会拉取最新的代码,不会合并到当前分支中,需要使用git merge命令进行合并
git pull 拉取并合并
git pull == git fetch + git merge
git pull --rebase == git fetch + git rebase


(3)拉代码时显示出现冲突(请查看如何处理冲突章节)


(4)当拉代码提示"你本地有修改commit或者需要stash的时候",拉不下来代码
解决方法一:

1)临时保存当前的修改 git stash
2)重新拉代码 git pull origin master
3)还原之前临时保存的修改 git stash pop
4)如果还原的时候,没有冲突,就继续操作就可以
如果还原的时候,有冲突,则需要解决冲突
5)git diff 查看冲突的文件
6)处理冲突 vim 冲突的文件 (注意!!!)
7)git add .
8)git commit -m "消息体"
9)git push origin 本地分支:远程分支名

解决方法二:

1)备份下这些修改的文件【因为操作后就找不回已经修改的代码啦】
2)命令行中的操作
git status
git restore 误修改的文件 或者 git reset --hard (高危操作,提前保存备份的
文件)

小乌龟的操作
git revert
3) 把自己的修改重新添加进去【替换的时候,一定要进行比对】

场景二 多次提交记录需要合并为一条记录
多次提交记录需要合并为一条记录
1 )提交了一次,二次提交时进行特殊处理
命令行操作:

第二次commit时需要加--amend

git commit --amend -m "信息"

git push origin -f 本地分支名:远程分支名
小乌龟:
commit 的时候,勾选 amend 的勾选框
push 的时候勾选  force  那个框
2 )已经出现提交了多次的情况
命令行操作:
使用git log + git rebase -i命令进行合并  

(1)查找要合并的几条记录的上一条记录的commit-id值
git log

(2)使用git rebase -i 进行合并处理
git rebase -i 2e48fb163795dba2a054da4f34674c6bf5f84d27
p表示保留
s表示合并到上一条记录
d表示删除

(3)推到远程分支即可
git push origin -f 本地分支名:远程分支名
小乌龟:
(1)右键找到rebase按钮,注意分支名,左侧是本地分支,右侧是远程主干分支,同时勾选force勾选

(2)然后通过commit-id值找到对应的需要合并的记录,然后进行合并处理,一般是将后面提交的合并
到前面提交的记录上去。
(3)处理完后点击start rebase按钮,中间会出现修改message的界面,修改完后,点击commit按
钮,完成合并操作,然后将修改推送远程仓库【使用git push强制推送,勾选force勾选框】
场景三 误操作
误修改了别人的代码【适用于还没有 add 的场景】
命令行操作:
方式一:
git status
git restore 误修改的文件
方式二:
git status
git reset --hard 【高危操作】
小乌龟的操作
git revert
误修改并已经 add 【适用于已经 add 的场景,但没有 commit 的场景】
命令行操作:
git status
git restore --staged 文件名
误修改并已经提交【适用于已经 commit 的场景】
(1)手动将不应该修改的代码还原回去,重新三部曲
(2)git reset --hard + commit-id
(3)如果误提交的代码比较多,不容易改回去,则复制远程master的对应代码还原本地的代码,重新三部曲
场景四 同时开发多个需求
如何同时开发两个需求 ( 如何创建两个 pull request)
(1)分别创建两个分支:
git branch 分支1
git branch 分支2

(2)分别切换到两个分支上进行开发即可,开发完成后三部曲push到远程分支
git push origin 分支1:分支1
git push origin 分支2:分支2

(3)然后在分别创建两个pull request即可

# 注意:创建分支时,实际是基于当前的分支创建的,如果功能一已经提交到了本地库,那么创建分支时,应
该先切换到master分支,然后基于master分支创建新的分支2,然后再pull代码,进行功能二的开发
场景五 解决冲突
如何解决冲突
处理冲突:[你的代码,你有信心,别人放心]
正常操作下,出现异常结果,不要恐惧,不要着急乱点 (特别是不认识英文的情况下)稳定情绪,合理分析,冷静解决
处理冲突时,尽量和别人进行沟通,不要误操作覆盖了别人的代码,这一点最忌讳
如果本次代码合并主干请求中,有处理过冲突的操作,一定要二次检查确保无误,一定不要问题的发现都依赖检视代码的人,检视代码的人有时候也会有疏漏
冲突1场景:
两个人同时修改了同一个文件,同一行,最终在库上产生了两次pull request
然后其中一个request合并后,另外一个请求则会发生冲突,发生冲突后
小乌龟处理方法:
(1)git pull 拉master的代码 (则会看到冲突)
(2)处理冲突
(3)git commit时记得标记为已解决冲突
【提交代码的时候,只动冲突的文件,别人的文件不要乱动】
(4)然后git push即可,冲突处理完成
命令行:
(1)git pull origin master
(2)git diff 查看冲突的文件
(3)处理冲突 vim 冲突的文件 (注意!!!)
(4)git add . (或者指定需要修改的文件)
(5)git commit -m "消息体"
(6)git push origin 本地分支:远程分支名
冲突2场景:
自己正常操作,提交代码时,直接冲突

冲突3场景:
拉代码后,git stash pop时冲突
(1)git diff 查看冲突的文件
(2)处理冲突 vim 冲突的文件 (注意!!!)
(3)git add .
(4)git commit -m "消息体"
(5)git push origin 本地分支:远程分支名
冲突4场景:
拉代码使用git fetch + git rebase的方式,git rebase时出现冲突
(1)git diff 查看冲突的文件
(2)处理冲突 vim 冲突的文件 (注意!!!)
(3)git add .
(4)git commit -m "消息体"
(5)git rebase --continue
(6)git push origin 本地分支:远程分支名

# 注意:如果git rebase出现冲突后,想终止rebase,则可以使用git rebase --abort
最笨且最有效办法:
备份本地代码, 删除本地的代码分支,删除自己的远程分支, 重新clone, 然后重新提交自己的修改
【提交的时候,因为涉及到文件的替换,一定记得要比对下】

其它常用命令
创建分支和切换分支
命令行操作:
git branch 分支名
git checkout 分支名
小乌龟的操作:
create branch
switch/checkout
查看当前本地所有分支:
git branch

创建分支:
git branch 分支名

删除分支:
git branch -d 分支名

# 强制删除 git branch -D 分支名 (或者加-f)

切换分支:
git checkout 分支名

创建分支&&切换分支:
git checkout -b 分支名

查看所有分支(本地和远程):
git branch -a
临时保存代码并还原
# 临时保存当前的修改
git stash
# 还原之前临时保存的修改
git stash pop
危险命令
git reset --hard commit-id值( commit-id值可以从git log中查看到)

# git reset 命令会回滚本地分支的代码到这个commit-id节点。所以执行该命令时,一定要提前备份自己
本地的修改
将远程分支和本地分支进行关联
git branch --set-upstream-to=origin/远程分支名 本地分支名

# 如:git branch --set-upstream-to=origin/master lxd
如何查看一个文件的某一行的修改历史
git blame 文件 (指定行号查看 git blame -L 3,10 文件 )

git show commit-id值
如何将指定分支合并到当前分支
git merge [branch]

如何将一个需求快速合并到其他分支

# 选择一个需求提交记录中的 commit-id ,合并到当前分支
git cherry-pick [commit-id]

查看历史提交日志

git log

git常用命令汇总: 

===================================================
	Git版本管理:
主要是管理代码的版本为主
版本管理分为2种:
1、分布式管理:Git
2、集中式管理:SVN
----------------------------
	Git命令:
1、版本克隆
git clone ssh库地址  //将远程服务器的版本拷贝到本地目录
如:
git clone ssh://admin@115.28.86.8:29418/~admin/test_324_2_0618.git
			
[克隆完了之后,切换到版本目录里面去,进入主线版本:主分支]
		
2、推版本:三部曲
2.1:添加文件

git add 文件名	    // 添加单个文件,将文件放到缓存

git add .	// 批量添加当前目录下所有修改的文件
				
2.2:提交文件到本地库

git commit -m "文字描述[本次操作的意图]"

// 将缓存的内容提交到本地库,产生最新版
				
2.3:推版本到远程库

git push		//简化版本(直接push到远程master分支了)

git push orgin 本地名:远程名
						
3、修改用户信息:全局修改[针对所有版本]

git config --global user.name "用户名"

git config --global user.email "邮箱@qq.com"
			
4、拉版本:
git pull   //将远程库最新版修改的文件拉到本地并合并到本地库
			
5、合并:

git merge
			
6、解决冲突:

git rebase

查看比较git diff ,找到冲突的文件,再vim修改,再提交

冲突:<1.版本冲突: git pull->再push
     <2.文件冲突; git diff->找位置修改->再提交3部曲	
			
7、查看提交历史,获取版本id/版本号

git log
			
8、版本回退

git reset --hard 版本号	// 通过git log 拿到指定版本号
			
9、命令区别:

git pull	//拉最新修改的文件到本地并合并

git fetch	//抓取最新修改的文件到本地,不合并[需用 git merge合并]

git clone 	//整个库都拷贝下载到本地,产生本地库
			
10:分支操作
10.1 查看分支

git branch		// 查看当前分支及本地分支

git branch -a   // 查看所有分支
			
10.2 创建分支

git branch 分支名字		// 指定名字创建分支

git branch -d 分支名字     //删除分支(不常用)	

git branch -D 分支名字      //强制删除分支			
10.3 切换分支

git checkout <branch_name> //切换到指定分支

git checkout -b <branch_name> //创建并切换到指定分支 


			
10.4 合并分支

git merge 分支名 

10.5 部分合并
git cherry-pick    <commitHash>某个版本id //命令的作用,就是将指定的提交(commit)应用于其他分支。
					           // 上面命令就会将指定的提交commitHash,应用于当前分支
【参考 https://blog.csdn.net/qq35432904/article/details/107232691】
		----------------------------------------------------------
补充命令:
11、stash
git stash 隐藏当前工作的修改

如果不隐藏自己修改的半成品代码,就会发生切换到别的分支后,将然后自己的半成品代码带入其他分支,这样就发生很多不必要的麻烦。

git stash save message 

执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

git stash list 查看隐藏的工作信息列表

git stash drop 删除隐藏的工作信息

git stash pop 恢复隐藏的工作信息,同时删除隐藏的工作信息

git stash apply [stash@{0}] 恢复指定的隐藏工作信息,但是不会删除隐藏的工作信息


12.diff
git diff HEAD -- . 查看最新本地版本库和工作区所有文件的区别

git diff HEAD -- [file-name] 查看最新本地版本库和工作区文件的却别

git diff HEAD^ -- [file-name] 查看本地上一个版本和工作区文件的却别

git diff [local branch] origin/[remote branch] 比较本地分支和远程分支的区别

		
13、# 生成一个可供发布的压缩包

git archive		

#查看支持的归档格式有tar、tgz、tar.gz、zip

git archive --list 

 

#导出最新的版本库

git archive -o ../latest.zip HEAD

#导出一个目录

git archive -o ../git-1.4.0-docs.zip  HEAD:Documentation/ 

 

#导出指定提交记录

git archive -o ../git-1.4.0.tar 8996b47 

 #导出为tar.gz格式

git archive   8996b47 | gzip > ../git-1.4.0.tar.gz

 gitstatus    //查看当前状态

导出最后一次提交修改过的文件 

git archive -o ../updated.zip HEAD $(git diff --name-only HEAD^)


 

python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值