git常用命令以及冲突解决
基本命令
删除公钥
rm ~/.ssh/id_rsa
rm ~/.ssh/id_rsa.pub
1. 生成公钥
ssh-keygen -t rsa -C "xxx@xxx.com"
2. 配置信息
git config --global user.name "xxx"
git config --global user.email "xxx@xxx.xx.x"
3. 连接远程仓库
git remote add origin 仓库地址
git remote add origin
// 例如
git remote add react xxxxxx.git
查看是否连接成功
git remote -v
删除连接 origin
git remote rm origin
4. 拉取分支代码
git pull origin 分支名
5. 创建分支并且切换
git add .
git commit -m "111"
git checkout -b xxxx
git checkout -b main
5.1 查看分支状态
git branch
6. 提交信息
git add .
git commit -m "提交的备注"
7.上传到新分支
git push origin main【分支名】
git push origin
冲突
原因 :
提交者的版本库信息 小于 远程库的版本
解决方法 首先保证 提交者的版本信息 和 远程库的版本信息是一致的 然后再提交
那么如何保证提交者的本地仓库和远程仓库版本一致呢?
使用 git pull
一,自动解决冲突
比如程序员 a 维护一个函数 a 的代码,程序员 b 维护 b 函数的代码
a 首先提交修改了 a 函数, 而 b 的本地并没有 a 修改的信息 导致 b 和远程仓库不一样导致的冲突, 需要先使用 git pull 把 程序员 a 提交的代码拉到自己本地 在 push 提交自己代码
PS C:\Mac\Home\Desktop\TTTTT\git-conflict-test> git push origin main
To https://git.xxxx.ac.kr/weierhang/git-conflict-test.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://git.xxx.ac.kr/xxx/git-conflict-test.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
二, 手动解决冲突
- 内容冲突\
如果多个开发者修改了同一段代码或同一个文件的不同部分,Git 将无法自动合并,需要手动解决冲突。例如:
- 程序员 A 和程序员 B 都修改了同一个函数。
- 在这种情况下,当程序员 B 执行
git pull后,会看到冲突标记,需要手动编辑有冲突的文件,选择保留哪部分修改或者进行合并。
手动打开冲突的文件内容
会看到这种
<<<<<<< HEAD
这是你的本地修改
=======
这是来自远程分支的修改
>>>>>>> 分支名
<<<<<<< HEAD表示你本地分支的更改。=======是分隔线,分隔本地更改和远程更改。>>>>>>> 分支名表示来自远程仓库的更改。
然后通过团队沟通看看需要保留哪一部分,或者将两者合并
- 如果你只想保留本地修改,可以删除冲突标记和远程分支的更改。
- 如果你只想保留远程分支的更改,则删除冲突标记和本地的更改。
- 如果你需要合并两者的修改,可以手动编写一个合并后的版本,并删除冲突标记。
编辑之后再使用
git add <冲突文件>
git commit
push
总的来说,Git 冲突可以分为两大类:自动解决的冲突和需要手动解决的冲突。
1. 自动解决的冲突
自动解决的冲突是指本地的版本库内容比远程仓库旧,但两者的更改互不干涉,Git 可以自动合并这些更改。例如,假设开发者 A 和 B 分别维护两个方法,A 修改并提交了 `methodA`,而 B 在不知情的情况下修改了 `methodB`。由于这两者的修改在不同的代码部分,不存在冲突,B 只需要执行 `git pull` 将 A 的更改拉取到本地,然后再 `git push`,Git 就能自动合并这些更改并推送到远程仓库。2. 需要手动解决的冲突
当多个开发者对同一个文件的同一部分做了不同的更改,Git 无法自动合并时,就需要手动解决冲突。这种情况又可以分为两种常见类型:内容冲突
内容冲突发生在两个开发者同时修改了同一个文件的同一行代码时。例如,A 修改了 `methodA` 并提交了更改,而 B 也修改了 `methodA` 并尝试提交。此时,B 会遇到冲突提示。B 需要先执行 `git pull` 将 A 的更改拉取到本地,文件中会显示冲突标记 `<<<<<<<`。然后,B 需要手动编辑冲突文件,选择保留谁的修改,或合并两者的代码。最后,删除冲突标记,执行 `git add` 和 `git commit` 解决冲突,并完成 `git push`。删除修改冲突
删除修改冲突发生在一个分支修改了文件,而另一个分支删除了同一个文件的情况下。例如,在 `branch1` 中对 `conflict.txt` 进行了修改,而在 `branch2` 中删除了这个文件。当尝试将 `branch2` 合并到 `branch1` 时,Git 无法确定是否应该保留该文件。这时可以通过 `git status` 查看哪些文件存在冲突,然后手动选择是保留文件还是删除文件,解决冲突后提交更改。3. 解决冲突的基本流程
无论是哪种冲突,解决的基本流程都是:- 执行
git pull拉取远程仓库的最新更改。 - 手动编辑冲突文件,解决冲突。
- 使用
git add将解决后的文件标记为已解决。 - 提交解决后的结果:
git commit。 - 重新推送到远程仓库:
git push。

浙公网安备 33010602011771号