git本地仓库及远程仓库GitHub

Get Started

  • git 六行配置
  • 本地仓库的操作命令
  • 远程仓库GitHub
    • SSH key验证身份
    • 上传代码
    • 下载代码
    • git高级操作

git 六行配置

配置并建立一个git本地仓库。

λ git config --global user.name 名字

λ git config --global user.email 邮箱

λ git config --global push.default simple

λ git config --global core.quotepath false

λ git config --global core.editor "code --wait"

λ git config --global core.autocrlf input

λ git config --global --list
5user.name=名字
user.email=邮箱
push.default=simple
core.quotepath=false
core.editor=code --wait
core.autocrlf=input

本地仓库的操作命令

git就是一个命令。
git是一个分布式版本控制系统。与之前使用过的集中式版本控制svn不同的是git是把代码仓库完整地镜像下来,包括完整的历史记录。
git是对文件的快照,而不是差分。
在用过之后就会发现git的分支更加简便,灵活。

之前没用过git,有点好奇,然后再网上发现这里的git说明十分详细:
https://git-scm.com/book/zh/v2

git指令

  • git init:会创建.get目录(就是本地目录),用来容纳你的代码快照

  • git status
    ○ 查看当前文件状态(是否提交)

  • git add 路径
    ○ 选择那些变动时需要提交的,路径可以是绝对路径和相对路径 . 和*

  • .gitignore
    ○ 描述那些变量是不需要提交的。常见的有node_modules, .DS_Store, .idea, .vscode

  • get commit -m 字符串
    ○ 提交,并说明理由提交,字符串里如果有空格,就要用引号包起来

  • git commit -v
    ○ v是verbose选项,可以回顾刚刚改动的代码,能让我把提交理由写得更详细一些

  • git log
    ○ 显示之前的提交

  • git reset --hard 版本号
    ○ 复制前版本号(按q) 回到指定版本
    ○ commit 的号码,可以是6位,也可以是4位,也可以是 7位,只要是惟一的即可。

  • git reflog
    ○ 查看所有提交log
    ※ add一个文件的时候,reset --hard之后这个文件就会丢失。所以在代码要不就没提交,要不已经提交的状态reflog再reset --hard。

  • git branch x
    ○ 基于当前commit创建一个新的分支
    ○ 在哪个分支提交,代码就出现在哪个分支
    ○ 单独git branch,会提示现在有多少分支,带有*的是目前所在分支

  • git checkout x
    ○ 切换到另一个分支
    ○ 当前目录有未提交的代码,只要跟另一个分支不冲突,就不需要理会
    ○ 如果冲突了呢?可以使用git stash,也可以合并冲突

  • git merge x
    ○ 进入要保留的分支,运行git merge
    ○ 合并完后删除无用分支 git branch -d x

解决冲突的办法

  • 发现冲突
    ○ 在合并分支的时候,会得到conflict提示
    ○ 使用git status -sb 查看哪个/哪些文件冲突了
  • 解决冲突
    ○ 依次打开每个文件
    ○ 搜索====四个等号
    ○ 在上下两个部分中选择要保留的代码
    ○ 可以只选上面,也可以只选下面,也可以都选
    ○ 删除不用的代码,删除====>>>><<<<这些标记
    ○ git add对应文件
    ○ 再次git status -sb,解决下一个文件的冲突
    直到没有冲突,运行git commit(注意不需要选项)

远程仓库GitHub

SSH key验证身份

代码需要储存在云端,而GitHub可以储存你的代码。那么,如何将本地的代码连接到GitHub呢,首先要验证身份。

  1. 先要有一个GitHb账号+密码
  2. 然后运行申请公钥的命令,过程之中一直回车就好了
    ssh-keygen -t ed25519 -C "your_email@example.com"
  3. 查看公钥,并粘贴到GitHub上(settings->SSH keys)
    cat id_xxx.pub
  4. 输入命令测试是否配对成功,问是否要继续连接的时候yes
    ssh -T git@github.com
    提示设置成功就可以上传代码啦

