git快速上手

Categories: 教程 / git

我想这篇文章应该可以让你快速上手 git 和 github 吧?

写在前面

什么时候会用到 git 呢?就我而言,我目前有两处地方有用到 git

  1. 跟踪管理自己代码的时候
  2. 与其他人合作为同一个项目做贡献的时候
  3. 对其他开源项目做贡献~~(太菜了没做过)~~

我认为快速入门 git 的好方法是了解基础步骤后直接开始操作~~,于是就有了这篇文章~~

这篇文章的许多内容都是自己试过的,希望下面的内容能给新手们带来一点帮助,如有错误,请指出。

上手之前

准备工具

首先准备好所需的工具:gitgithub 账号一个(当然其他代码托管平台也是可以的),若没有的话,git 在这里下载,github 账号的在这里注册

然后,在命令行中做好配置文件相应的设置 git config --global user.name "your-name" git config --global user.email "your-email"

再者就是本地与 github 之间通讯要用到的 ssh 密钥。之前应该写过,我直接拷贝过来吧。

配置密钥

先生成 SSH key,下列 command 生成了公/私对 $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

再将其 public key 复制进剪贴板 $ clip < ~/.ssh/id_rsa.pub

之后到https://github.com/settings/keys里,点击 New SSH key,然后把它粘贴到文本框里

接下来就是测试连接

在命令行下输入 ssh -T git@github.com 以测试 SSH 是否配置好

预期结果应如下

PS C:\Users\situ> ssh -T git@github.com
Hi situ2001! You've successfully authenticated, but GitHub does not provide shell access.

此时,密钥配置完成。

然后下面是操作的过程,虽然不知道发生了什么,但是先照着做就是了。

跟踪自己的代码

这块内容大致分为两步

  1. 新建一个仓库
  2. 往仓库提交你的代码

新建一个仓库

这个新建一次就行了。这个新建一次就行了。这个新建一次就行了。

仓库分为本地的仓库(即本机)和远程仓库(在这里指 github 的仓库)

建立本地仓库的话,就是在你代码的目录下,输入下面的命令

git init

成功初始化后的输出可能如下

Initialized empty Git repository in C:/Users/situ/github/git_test/.git/

接着去 github 新建对应的仓库,在 github 首页的右上角就能看到新建仓库的图标了,跟着指引一步一步做下去就行了

至此,仓库的新建工作完成了

往仓库提交你的代码

接着就是进行状态的检查,这个命令很有用,它可以告诉你现在仓库的状态是什么样子的

git status

输出可能如下

C:\Users\situ\github\git_test>git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        1.txt
        Main.java

nothing added to commit but untracked files present (use "git add" to track)

接着,把 untracked 的文件加入 git 中

git add .

这个命令表示把所有更改过的或者未追踪的文件加入跟踪

接着就是记录自己此时仓库的情况,使用如下命令

git commit -m "my first commit"

输出结果如下

[master (root-commit) cc978b4] my first commit
 2 files changed, 15 insertions(+)
 create mode 100644 1.txt
 create mode 100644 Main.java

再用git status看看

On branch master
nothing to commit, working tree clean

说明,此时仓库已经记录下你现在的工作了。

接着我们使用命令git remote进行远端仓库的添加(如下仅为实例,具体情况具体分析)

git remote add origin https://github.com/situ2001/git_test.git

最后,我们使用git push命令,把此时本地的 master 分支推到远端仓库上的 master 分支

git push -u origin master

出现像下面这样的,是成功了

C:\Users\situ\github\git_test>git push -u origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 406 bytes | 406.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/situ2001/git_test.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

接着,你在 github 的 repo 上面就能见到这次的 commit 了。

那么在其他地方操作,怎么把仓库拉下来啊。很 EZ,用git clone命令就行了,如下

git clone [repo-url]

还有不要忘了在其他地方做了更改,回到自己的环境下,要进行一下git pull同步一下远端仓库的内容哦

与他人进行合作

有时候我们会与他人合作,共同 contribute 同一个 repo,因此,一些 git 分支与合并的操作还是要懂得一点的

