Git学习

使用Git进行版本控制和团队协作

Let’s go

安装配置

Linux下使用命令sudo apt-get install git安装Git,使用下面的命令设置github的用户名和密码

1
2
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,要想在本地直接push代码到github上,要先生成ssh key
使用命令ssh-keygen -t rsa -C "Your Email",然后一路回车,使用默认值即可,成功的话可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥。然后使用cat ~/.ssh/id_rsa.pub查看公钥内容,在github的个人属性页面,点击SSH and GPG keys,再点击New SSH Key,添加公钥。添加成功后就可以在本地电脑直接提交代码到Github仓库,如果要在其他电脑也能提交,需要再次添加公钥。

仓库操作

1
2
3
git init               # 初始化一个仓库
git clone 远程仓库地址 # 克隆远程仓库xxx到本地电脑
git remote add origin 远程仓库地址 # 将本地仓库关联一个远程仓库

初始化或者克隆一个仓库后,在该文件夹下有一个.git的隐藏文件夹,.git/refs下有三个文件夹

1
2
3
4
5
6
7
.
├── heads
│   └── master
├── remotes
│   └── origin
│   └── master
└── tags

其中,heads存的是本地仓库的commit id,remotes存的是远程仓库的commit id。

1
2
3
git fetch 仓库名:分支  # 从远程获取最新版本到本地 (更新remotes文件夹)
git merge # 将远程与本地仓库合并 (更新heads文件夹)
git pull 仓库名:分支 # 从远程获取最新版本并与本地自动合并 (fetch + merge)

在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。

修改提交

当本地仓库发生变化时,可以将文件和文件夹添加到暂存区,然后提交,最后推送到远程仓库完成更新。

1
2
3
git add 文件或目录          # 添加到暂存区
git commit -m “修改说明” # 提交修改
git push origin 分支名 # 提交到远程仓库,默认master分支

可以使用git add .将所有修改的文件和目录添加到暂存区,也可多次使用add和commit,最后一次性push。

1
2
3
git status   # 查看是否有修改
git diff # 查看修改的内容
git show # 查看最后一次提交的作者和时间

版本回退

如果提交错文件,也可以进行撤销操作和版本回退。在Git中,用HEAD表示当前版本(最新的提交),上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本可写成HEAD~100

1
2
3
4
git log                    # 查看提交历史
git reset --hard commit_id # 回退到对应版本
git reset --hard HEAD^ # 回退到上一个版本
git checkout -- filename # 撤销修改,回到最后一次add或commit前

当文件已经添加到暂存区了,想要恢复到最开始的样子,可使用git reset HEAD file撤销commit操作,再使用git checkout -- file撤销修改。

分支管理

1
2
3
4
5
6
7
git branch          # 列出所有分支,当前分支前面有*
git branch dev # 创建一个dev分支
git checkout dev # 切换到dev分支
git checkout -b dev # 创建并切换
git branch -d dev # 删除dev分支
git merge dev # 合并dev分支到当前分支
git log --graph # 查看分支合并图

参考链接

文章目录
  1. Let’s go
    1. 安装配置
    2. 仓库操作
    3. 修改提交
    4. 版本回退
    5. 分支管理
  2. 参考链接
|
-->