安装git后, 必须在git bash命令设置全局 用户名 和全局邮箱, 否则不能提交代码

git config --global user.name "sino"

git config --global user.email "51940196@qq.com"

查看你设置的 用户名 和 邮箱
git config --global --list


如果使用SSH公钥下载代码。 必须在git bash命令执行如下命令。 

ssh-keygen -t rsa -C "51940196@qq.com"  并连续回车(注意 不要输y)

将C:\Users\Sino\.ssh\id_rsa.pub 用记事本打开, 并粘贴到GitLab的ssh公钥处
​
Git 的 “master” 分支并不是一个特殊分支。之所以几乎每一个仓库都有 master 分支,是因为git init命令默认创建它

push的时候是不能选择性push的, 即使你选择,也是全部push已经commit的代码

在Github上如果看到有很不错的项目和作品,
一般我们可以进行三种操作:那就是watch, star和fork.
Watch也就是关注该repo的动态,
star则类似于Facebook和Twitter上的”like”,
fork (中文翻译为 派生)就是将别人的项目拷贝一份给自己,new一个新的分支(Branch)出来,你push的改进和补充则又由原作者选择是否接受。

​

idea git merge更新完, 自动commit了, 你只需要push

下图no--commit模式就是pull完不提交代码

从远程其他分支pull代码到自己分支的操作步骤:

1. 按下图操作选择master分支 pull to wangxinle分支


 

2. 把更新到wangxinle分支的代码, 都push上去(这里可能包含其他人提交的代码) , 发起合并请求的时候  git会自动对比 如果wangxinle分支和master目标分支没变化, 那么提交记录里就没有相应的代码记录

如何发起 Merge Request?

1. dev分支拉取wangxinle分支进行开发, push代码到wangxinle远程仓.

2. 发起MR. (wangxinle 作为源分支-> dev分支作为目标分支)

如何上传代码到GitHub/码云?

### 前提是在GitHub/码云 页面建好代码仓

进入电脑磁盘下的项目名, 因为没有纳入版本控制,所以没有 .git文件, 
你只需要打开git bash, 执行如下第一步 第二步, 后面345可以不用, 用idea提交push代码了.
1. git init
2. git remote add origin 代码仓地址
3. git add .  会把所有文件都添加git来管理(慎用 除非你把taget .idea删了)
4. git commit -m "first commit"
5. git push -u origin master    如果idea push失败,那么可能是你的github账号权限不足,找项目经理给你分配管理员权限

如何回退已经push的代码?

gitlab回退已经push的代码(完全删除​​ GitLab 上的某次 push 记录):

但是不建议使用gitlab页面点击项目已经合入的记录revert页面操作, 因为会有2条记录,

推荐使用 force push强推:
​​操作步骤​​(彻底删除 GitLab 上的提交记录)

​​1. 确保你有权限强制推送(force push)​​
​​受保护分支(Protected Branches)​​(如 main/master)默认禁止 force push,需要管理员权限解除保护。
​​非保护分支​​ 可以直接强制推送。

​​2. 找到要回退到的目标 commit​​
git log --oneline  # 查看提交历史,找到你要回退到的 commit
例如:

a1b2c3d (HEAD -> main) Bad commit 3
d4e5f6g Bad commit 2
8a197d8 Good commit 1  <-- 我要回退到这里

​​3. 强制回退本地仓库​​(如果记不清提交号, 可以回退多次, 看代码的变化)
git reset --hard 8a197d8  # 回退到目标 commit(丢弃之后的所有提交)
⚠️ ​​危险操作​​:--hard 会 ​​丢弃所有未提交的更改​​,确保你已备份重要代码。

​​4. 强制推送到远程仓库(覆盖 GitLab 历史)​​
git push origin dev --force
# 或简写:
git push origin dev -f
​​强制推送 (-f/--force)​​ 会 ​​覆盖远程分支​​,使 GitLab 上的提交记录与本地一致,​​删除之后的提交​​。


对本地已经合入的代码用reset , 然后 force push强推, 可能会覆盖其他同事已经合入的代码.
注意强推之前需要更新代码.    最好是不使用强推这种方式, 因为有风险


回退本地idea已经commit的代码:

直接 alt+9   
选择提交记录的下一条,
右键 reset current branch 注意请选择soft模式。
 
soft模式 加入git库的操作不会回退。 
mixed模式会将加入版本库的操作也回退为红色

如何cherry-pick代码?

cherry-pick 就是将开发分支提交的的代码(多次)merge到main主干分支
(选中自己commit的多条记录,右键cherry-pick)

如何代码暂存? 推荐方式2

使用场景一: 将master分支上的开发内容(你错误的选择了master分支, 实际要在wangxinle分支开发)转移到自己的分支上

使用场景二: 如yml配置文件修改了, 你又要切到其他分支开发, 那么就可以将当前分支的yml暂存起来. 当其他分支开发完了, 再切回到修改yml的分支,将暂存的代码取出来

1. 使用git的 stash changes / unstash changes  

2. 使用idea 自带的 Shelve / Unshelve

如何使用GitLab--fork库开发? 

fork库的dev分支拉取wangxinle分支开发, 更新是从目标的dev分支跟心代码,最后发起MR是把wangxinle的分支合入 目标dev分支

开源项目一般都是这种fork库开发模式,你push的改进和补充则又由原作者选择是否接受。

注意fork库的SSH 和 原代码仓的SSH下载链接是不同的

怎么考虑分支呢? idea 打开fork库的项目, 选择一个分支开发or 拉取一个新分支开发, 代码都push到fork仓后, 就可以在我的项目的fork库项目来发起MR了

1.在gitHub页面进入项目, 点击fork图标, fork该项目为自己的fork库, 然后点击clone(SSH模式clone代码)
2.git remote add target 目标分支的SHH链接地址, 此步骤为添加追踪源代码仓,用来从目标分支更新代码到自己本地的fork库(你在本地开发完后,先commit代码, 然后更新目标分支代码到本地,最后push到自己fork库

3.基于fork库发起 Merge Request. (远程fork库 指向 目标仓库)
4.git remote -v  查看 本地fork库SSH链接 和 源代码仓的SSH链接  一定要不通, 如果添加错误可以

git remote remove target   将已经添加追踪的源代码仓删掉
git remote add target 目标分支的SHH      重新添加追踪的源代码仓

一次push代码(多次push没法一条), 在gitee只有一条提交记录且不包含merge更新代码的痕迹?

即一次Merge Request 只有一条提交记录

1.使用idea的rebase更新代码, 这样git log的操作记录就是一条线, 更新的git log会出现在你本地commit的下方, 你只需选中本地多次提交的comit记录(注意不包括位于git log下方rebase 更新的记录,这里如果你不知道选几条, 可以试着push一下, 就可以看到commit message的记录数, 就是你要选的条数, 也可以直接根据commit message 的内容, 因为一般都是一样的, 来选择要Squash压缩的条数)使用Squash压缩为一条(推荐), 最后push即可

2.如果你使用 git pull --rebase 命令更新,那么就需要手动解决冲突, 当有冲突时,rebase就会停止, 变为箭头,手动解决完冲突,在alt+f12执行git add 将红色文件加入版本控制, 然后输入 git rebase --continue 或点击idea右下角的 Rebasing分支名(点击 rebase continue),继续解决冲突,继续 git add. 就ok了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