Git实用命令指南

Git的工作原理

下图来自 这里
在这里插入图片描述
在这里插入图片描述

Git命令上传本地已有的repo到github

提醒:Pycharm图形化git操作有问题时请尝试一下命令行操作

  1. 首先需要在github上新建一个repo,这步不用多说
  2. git remote add origin [远程仓库地址]
    例如 git remote add origin https://github.com/jialee**/Myrepo.git
    就是把本地repo连接到github上https://github.com/jialee**/Myrepo.git 这个仓库地址,并创建别名为origin ,这个别名是自定义的,通常用origin
  3. git push -u origin master
    -u ,就是创建 upStream 上传流,如果没有这个上传流就无法将代码推送到 github;同时,这个 upStream 只需且必须要在初次推送代码的时候创建,以后就不用创建了。这一步允许之后会看到比如 Branch 'master' set up to track remote branch 'master' from 'origin'.所以可以发现这里其实就是吧本地的master track到远程repo(origin)的的master分支下。如果远程或者本地有多个分支,不设置upStream的话如何得知要上传哪个部分到那里呢?如果想上传到非默认的master分支下,也是可以指定的,使用 git branch --set-upstream-to=origin/new_branch new-branch # (远程)(本地)

Git命令在本地已有的repo基础上创建新分支并上传github

  1. 创建本地分支并切换到该分支
    git checkout -b 分支名

  2. 提交本地分支到远程仓库
    git push origin 本地分支名

  3. 将新建的本地分支与远程分支关联
    git branch --set-upstream-to=origin/远程分支名 本地分支名

  4. 新建没有父节点的孤儿分支(orphan),不会保留以前的版本记录
    git checkout --orphan branch 新分支名

检查:使用 git remote show origin查看远程和本地branch以及对应情况
在这里插入图片描述

使用Git撤销本地修改和回退版本

(1) 对于没有add/commit的文件撤销修改

在这里插入图片描述
补充说明:针对没有add或者commit的,使用checkout会直接把工作区的内容撤销更改,立刻肉眼可见把之前的改动清除了。
工作原理:此命令会使用 HEAD (指向你最后一次提交的结果)中的最新内容替换掉你的工作目录中的文件。已添加到暂存区(index/stage)的改动以及新文件都不会受到影响。

(2)对于已经add/commit但是还没push的文件

在这里插入图片描述
即为了防止远程服务器因为同步而覆盖此次操作,把当前撤销命令当作一个新的修改记录保存起来,使用:git revert [commit号]

(3)对于已经push到远程服务器的撤回/回退

在这里插入图片描述
注意,不加上面的 --force 会因为当前版本低于远程版本而失败,所以要强行覆盖

(4) push本地某新建分支到远程仓库

当地创建的新分支推送到远程新建的分支在推送之前,可能需要在远程新建仓库,并且把当地和远程的仓库联结起来,需要

To make your branch track a remote branch call
例如使用:

git branch --set-upstream-to=origin/new_branch new-branch # (远程)(本地)

(5) git revert 和 git reset的区别

在这里插入图片描述

chekout检出 和 断头detached HEAD的处理,以及stash

(1)使用checkout branch切换分支

(2) 断头detached HEAD的处理

在这里插入图片描述
git checkout -b 新分支名这句命令相当于git branch 分支名git checkout 分支名这两个命令的效果。

detached HEAD的处理具体可以参考:
https://blog.csdn.net/u011240877/article/details/76273335

注意:在checkout回主分支后,merge刚才由detached head创建的分支时,推荐使用pycharm自带的可视化merge功能,解决conflict.

(3)stash 贮匿

注意⚠️:必须是处于git下的文件,未add到git的文件无法使用。
在这里插入图片描述
具体stash命令说明见:这篇博客

Merge 以及 Conflict 的解决

首先要保证当前所处的Branck是正确的,否则首先 git checkout master 一下,再选择需要merge的分支,然后进行merge(如在pycharm中选中某一branch,右键然后选中merge into current branch)。
如果出现了冲突conflicts,推荐使用编辑器或者IDE如pycharm自带的diff功能,从冲突中选择我们想选用的版本(accept theirs or yours)。在pycharm中我们可以精细地挑选出不同版本中的代码片段,并且在merge conflicts的同时对源代码做一定对更改,然后apply一下,解决完冲突后,完成merge。

rebase (变基) 和 merge的用法区别

在本地rebase之后,本地的状态会插到远程仓库历史的最后面,效果如下:
在这里插入图片描述
然后可以把本地的改动merge之后推送到远程。

rebase 具有简化分支的作用,比如我已经修改了本地并有一个mycommit,但是之前还有一个oldcommit的记录,那么rebase 可以让oldcommit的变成根基(依据)来分析mycommit做了哪些改动。

.gitignore添加忽略git的文件

转自: 链接:https://www.jianshu.com/p/54c0b925fc47
在填写忽略文件的过程中,我发现在IntelliJ IDEA里面,.gitignore中已经标明忽略的文件目录下的文件,当我想git push的时候还会出现在push的目录中,原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理git中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了.git清除本地缓存命令如下:

只ignore某个文件,可以直接用下面这一条命令即可

git rm -r --cached filePath  # 仅仅将某一个文件(-r: 及其子目录)从缓存区中删除(从而不被git追踪了)。
git commit -m “remove xx”  # 提交本次修改(optional)

或者:
git rm -r --cached . # 取消当前目录下所有的git追踪
git add . # 注意:这会默认把项目中的所有文件都追踪了,最好还是手动一个个add进git.
git commit -m ‘update .gitignore’

来解释下几个参数 -r 是删除文件夹及其子目录 –cached 是删除暂存区里的文件而不删除工作区里的文件,第一种是删除某个文件,第二种方法就把所有暂存区里的文件删了,再加一遍,相当于更新了一遍。

git生成生成ssh密钥文件用于github

配置本地Git

转载自:https://zhuanlan.zhihu.com/p/78467553

对于windows系统鼠标右键打开Git Bash:


对于mac和linux之间进入命令行。

输入命令配置用户名和邮箱信息:
git config --global user.name “你的GitHub用户名”

git config --global user.email "你的GitHub注册邮箱"

生成ssh密钥文件:

ssh-keygen -t rsa -C "你的GitHub注册邮箱"

默认不设置密码,直接回车就行。

用文本编辑器打开生成的id_rsa.pub文件,Crtl+A,Ctrl+C复制全部内容。

设置github端

打开GitHub的SSH设置页面:SSH and GPG keys
New SSH key,Title任取,Key粘贴刚刚复制的字符串,Add SSH key

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值