赞
踩
修改git用户名、密码
git config --global user.name ‘cmy’
git config --global user.email ‘3036319203@qq.com’
git config --list
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 // 推送远程仓库
注意: 一定要有.gitignore文件,避免本地编译生成的class等文件上传
3、其他问题
(1)若第一次修改了文件commit后[执行git commit -m “init repository”],再次修改了文件但没push,此时可以使用追加提交命令【先add,再commit --amend --no-edit】
git commit --amend --no-edit // 同一个文件追加部分修改,无须修改提交注释
(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文件中设置的忽略设置**
1.首先获取git主分支的代码。
2.暂存所需要上传的代码。
3.拉取代码(如发生文件冲突先暂不处理)。
4.提交代码,然后再次拉取代码(不显示冲突跳下一步)。如果还是显示文件冲突报错,就需要去解决冲突的文件(这步重点),然后再去拉取代码。
5.推送代码。
1获取==》2暂存所有==》3拉取==》4提交==》5推送
1- 贮藏更改
2- 拉取
3- 弹出贮藏
4-提交
5-推送
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
//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
注意:git commit之前需要先让本地代码与GIT代码仓库同步,再提交
git代码不同命令 存放 不同位置图片如下:
背景:修改了启动的配置文件(.yml)等,不需要提交到仓库,方便开发测试时使用。
(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只使用git stash 也是可以的,但查找时不方便识别。*注意使用该命令时先使用git add 命令将文件添加到版本管理中
git stash 或 git stash save "save message"
//查看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
有其他的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。因此存在两个版本的差异
解法: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)如下:清除后:合并的项已处理成功,只剩下改动的项
执行git checkout filepath后再次 git diff – stat
解决后 文件上红色箭头消失
git add 添加文件到暂存区
git status 查看仓库当前的状态,显示有变更的文件。
git diff 比较文件的不同,即暂存区和工作区的差异。
git commit 提交暂存区到本地仓库。
git reset 回退版本。—谨慎使用(会清除git log历史提交记录),或用[git revert -v 版本号 ] 替代
git rm 将文件从暂存区和工作区中删除。
git mv 移动或重命名工作区文件。
git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并
git clean -d -fx
//如果希望用代码库中的文件完全覆盖本地工作版本
git reset --hard
执行以上2个命令仍无法解决,用下面的方式解决(注意会删除本地修改,执行前需要备份)
造成原因:小乌龟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前备份)
有冲突,自动合并失败;修改冲突后再提交结果
冲突java文件会有如下显示:
<<<<<<<< HEAD
自己写的代码
===============
别人写的代码
>>>>>>>>>>>>>>>56f6ea17ddd24e8c8eb28d5c6b952b10f181d622
解决方法:
若是实现相同功能而写的重复的代码,两个二选一删除一个,然后再把这些冲突标示符删除即可;若不是重复代码,两个都需要保留,只把冲突符号(红色部分)删除即可。
工程编译通过之后可以重新提交了,这时需要从头执行:
git add
git commit -m [message]
git pull
git push 把合并好的最新代码推送到服务器端[仓库?]—push慎用,避免不是自己修改的文件被推到仓库,覆盖别人
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
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
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 成功,弹框已消失
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。