由于不会Git被老板好好教训,学会PyCharm内置Git工具让老板刮目相看!(包含PyCharm 中如何Git merge 冲突)

1写在前面:

最近因为不会Git,被老板狠狠的骂了一顿,呜呜,

另外如果不在linux 或者非要纯命令行的情况下,建议上手PyCharm内置的Git很好使用.(疯狂打脸)

因为如果你非要用命令行 在合并冲突的时候 还得用VSCode手动合并冲突(或者大神可以用Vim),去分清<<<<<<<<<<===========>>>>>>>>>>>>到底谁是谁,还不如用好现成的PyCharm内置的Git工具.

嘻嘻,谁让我就想摸鱼呢

2找个文件夹克隆到本地 强烈建议不要命名中文(兵家大忌)

首先假设我们有一个仓库:

https://gitee.com/zhangsen1607212422/test.git

(这里用个人的私密仓库作为举例)

另外也许有人会报一个错误 什么什么什么 safe.directory的错误(在pycharm 的命令行中)

查看所有的safe.directory  :

git config --global --get-all safe.directory     

发现safe.directory中没有当前报错的这个文件夹  或者什么都没有(为空)

添加一下当前的文件夹 git config --global --add safe.directory 'xxxxxxxxxx'

然后 再查看一下就有了

当然也可以 清空 整个safe.directory  使用: git config --global --unset-all safe.directory

或者单独去掉某一个文件夹,不再赘述

当然也有个治标也治本的方法: 在c盘用户 用户面下有以哦个 .gitconfig文件,按照下图修改就可以。

3假设我的远程仓库是下面的情况:

有两个分支,其中有一个maser分支

另外一个feature/perf

看不懂 有疑问  不用管     一般公司都会有好几个分支,有已经上线的 还有正在开发的分支

本地分支情况:

一般克隆下来就只有一个master分支

或者命令行中查看分支情况

git branch -a

* master

 remotes/origin/HEAD -> origin/master

 remotes/origin/feature/perf

 remotes/origin/master

仔细看 上面命令行红色的是远程分支  绿色和白色是本地的分支  

 *代表当前所在的分支(是绿色的)

4开始正式的开发

  • 为了模拟正常的工作,我们多创建一个本地分支,可以用命令行 git branch -b xxxxx

或者在PyCharm中

可以发现我们当前所在的分支变成了feature/perf

  • 使用命令      git branch -vv       查看本地分支和远程分支的关系,可以发现本地master和远程的master分支绑定了(蓝色色那一串,仔细看下 origin是远程分支的意思)

  • 为了让在PyCharm Git工具中push 或者pull 的时候不需要每次输入指定的分支路径

  • 我们应该 绑定下 本地分支和远程分支的情况 (或者需要更换绑定关系也需要这个命令)

  git branch -u origin/远程分支名 本地分支名

5拉区远程分支,当你准备要push时候,养成pull 的习惯

6修改工作区代码并提交

提交版本变化 git commit -m "xxxxx"

Push 到远程仓库 git push origin 远程仓库xxxxx

7但实际上一般会更容易出现另一种情况 (如何解决冲突)

1就是你拉取的代码后

2在本地上做出了修改

3但没来得及push 远程仓库已经又更新了(别人push了新的版本)

相当于你落后远程的版本了

或者是每当你完成一个功能,准备push 时候, 你开发用了10年 这个时候别人都不知道push 多少个版本了, 你又舍不得自己完成的功能 很想也push上去

7.1假设你起初 跟的上版本的内容是: (就是别人还没push呢 即 你是最近的一次push者)

7.2现在你花了年完成了一个任务 想push了

假设这10年别人push到远程好几个新的版本 最终修改了这三个文件和你本地不同

7.3你在push前(commit 后)需要先拉别人的代码(养成好习惯)

或者说不是习惯,而是必须要做的,而且要勤pull ,这样不至于落后太多版本

还是和上面一样点 蓝色的朝左下的箭头 然后选择合并

冲突解决完了, 再次进行一下 commit 和push

8.如何删除远程分支的文件(不小心多上传了)

我明明已经在 .gitignore 中声明过了,但是远程还有那个文件? 一般是因为 这些文件依然被track(也就是被git add 追踪)

可以查看哪些被track了: git ls-files

可以 只删除这些track文件 gittrack文件 : git rm --cache  xxxx

当然也可以连本地的(如果目前还有这个文件夹)也删除了: git rm xxxx

