当前位置:   article > 正文

常用git命令积累-git托管代码~持续更_git bash 执行的命令行保存在本地

git bash 执行的命令行保存在本地

git命令

修改git用户名、密码
git config --global user.name ‘cmy’
git config --global user.email ‘3036319203@qq.com’
git config --list

一、使用git托管代码—第一次把workspace的项目上传到仓库

1、首先在github上选择new repository(新建仓库),新建后页面如下,可按照github推荐的命令把工作空间代码与之建立联系
在这里插入图片描述
2、使用idea编译器推送代码至github步骤
打开terminal窗口(终端),在窗口中执行如下命令:

git init  //让git来管理代码
初始化后,在项目的.git中的config添加用户信息:name和email
// windows系统:此时workspace的项目中包含.git目录,把.git/config文件打开在其中加入
[user]
    name = Your Name
    email = your.email@example.com
若为Unix系统或其他,可在idea编译器的terminal窗口使用 vim .git/config,在出现的文字后米面加上上述内容


git status  //查看git管理的状态(workspace与仓库)
git add .   // 当前目录下的所有文件添加到暂存区
git commit -m "init repository"  // 提交到本地仓库
git status  //再次查看状态( 比较workspace与仓库)
git branch -M main  // 命名分支main
git remote add origin https://github.com/seeingAndThinking/community.git //提交远程仓库
git push -u origin main  // 推送远程仓库
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

注意: 一定要有.gitignore文件,避免本地编译生成的class等文件上传

3、其他问题
(1)若第一次修改了文件commit后[执行git commit -m “init repository”],再次修改了文件但没push,此时可以使用追加提交命令【先add,再commit --amend --no-edit】
git commit --amend --no-edit // 同一个文件追加部分修改,无须修改提交注释
add到暂存区,commit到本地仓库,push到远程仓库

(2)git add或git commit出现LF警告,解决方法如下:
若出现 LF(Line Feed,在 Unix 和类 Unix 系统上常见)和 CRLF(Carriage Return + Line Feed,在 Windows 系统上常见)警告
1\保持警告不变:如果不介意警告,可以不做任何改变。Git 会继续处理文件,并且可能会替换行尾格式为 CRLF。
2\手动修正行尾格式:可以使用文本编辑器或者命令行工具,确保 .gitignore 文件中的行尾格式为 LF。例如,在大多数文本编辑器中,你可以选择保存文件时使用 Unix 风格的行尾格式。
3\Git 配置处理:可以在 Git 配置中设置 core.autocrlf 选项来控制行尾格式的自动转换行为。例如:
执行git config --global core.autocrlf input
(3) 第一次git push时遇到警告:fatal: The current branch main has no upstream branch.
在这里插入图片描述
解决方法:
1、设置当前分支的 upstream:使用 git push --set-upstream origin main命令,将本地的 main 分支与远程仓库的 main 分支建立关联,并设置为 upstream;这个命令会将当前分支(main 分支)的推送操作关联到远程仓库(origin)的 main 分支上。
2、推送当前分支:
一旦设置了 upstream,以后推送代码时可以简化为 git push
3、自动设置远程分支(可选):
如果希望 Git 自动设置远程分支的 upstream,可以配置 push.autoSetupRemote 选项。你可以通过以下命令进行配置:git config --global push.autoSetupRemote true
这样,对于本地分支如果没有设置过 upstream,则在第一次推送时会自动设置与远程分支的关联。

笔者第一次workspace推送远程仓库使用的第三种,成功后,github上显示了代码,项目中非编译后的代码上传,忽略了某些文件
在这里插入图片描述
在这里插入图片描述
项目中只有关键代码推送至远程仓库,这得益于**.gitignore文件中设置的忽略设置**
在这里插入图片描述

二、git三种方式提交(小乌龟 Sourcetree )

1- Sourcetree 提交

1.首先获取git主分支的代码。
2.暂存所需要上传的代码。
3.拉取代码(如发生文件冲突先暂不处理)。
4.提交代码,然后再次拉取代码(不显示冲突跳下一步)。如果还是显示文件冲突报错,就需要去解决冲突的文件(这步重点),然后再去拉取代码。
5.推送代码。

1获取==》2暂存所有==》3拉取==》4提交==》5推送

2- 小乌龟提交

1- 贮藏更改
2- 拉取
3- 弹出贮藏
4-提交
5-推送

3- git提交操作流程:

git stash 或 git stash save “描述” 同步前先暂存你修改的内容
git pull 同步服务器最新代码
git stash apply 弹出暂存的修改
git status 查看修改的文件
git add [文件] .表示所有文件,也可以单独指定要提交的文件名
git commit -m “描述”
git push [远程分支] [本地分支] 或者是 git push - u origin dev 推送到远程服务器
如果有冲突情况下:
1- git pull 提示失败
2- git add . 和 git commit -m ‘提交本地’ 把本地的提交
3- git push 提示 有冲突,解决冲突
4- 解决完后,重新 git add . 和 git commit -m ‘提交远程解决冲突’
5- git push 提示成功