我目前了解到的合作还是比较肤浅,自己了解过的只有两种

  1. 受他人邀请后,直接获得对仓库进行更改的权限
  2. fork 一份他人的 repo,对其修改后,在 github 上发起 PR(Pull Request)

直接修改所有者的 repo

这两种原理是差不多的,我挑较为用过次数比 2 多的 1 来说吧(事实上这有点头铁,推荐用 2)

如果 repo 的所有者对你发出了 collaborate 的邀请,接受了,你对应用户的邮箱就能直接在这个 repo 下进行更改了

此时先使用命令git clone把对应的仓库 clone 下来

git clone [repo-url]

由于是多人合作,就要避免一些更改的冲突,此处比较保险的方法是利用 git 的分支操作,大概操作如下:

  1. 创建分支并切换到对应的分支
  2. 进行相对应的更改并做好 commit
  3. 在主分支下进行整合工作
  4. 将当前的分支 push 到远端分支

开始操作(由于最近在肝某 deadline,所以一些输出就不搞了,理论上这流程下来是没有问题的)

首先,创建一个分支并切换到对应分支

git checkout -b [branch-name]

下面这两行与上面的是等效的

git branch [branch-name]
git checkout [branch-name]

接着,开始你的工作,进行相对应的更改并做好相对应的 commit,还是像上面一样

git add .
git commit -m "some changes"

再接着,把做好的修改,确定无误后,使用git merge指令将该分支合并到主分支上…等等,此时我们冷静一下,我在进行多人合作诶,思考下:万一人家在我合并之前已经进行了一次合并或者是主分支出现了一些更新的 commit 呢?

所以,我们在合并之前最好是使用git pull命令,同步一下最新的远端仓库,所以要执行的操作如下,先同步后合并

git checkout master
git pull
git merge [branch-name]

git 会进行自动处理,除非是 git 无法处理的冲突才需要人为干涉(这里暂不多说)

接下来就是,把当前本地的分支推到远端了,依旧是git push

git push -u origin master

要是想要把新分支也同步上去,如下

git checkout [branch-name]
git push -u origin [branch-name]

使用 Pull Request

如果是用 PR 的方法的话,应该会安全一点(云玩家又来了

我认为先是 fork 一份到自己的号里,然后前面 1 2 步骤与上面一样,而 3 4 5 分别是

  1. 将主分支的最新更改整合到你的分支里
  2. push 你的分支到远端
  3. 在你的 repo 下根据提示进行 PR

自第三步有点差别,考虑到是合作,他人有可能进行了一定的修改,先git pull

git checkout master
git pull
git checkout [branch-name]
git merge master

再合并,不过此次是把 master 合并到你的分支里

第四步就是将你的分支推到远端啦

git push -u origin [branch-name]

第五步就是打开你的 github 对应的 repo,它会自动提示你进行 PR 操作的

甚至还能做下事后清理工作,可以把本地和远程对应的分支所删除(当然远程分支也可以在 github 的对应的 repo 下进行删除分支的操作)

git branch -d [branch-name]
git push -d origin [branch-name]

还有更多

我只是简单地写了两种常见的 git 使用场景的普遍情况,这俩操作可以应付得来大部分场景了

不过就这么点,还远远不够,再安利些东西吧,git 指令想了解原理和更多操作,可以参考下面这个,初学的时候受益甚多(不过内容还是比较多的,初次上手可以像我这篇文章一样直接开个仓库进行操作

Git Tutorials and Training | Atlassian Git Tutorial

强烈建议了解一下里面画的图片,配合图片来解释 git 的一些行为,会比空洞的文字好很多的

刚刚全都是在命令行下处理的,如果需要一个相关的 GUI 工具,可以尝试下面的

还有一个方法,学习这东西,可以到 github 上面浏览一下出名的 repo 的一些东西,比如说,它们的 commit commet 的写法风格是怎么样的,它们的分支是怎么样的…

以上就是我这菜狗能提供的东西了,如有错误,还请指出~~(菜是原罪)~~