实习入职必备-Git命令操作大全

本文详细介绍了如何在D盘GitTest目录下管理本地仓库,包括创建、编码设置、基本命令、分支管理、合并冲突解决、远程仓库操作(GitHub与GitHup)以及SSH免密登录。涵盖了版本控制、团队协作和最佳实践,适合IT开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git切换分区到D盘gitTest目录下

image-20211127204916213

cd ..  #注意,cd和..之间必须有一个空格[返回上一级目录]
pwd #查看当前目录
mkdir [目录名] #创建一个目录
rmdir [目录名] #删除一个目录
rm [文件] #删除文件名

1.创建本地仓库

例:在D盘新建一个仓库文件夹

image-20210705112812624

2.修改字符编码集为UTF-8

右键git ,右键options

image-20210705112929384

image-20210705113109943

git基本命令

git config --list #查看全局设置
git --version #查看git版本
clear #清屏
git config --global user.name "Han" #设置用户名
git config --global user.email "2481713248@qq.com" #设置邮箱
#设置远程地址别名
git remote add 【地址别名】 【ssh地址或https地址】
#查看地址别名
git remote -v
#删除远程地址别名
git remote remove 【地址别名】
git init #当前路径初始化本地仓库 

image-20210705140626364

提交到本地仓库操作

注意:一定要在本地仓库下操作,不放在本地仓库下的文件,git无法提交到暂存区和本地仓库。

image-20210705141050519

git add 【文件名】 # 提交指定文件代码到暂存区
git add .   #提交所有文件代码到暂存区
git rm --cached 【文件名】 #从暂存区删除
git commit -m “ ” 【文件名】#提交到本地仓库,-m表示注释记录

image-20210705141548424

git status #查看是否有文件在暂存区中

image-20210705142201116

image-20210705142349030

image-20210705142625787

已提交的文件进行了修改

image-20210705143018290

红色表示未add到暂存区已提交的文件进行了修改,绿色表示未提交到本地仓库

查看所有提交的日志
git log  #查看所有的提交日志

image-20210705143519732

历史记录过多的分页效果

image-20210705143826217

git log --pretty=oneline #简化日志的查看效果

image-20210705144200601

git log --oneline #更简化
git reflog #添加了计数,更新到最新版需要几步 
#git reflog 可以查看所有执行的历史命令,撤销回退到刚才最新的版本可以使用它

image-20211128092137839

对提交的文件进行回退或前进版本

git reset --hard 【要回退或前进的版本索引】 #提交的文件回退或前进到当前索引版

hard参数表明本地库暂存区工作区都一并回退或前进,mixed参数表明暂存区和本地仓库一起回退或前进版本,soft参数表明只有本地库回退或前进版本。

image-20210705145039433

删除文件

git add 【文件名】 #同步到暂存区否则不在日志中记录(图片中忘记了)
git commit -m “” 【文件名】 #先保存到暂存区(不加指定文件名就是所有文件) 以保证可以回退
rm 【文件名】 #移除工作区的指定文件
git commit -m “” 【文件名】 #提交修改(不加指定文件名就是所有文件)
git commit --amend #修改-m后的注释信息

image-20210705150137120

还原文件即查看日志回退到上个版本即可

比较差异

git diff [索引] [文件名] #加索引就是比较暂存区和本地仓库,不加比较的是暂存区和工作区
git diff <local branch> <remote>/<remote branch> # git比较本地仓库和远程仓库的差异

分支

image-20210705154136337

创建分支会将主分支进行复制,在主分支的基础上进行版本更新

git branch -v #查看分支
git branch 【分支名】 #创建分支
git checkout 【分支名】 #切换分支

image-20210705194038821

git merge 【进行合并的分支名称】 #合并分支
合并出现冲突,主分支和副分支都对同一文件同一位置进行了更改

image-20210705200138895

image-20210705194741330

解决:

公司内部商定一个最终结果(删除一个还是合并等等),最终添加到暂存区提交到本地仓库,注意commit后不能指定文件名,否则提交失败。

image-20210705200343998

实战

连接gitHup远程仓库

git remote add 【别名】 【GitHub远程仓库连接】 #远程仓库起别名
git remote -v #查看远程仓库别名

image-20210705202505297

推送到远程仓库Push

建立追踪关系

本地分支 映射 远程分支

git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”<远程主机名>/master分支。

git branch -vv # 查看追踪关系
# 建立追踪关系的三个方式
1.手动
git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>
2.push时建立追踪关系
git push -u <远程主机名> <本地分支名>
# 加上-u参数,这样push时,本地指定分支就和远程主机的同名分支建立追踪关系,没有就新建。
3.新建分支时建立跟踪关系
git checkout -b <本地分支名> <远程主机名>/<远程分支名>
# 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

img

这里可以看到 dev 分支正在跟踪 origin/dev 分支并且是最新的,也能看到 issue-101 分支正在跟踪 origin/issue-101 分支并且是最新的,接下来可以看到 master 分支正在跟踪 origin/master 分支并且 “ahead”是21,意味着本地有21个提交还没有推送到服务器。