git 扩展:
git restore 文件名 取消修改文件

git restore --staged 文件名 将暂存区的文件从暂存区撤出,但不会更改文件(解决冲突)

从更改文件到添加到暂存区再到从暂存区撤出

git stash 系列

git stash drop 删除贮藏文件名 例如 git stash drop stash@{0}

(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
(2)git stash list :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{KaTeX parse error: Expected ‘EOF’, got ‘}’ at position 4: num}̲,比如第二个 git stas…num} -p ,比如第二个:git stash show stash@{1} -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{KaTeX parse error: Expected ‘EOF’, got ‘}’ at position 4: num}̲ , 比如第二个:git st…num} ,比如应用并删除第二个:git stash pop stash@{1}
(7)git stash drop stash@{KaTeX parse error: Expected ‘EOF’, got ‘}’ at position 4: num}̲ :丢弃stash@{num}存储,从列表中删除这个存储
(8)git stash clear :删除所有缓存的stash
————————————————

原文链接:https://blog.csdn.net/AAAXiaoApple/article/details/120739959

三、提交代码步骤[使用git bash黑窗口]

//1、检查本地与仓库有哪些修改 不同---查看仓库当前的状态,显示有变更的文件
git status
//2、若有修改则根据git bash窗口提示的命令对文件git add 或者git restore
//文件写入暂存区---添加文件到暂存区
git add "src/kcbh/api/ghcg/"
git add "src/kcbh/ckqgl/modules/viewGhfb.vue"
//提交暂存区到本地仓库中 [file],没有推到远程仓库--若想直接由暂存器提交远程仓库可使用git commit -am
git commit -m [message]
//恢复文件---取消工作区的修改
git restore "src/kcbh/api/ghcg/"
git restore "src/kcbh/ckqgl/modules/viewGhfb.vue"
//3、是否需要git  push 到远程仓库---
git  push origin master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注意:git commit之前需要先让本地代码与GIT代码仓库同步,再提交
git status

四、stash 本地修改的文件放在暂存区

git代码不同命令 存放 不同位置图片如下:
Git图形解释