上传代码

  1. 新建一个GitHub Repository,复制SSH地址和下面的代码
  2. 在本地添加远程仓库地址。origin是远程仓库的默认名字,可以换但是不建议。
    建议不要使用https://地址,每次都需要密码,麻烦。
    git remote add origin git@github.com:仓库地址
  3. 推送本地master分支到远程origin的master分支,如果过程中提示你应该git pull … ,就git pull。(如果远程分支没更新过,才可以省略)
    git push -u origin master
    -u origin master的意思是设置上游分支,之后就不用再设置上有分支,直接git pull;git push。
  4. 网站上给的命令是这样的,但是直接用3.的命令也可以
git remote add origin git@github.com:username/repo-name.git
git branch -M main
git push -u origin main

※ 关于分支的提交,pull哪个分支就上传哪个,在分支上只有commit后的文件才可以上传,add和modify状态的文件不会上传;还有.ignore文件里添加的文件不会上传。
※ modify文件需要再add之后commit。
※ 上传一个新的分支,就要使用-u origin 分支名

上传其他分支:
一、x:x左边是源头,右边是目标。从本地x到远程x
git push origin x:x
二、切换到目标分支,然后上传
git checkout x
git push -u origin x

🔶总结:解决冲突
实际操作了一下,在GitHub上修改了一个文件,然后我本地修改了代码,在不知道远程仓库中这个文件已经被修改的情况下git push了。

λ git push
    Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
    To github.com:AkaneTang/git-demo-1.git
     ! [rejected]        master -> master (fetch first)
    error: failed to push some refs to 'git@github.com:AkaneTang/git-demo-1.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
可以看到别人修改的文件和我的冲突了,按照提示git pull,拉取远程代码。
λ git pull
    remote: Enumerating objects: 5, done.
    remote: Counting objects: 100% (5/5), done.
    remote: Compressing objects: 100% (3/3), done.
    remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0   
    Unpacking objects: 100% (3/3), done.
    From github.com:AkaneTang/git-demo-1
       3054bd5..f454902  master     -> origin/master
    Auto-merging index.html
    CONFLICT (content): Merge conflict in index.html
    Automatic merge failed; fix conflicts and then commit the result.

自动弹出merge该文件,选择好需要保留的地方保存。再次上传需要git add+git commit然后再git push。
在此过程中可以通过git status来查看文件状态。modify文件时红色的,add之后变绿,就可以commit了。

如何下载别人的代码

  • 下载
    如果是不同的PC,要写上传新的ssh key(一机一key)
    git clone git@目标路径
    cd目标路径之后就可以一波四连:
    git add/ git commit/ [git pull] /git push

  • 下载某个分支
    先下载整个仓库,然后git checkout 分支名
    或者搜一些命令

  • git clone git@?/xxx.git
    会在当前目录下创建一个xxx目录,xxx/.git就是本地仓库了,然后cd 进去这个目录

  • git clone git@?/xxx.git yyy
    会在本地新建yyy目录,记得cd yyy

  • git clone git@?/xxx.git .
    最后是空格+. ,这个命令不会新建目录,使用当前目录
    不过一般还是新开一个,或者找个空目录比较好

git高级操作

使用bash alias简化命令

  • gst/ga/gc/gl/gp等
  • touch ~/.bashrc创建并进入这个文件然后编辑
    echo 'alias ga="git add"'>> ~/.bashrc
    echo 'alias gc="git commit -v"'>> ~/.bashrc
    echo 'alias gl="git pull"'>> ~/.bashrc
    echo 'alias gp="git push"'>> ~/.bashrc
    echo 'alias gco="git checkout"'>> ~/.bashrc
    echo 'alias gst="git status -sb"'>> ~/.bashrc
  • 重启命令行或者运行 source ~/.bashrc
    ~/.bashrc就是bash的配置文件,通过编辑配置文件来写成简易命令
    也可以直接用vim编辑。
    vi ~/.bashrc之后按i进行编辑,然后ESC退出编辑模式,:wq保存并退出。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容