如何是一个目录: git rm   -r  --cache  xxxx

删完以后,还要进行一次  git  commit

9.关联多个远程仓库

可以使用命令添加,或者直接动在 .git/config 文件里添加。

比如一个项目同时关联一个 Github 仓库和一个 Gitee 仓库,添加一个 remote 就是了,比如:

[remote "github"]
    url = https://github.com/rdif/xxxx.git
    fetch = +refs/heads/*:refs/remotes/github/*
[remote "gitee"]
    url = https://gitee.com/xxxx/xxxx.git
    fetch = +refs/heads/*:refs/remotes/gitee/*
[remote "all"]
    url = https://github.com/rdif/xxxx.git
    url = https://gitee.com/xxxx/xxxx.git
    fetch = +refs/heads/*:refs/remotes/all/*

或者 使用命令:git remote add  远程分支的本地代名词  远程仓库URL

比如  git remote add github  https:xxxxx.git   

也就是说后面的URL在本地的代名词是 github,后面 push 的时候  可以使用命令:

git push 远程分支的本地代名词  本地分支名字:远程分支名字

比如  git push  origin  main :master   这里 origin 只是远程分支的代名词

上面添加了多个远程仓库 以后就可以 git push github ​​​​​​  main: master 

这样当我们提交代码的时候,想提交到 Github 就用 git push github master,想同时提交到 Github 和 Gitee 的仓库,只需要 git push all master 即可,这里master 是远程分支名字

10删除分支 恢复分支  重命名

# 删除本地 test 分支
git branch -d test
# 删除远程主机的 master 分支
git push origin -d master

10.1删除分支后恢复

# 查看记录,找到对应的 hash值
git reflog
# 创建test分支,并取对应hash分支所有内容,相当于恢复了被删除的分支
git checkout -b test hash值

10.2重命名分支

# 把本地的 master 分支重命名为 test
git branch -m master test

# 远程分支没法直接重命名,只能删了重建,主要分几步
# 1. git push origin -d test 删除远程分支
# 2. git push origin newtest 上传新的远程分支
# 3. 把修改后的本地分支关联远程分支
 git branch -u origin/远程分支名 本地分支名

还不如直接去网页直接修改

比较版本之间的差异

这个就不建议用命令行了

如果用pycharm 的话:  只能对比当前的修改,和前面  某一个版本的对比

步骤4时候选一个 要和本地对比的版本  5.选择对比这个功能

接着就可以对比了:

一些其他有用的:

git commit

假设你对刚才commit 的内容有一次很小的更改,但你不希望历史记录中出现关于当前代码的多次记录,你可以使用下面的命令这些更改合并到前一次提交中

git commit --amend -m "新的提交信息"
 

git pull

拉取某个分支的内容:
git pull <远程主机名> <远程分支名>:<本地分支名>

贮藏 git stash

git stash 常用于把修改储存起来,需要的时候再取出来。常用于:

  • 切换分支并且需要保留修改的时候
  • 切换分支并且需要把修改带到新的分支的时候
# 存储并添加备注,方便查找
git stash save '备注信息'

# 查看储存列表
git stash list

# 取出储存中最近一次的修改并删除储存记录
git stash pop

# 取出储存中的指定部分修改,stash@{0} 0是默认的不写也行,是啥只要查看储存列表你就知道了
git stash apply stash@{0}

# 删除指定储存
git stash drop stash@{1}

# 删除所有的储存
git stash clear

切换分支保留修改

有时候比如我们在 test 分支上开发了一半,由于某些原因需要切换到 master 分支,但现在又不想提交,又想保留修改并且不带到 master 分支上去,就可以这样:

# 把当前分支的修改储存起来
git stash
# 切换到其他分支干你的事
git checkout master
# 干完了
# 切换回 test 分支
git checkout test
# 取出储存中所有的修改
git stash pop
# 删除所有的储存
git stash clear

切换分支转移修改

有的时候我们需要在 test 分支上开发,但是忘记了,活快干完了才发现当前原来是 master 分支,可是已经开发了,这时候就需要切换分支到 test,并且把已经开发的部分内容也从 master 分支带到 test 分支来,就可以这样:

# 储存master的修改
git stash
# 切换到 test 分支
git checkout test



# 取出储存中的全部修改
git stash pop




# 或者查看储存列表
git stash list
# 取出储存中的指定部分修改,stash@{0} 是啥只要查看储存列表你就知道了
git stash apply stash@{0}
# 再清掉储存
git stash clear

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值