背景:修改了启动的配置文件(.yml)等,不需要提交到仓库,方便开发测试时使用。
(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只使用git stash 也是可以的,但查找时不方便识别。*注意使用该命令时先使用git add 命令将文件添加到版本管理中

git stash  或   git stash save "save message"
  • 1
//查看stash了哪些存储
git stash list
//应用某个存储,不会把存储从暂存区中删除,默认使用第一个存储,即stash@{0}
git stash apply
//使用第二个  git stash apply stash@{$num}   
git stash apply stash@{1}
//命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,默认stash@{0}
git stash pop
//删除第二个  git stash pop stash@{$num}
git stash pop stash@{1}
//删除这个存储 stash@{$num}
git stash drop stash@{$num}
//删除所有缓存的stash
git stash clear
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

有其他的stash命令未列出
Ps: 案例1:stash pop后java代码上有红色双箭头(同步仓库时冲突),但工程编译通过,丢弃本地该java文件(restore命令)报错如下:
error: path “file_paht” is unmerged
笔者执行顺序
//把文件放到暂存区
git add MineBaseCkq.java
// 暂存区 存储到stagingArea —这里不太理解??
git stash save ‘使用oracle语句’
git pull //本地pull仓库最新代码
git stash apply 或者 git stash pop //注意两者有区别,是否删除暂存区某内容
在这里插入图片描述
提示错误:没有合并,导致无法丢弃文件,我需要达成的效果:丢弃文件,切换其他分支(仓库已提交的文件)
清除前 文件存在差异
git diff --stat 命令比对本地停留的分支和其跟踪的远程分支的内容是否一致,都有哪些文件在本地进行了修改。如果有改动,则以列表的形式展现出来。如果没有改动,就返回空行输出。

    其实这里已经提示了这个文件有改动,并且没有merge。因此存在两个版本的差异
  • 1

git diff -stat
解法:bash目录在entity夹下(或称 bean)

//把缓存区的这份存档清除掉,然后再丢弃
git reset MineBaseCkq.java
//验证一下 缓存区的存档是否清除成功
git diff --stat  // 命令结果 :合并的项已处理成功,只剩下改动的项 
//git checkout .  [丢弃本地的所有改动内容,恢复到此分支同其跟踪分支相同的状态。“.”表示匹配所有的改动文件]   此处指定具体的文件路径来定点清除
git checkout MineBaseCkq.java
git diff --stat   //此时可以看到,本地已经没有任何改动的文件
笔者命令到此结束,没有切换分支(笔者分支一直是 origin master)

//  是否执行后续  切换分支 git checkout [feature_name]   
//git  checkout dev
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述
命令执行顺序即结果图(图1、图2)如下:清除后:合并的项已处理成功,只剩下改动的项
图1
执行git checkout filepath后再次 git diff – stat
图2
解决后 文件上红色箭头消失

五、提交与修改涉及命令

git add 添加文件到暂存区
git status 查看仓库当前的状态,显示有变更的文件。
git diff 比较文件的不同,即暂存区和工作区的差异。
git commit 提交暂存区到本地仓库。
git reset 回退版本。—谨慎使用(会清除git log历史提交记录),或用[git revert -v 版本号 ] 替代
git rm 将文件从暂存区和工作区中删除。
git mv 移动或重命名工作区文件。

4\远程操作涉及命令

git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并

5\提交时可能会报的错误并解决方法

(1)untracked working tree files would be overwritten by merge

git clean -d -fx
//如果希望用代码库中的文件完全覆盖本地工作版本
git reset --hard
执行以上2个命令仍无法解决,用下面的方式解决(注意会删除本地修改,执行前需要备份

git status时 git出现Your branch and ‘origin/master’ have diverged解决方法

造成原因:小乌龟git 没有同步仓库(sync),直接commit后push失败,再执行pull与push命令都报
untracked working tree files would be overwritten by merge:file…
报错

报错
解决方法如下注意分支(分支有可能是development)
如果不需要保留本地的修改,只要执行下面两步:
git fetch origin
git reset --hard origin/master
当我们在本地提交到远程仓库的时候,如果遇到上述问题,我们可以首先使用如下命令:
git rebase origin/master
然后使用
git pull --rebase
最后使用
git push origin master
把内容提交到远程仓库上。
执行命令结果图:(命令执行完后,commit成功但push失败的文件工作区消失了,记得执行fetch前备份)
在这里插入图片描述

(2)AutoMatic merge failed;fix conflicts and then commit the result

有冲突,自动合并失败;修改冲突后再提交结果
冲突java文件会有如下显示:

<<<<<<<< HEAD
自己写的代码

===============
          别人写的代码

>>>>>>>>>>>>>>>56f6ea17ddd24e8c8eb28d5c6b952b10f181d622
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

解决方法:
若是实现相同功能而写的重复的代码,两个二选一删除一个,然后再把这些冲突标示符删除即可;若不是重复代码,两个都需要保留,只把冲突符号(红色部分)删除即可。
工程编译通过之后可以重新提交了,这时需要从头执行:
git add
git commit -m [message]
git pull
git push 把合并好的最新代码推送到服务器端[仓库?]—push慎用,避免不是自己修改的文件被推到仓库,覆盖别人

六、使用git遇到的bug

1、使用git clone http协议无法clone

bug: RPC failed; curl 18 transfer closed with outstanding read data remaining

$ git clone http://10.233.1.18:8088/Lucky/jtonemap.git
Cloning into 'jtonemap'...
remote: Enumerating objects: 1402, done.
remote: Counting objects: 100% (1402/1402), done.
remote: Compressing objects: 100% (858/858), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

solution:
1、使用ssh协议—推荐
避免 git clone https://github.com/vaibhavjain2/xxx.git - Avoid
正确 git clone git@github.com:vaibhavjain2/xxx.git - Correct
2、生成ssh key
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
3、增量缓冲区大小–https
git config --global http.postBuffer 524288000
例子:

git clone http://10.233.1.18:8088/Lucky/jtonemap.git --depth 1
git clone git@10.233.1.18:Lucky/jtonemap.git
  • 1
  • 2

2、TortoiseGit一直弹出密码框TortoiseGitPlink

TortoiseGit中git pull时一直弹框,可能没有配置 SSH 密钥或者 SSH 密钥不正确,导致 Git 无法自动进行身份验证 ,配置 SSH 密钥如下
解决步骤:
1)开始处搜索TortoiseGit文件夹,打开所在文件夹,双击“PuTTYgen”文件
2)点击Generate,会自动生成一个SSH-Key,PS:在生成key的时候鼠标要一直在进度条上滑动,只有这样进度条才会移动
在这里插入图片描述
3)生成后,点击Save private key按钮,自己设置保存位置,并记住此路径
在这里插入图片描述
4)将生成的key(putty弹框中key)复制粘贴到Gitlab区域中去,添加该密钥
5)开始处搜索TortoiseGit文件夹,打开所在文件夹,双击Pageant打开,双击运行之后在右下角会显示图标
在这里插入图片描述

6)右键该图标,点击Add Key,在弹出的文件夹界面中选择保存的密钥文件即可,再次使用TortoiseGit去git pull 成功,弹框已消失

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/929572
推荐阅读
相关标签
  

闽ICP备14008679号