30分钟看懂Git和GitHub常用操作
点击上方“AI算法与图像处理”,选择加"星标"或“置顶”
重磅干货,第一时间送达

作者 | 梁云1991
来源 | Python与算法之美
头图 | CSDN付费下载自视觉中国





-
git版本控制系统由工作区,缓存区,版本库组成。 -
git跟踪的是文件的修改而不是全部文件。 -
git擅长管理代码等文本文件,不擅长管理图片等二进制文件。


git config --global user.name "XX"
git config --global user.email "XX@XX"
mkdir git-learn
cd git-learn
git init
echo "hello world" >>readme.txt
git status
git add -A
git commit -m"comment"
git remote add origin https://github.com/XX/XX
git push -u origin master
git clone https://github.com/XX/XX ../XX
![]()
安装配置
-
config(配置信息) -
init(创建仓库) -
help(帮助信息) -
status(当前状态)
-
gitignore过滤文件(配置git无需管理的目录和文件)
#设置用户名:
git config --global user.name "XXX"
#设置用户邮箱:
git config --global user.email "XXX@XX"
#初始化仓库
git init
#获取常用git命令列表:
git help
#查看当前状态,获取提示:
git status
#过滤掉.DS_store文件
echo ".DS_store" >.gitignore
#过滤掉.ipynb_checkpoints目录
echo ".ipynb_checkpoints/" >> .gitignore
#过滤掉所有zip文件
echo "*.zip" >>.gitignore

-
add(修改暂存) -
commit(提交修改) -
reset(版本回退) -
checkout(撤销修改) -
rm(删除文件) -
diff(比较文件) -
log(版本列表) -
reflog(版本历史)
git reset HEAD^ #可以回退到上一个版本。git reset HEAD^^ #可以回退到上上个版本。git reset a234b3 #可以回退到版本号为 a234b3的版本。git reset --hard head^ #修改版本库,保留暂存区,保留工作区git reset --mixed head^ #修改版本库,修改暂存区,保留工作区git reset --soft head^ #修改版本库,保留暂存区,保留工作区
echo "hello world" >>readme.txtgit add readme.txtgit add -Agit commit -m"add readme.txt"#修改覆盖上一次commit:git commit --amend#先暂存再提交:git commit -a -m"modify readme.txt"
git reset --hard head^git reset head a23b5#撤销修改:git checkout -- readme.txt#图形显示仓库版本及分支状态:git log --oneline --graph --all#查看head指向过的版本历史:git reflog
git reset --soft a23b5 #版本库回退到某个版本,工作区保留修改git commit -m 'add feature' #将工作区的修改写到版本库中,a23b5到当前的日志被删除
echo "hello Haidian" readme.txtgit checkout -- readme.txt #使用暂存区内容覆盖文件
#查看工作区文件与暂存区文件区别:
git diff readme.txt
#查看工作区文件和head文件区别:
git diff --head readme.txt
#查看暂存区文件与head文件区别:
git diff --cached readme.txt
#查看两个版本某一文件的区别:
git diff a458b d23e5 -- readme.txt


-
remote(设置远程) -
push(推送远程) -
clone(克隆远程) -
pull(合并远程) -
fetch(拉取远程)
#通常可以用SSH协议和远程库通信或使用http协议和远程库通信。#http协议较为方便,但SSH协议方式速度较快。#运行下面命令,并一路回车,在用户主目录里找到.ssh目录。ssh-keygen -t rsa -C "your_emial@xxx.com"#目录下的id_rsa有私钥,不能泄露出去。里面的id_rsa.pub是公钥,可分享给别人。#在GitHub——> settings ——> SSH Keys 页面添加SSH公钥。#将公钥绑定github后尝试建立SSH连接:ssh -T git@github.com
#推送本地至远程库origin的master分支:git push -u origin master#查看远程库信息:git remote -v#移除和远程库的连接:git remote remove orgin
#建立当前master分支与远程库develop分支的追踪关系:
git branch --set-upstream master origin/develop
#将远程仓库克隆到本地父目录的ML文件夹:
git clone https://github.com/lyhue1991/machine-learning.git ../ML
#取回origin的develop分支与当前master分支合并(或会冲突):
git pull orgin/develop:master
#获取origin的develop分支到本地并用merge合并(pull≈fetch+merge):
git fetch origin develop
git merge origin/develop

-
branch(设置分支) -
checkout(切换分支) -
merge(合并分支) -
cherry-pick(采集提交) -
rebase(重演分支) -
stash(储藏管理) -
tag(标签管理)
#查看分支信息:git branch#当前head位置新建develop分支:git branch develop#创建并切换到名称为feature的新分支:git checkout -b feature#切换至master分支:git checkout master
#head处于develop分支,合并feature分支(或会冲突):git merge --no-ff -m"merge feature" feature#采集其它分支中版本号为a458b的commit提交至当前分支(或会冲突):git cherry-pick a458b#使用当前所在分支作为base重演develop分支(或会冲突):git rebase develop
git stash;git stash pop;git stash list;git stash save "message"git stash apply @2git tag;git tag v1.0;git tag v0.9 a2543d;#推送标签到远程(标签不会自动推送)git push origin v1.0#删除远程标签(先删本地,再push):git tag -d v0.9git push origin :refs/tags/v0.9
-
master: 主分支,主要用来版本发布。 -
develop:日常开发分支,该分支正常保存了开发的最新代码。 -
feature:具体的功能开发分支,只与 develop 分支交互。 -
release:release 分支可以认为是 master 分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release 分支,测试没有问题并且到了发布日期就合并到 master 分支,进行发布。 -
hotfix:线上 bug 修复分支。


下载1:速查表
在「AI算法与图像处理」公众号后台回复:速查表,即可下载21张 AI相关的查找表,包括 python基础,线性代数,scipy科学计算,numpy,kears,tensorflow等等
下载2 CVPR2020
在「AI算法与图像处理」公众号后台回复:CVPR2020,即可下载1467篇CVPR 2020论文 个人微信(如果没有备注不拉群!) 请注明:地区+学校/企业+研究方向+昵称
觉得有趣就点亮在看吧

评论