git push -u <远程主机名> <本地分支名>:<远程分支名>

加上-u参数,这样push时,本地指定分支就和远程主机的同名分支建立追踪关系。

下次就不需要再加映射关系了

git push <远程主机名> <本地分支名>:<远程分支名>

#如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
git push <远程主机名> <本地分支名> 

#慎用!删除远程仓库的分支
git push <远程主机名> :<远程分支名>
# 等同于
git push <远程主机名> --delete <远程分支名>

image-20210705203017329

从远程仓库克隆代码

git clone 【远程仓库地址】

image-20210705203545820

image-20210705203727705

从远程库拉取代码Pull

pull操作原理
git pull <远程主机名> <远程分支名>:<本地分支名> #不会建立映射关系
git pull <远程主机名> <远程分支名> #远程分支(master)要与当前分支合并,则冒号后面的部分可以省略。相当于指定分支的代码与当前分支的代码合并到了一起。

== git fetch + git merge

git fetch 【别名或远程仓库地址】【分支】
git checkout 【别名或远程仓库地址/分支】  #这两个操作比较保险

image-20210705205358347

查看完远程仓库分支记得切换回本地仓库分支

git checkout master #切回本地仓库分支
git merge 【远程仓库名/分支】 #合并

image-20210705205902684

团队协作冲突

image-20210705212904571

解决

原因其他成员对同文件同一行进行了更新,导致冲突,本人不能push会失败,先pull下远程仓库的最新内容,本人进行修改,修改好之后add到暂存区之后进行commit即可解决冲突。

git push 失败,可能是本地仓库和远程仓库不同步(本地仓库误删了什么东西导致的)
git pull 一下应该能解决问题,(把远程仓库拉下来同步)

跨团队合作

image-20210705224259598

image-20210705224713470

A项目经理提供远程仓库地址,B公司程序员fork这个远程仓库地址,B程序员就可克隆到本地进行修改。之后创建一个Pull Request,等待A项目经理进行审核是否通过!

image-20210705225127775

SSH免密登录

进入用户主目录

$ cd ~

主目录生成.ssh文件

$ ssh-keygen -t rsa -C 2481713248@qq.com #gitHub邮箱,之后按三次回车,C一定大写

image-20210705230544587

.ssh目录下有两个文件,高级记事本打开id_rsa.pub进行复制操作,粘贴到GitHubSSH中,

image-20210705230852568

image-20210705231018452

粘贴进去

image-20210705231048180

起SSH地址别名,以后本机提交就不用重复验证身份输入账户密码了

IDEA配置Git

image-20210706092423538

本地库的初始化操作

会在当前工程文件夹下生成.git的文件夹。

image-20210706092659981

添加到暂存区

image-20210706093123990

image-20210706093333219

提交到本地仓库

https://gitee.com/stevehan123/picture/raw/master/image-20210706093455945.png

image-20210706093707428

image-20210706094506402

更新

更改文件内容后右键进行add,commit再次提交。

image-20210706095124666

拉取和推送资源到远程仓库

重点:push之前一定要pull下是否有冲突(其他人修改了远程库而你的本地库不是最新的),否则push失败!

两个不同的项目

推送到远程仓库之前需要先pull下远程仓库内容,如果远程仓库和本地仓库是两个不同的项目,所以需要加上相关参数,--allow-unrelated-histories,告诉git不允许相关历史合并。

不同仓库不一样,所以使用别名前一定要先设置别名

git remote -v #查看别名
git remote add 【别名】 【GitHub远程仓库连接】 #远程仓库起别名

image-20210706101104139

git pull 【别名或远程仓库地址】【分支】 --allow-unrelated-histories
git pull giteeTest master --allow-unrelated-histories
pull出现问题,工作区有更新未提交到本地库。原因因为IDEA隐藏了.iml等文件需要在本地用git add添加到暂存区,commit提交到本地仓库。
error: Your local changes to the following files would be overwritten by merge:
  .idea/.gitignore .idea/compiler.xml .idea/encodings.xml .idea/inspectionProfiles/profiles_settings.xml .idea/jarRepositories.xml .idea/misc.xml .idea/vcs.xml .idea/workspace.xml 常考算法.iml
两个不同的项目进行合并时需要加的注释信息

加注释:按i键插入注释,之后按ESC和:wq进行保存

不加注释:直接:wq退出即可

image-20210706111022828

image-20210706102740036

同一个项目

pull出现冲突:原因其他人修改了远程库而你的本地库未更新而你也修改了同一文件同一位置。解决方法,push前pull一下项目到本地商议修改合并结果之后add进暂存区commit进本地库,之后在push。

IDEA工作中

clone命令操作远程库到本地

clone操作就不用初始化本地库了

image-20210706104300375
image-20210706104434531

其余同上。。。

GitHub操作

删除分支

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Steve_hanhaiLong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值