git拉取单个文件_Git拿来就用

简介

Git[1]是 Linus 开源的分布式代码版本控制工具。

Q:版本控制工具有哪些?
A:

  1. 集中式:SVN、CVS、VSS 等
  2. 分布式:BitKeeper、Git 等

Q:集中式和分布式有什么区别?
A:集中式依赖中央仓库,而且每次上传都是完整版,不易溯源。分布式每个人手头上都是完整版,改动只需要把修改部分同步一下就行了。

Git 服务器有GitHub[2]、GitLab[3]、BitBucket[4]和Gitee[5]等。

Git 可视化工具有SourceTree[6]和SmartGit[7]等。

Git 常用命令

基础设置

user@Debian:~$ sudo apt install git # 安装

user@Debian:~$ git config --global user.name "name" # 设置信息。因为是分布式版本控制,所以需要有用户名和邮箱做标识
user@Debian:~$ git config --global user.email "user@email.com"

user@Debian:~$ ssh -T git@github.com # 测试Github的SSH连接

user@Debian:~/Project$ git init # 初始化Git项目

上传下载

287e457d265cfd202e57179c2d8f2845.png
版本控制
user@Debian:~$ git clone https://github.com/user/Project.git # 克隆到本地

user@Debian:~/Project$ git remote rm origin # 删除已关联项目地址
user@Debian:~/Project$ git remote add origin git@github.com:user/Project.git # 关联项目地址
user@Debian:~/Project$ git remote set-url origin git@github.com:user/Project.git # 设置项目地址

user@Debian:~/Project$ git fetch https://github.com/user/Project.git # 从远程仓库拉取
user@Debian:~/Project$ git pull https://github.com/user/Project.git # 从远程仓库拉取并合并

user@Debian:~/Project$ git add . # 提交到暂存区
~user@Debian:~/Project$ git commit -am "Add files" # 提交到版本库;-a是添加所有改动代码,-m是添加描述

user@Debian:~/Project$ git status # 查看文件状态
user@Debian:~/Project$ git log # 查看历史;--oneline是以单行显示

user@Debian:~/Project$ git push -u origin main # 推送到远程仓库;-u是标识默认提交仓库和分支

分支管理

user@Debian:~/Project$ git branch # 查看分支
user@Debian:~/Project$ git branch develop # 创建分支
user@Debian:~/Project$ git checkout main # 切换分支
user@Debian:~/Project$ git branch -d develop # 删除分支

user@Debian:~/Project$ git diff main develop # 查看分支区别

user@Debian:~/Project$ git merge develop # 合并分支,保留commit历史
user@Debian:~/Project$ git rebase -i develop # 不保留commit历史,慎用

撤销改动

user@Debian:~/Project$ git stash # 将撤销代码暂存
user@Debian:~/Project$ git checkout develop && git stash pop # 释放暂存的代码到其他分支上去

user@Debian:~/Project$ git checkout develop && git cherry-pick 0d934b3 --no-commit # 嫁接改动到正确分支;--no-commit是不commit,只放暂存区,支持同时嫁接多个改动

user@Debian:~/Project$ git reflog # 恢复撤销

未提交到暂存区

即未add,撤回到上一次addcommit时的状态。

user@Debian:~/Project$ git checkout -- README.md # 撤销单个文件
user@Debian:~/Project$ git checkout . # 撤销全部改动

提交到了暂存区

即已经add,但未commit

user@Debian:~/Project$ git rm --cached README.md # 放弃指定文件的暂存
user@Debian:~/Project$ git rm --cached -r . # 放弃全部文件的暂存

提交到了版本库

即已经commit,但未push到远程。

user@Debian:~/Project$ git reset HEAD^ # 撤销错误提交的commit到工作区
user@Debian:~/Project$ git reset --mixed HEAD~1 # 退回一次提交改动到工作区
user@Debian:~/Project$ git reset --soft HEAD~1 # 退回一次提交改动到暂存区
user@Debian:~/Project$ git reset --hard HEAD^ # 直接硬核回退到上一个commit

提交到了远程仓库

即已经push过了,只能用一次新commit去撤回一次提交。

user@Debian:~/Project$ git revert HEAD --no-edit # 直接硬核回退到上一个commit;--no-edit是直接使用默认Commit Messages
user@Debian:~/Project$ git revert HEAD --edit
user@Debian:~/Project$ git revert HEAD --no-commit # 撤销改动到暂存区

Git 常用操作

修改配置文件

user@Debian:~$ sudo vi ~/.ssh/config
# 别名
Host gitee
    # 域名
    Hostname gitee.com

    # HTTP代理
    # ProxyCommand connect -H localhost:10809 %h %p

    User git
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitee_rsa

Host github
    Hostname github.com

    # SOCKS代理
    # ProxyCommand connect -S localhost:10808 %h %p

    User git
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_ed25519

自建 Git 服务器

user@Debian:~$ git init --bare Project.git # 服务器初始化
user@Debian:~$ chown -R root:root Project.git # 赋权

? Ask More...

[1]

Git: https://git-scm.com/

[2]

GitHub: https://github.com/

[3]

GitLab: https://gitlab.com/

[4]

BitBucket: https://bitbucket.org/

[5]

Gitee: https://gitee.com/

[6]

SourceTree: https://www.sourcetreeapp.com/

[7]

SmartGit: https://www.syntevo.com/smartgit/

- END -

版权声明:本文为weixin_35843830原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。