我想这篇文章应该可以让你快速上手 git 和 github 吧?
写在前面
什么时候会用到 git 呢?就我而言,我目前有两处地方有用到 git
- 跟踪管理自己代码的时候
- 与其他人合作为同一个项目做贡献的时候
- 对其他开源项目做贡献~~(太菜了没做过)~~
我认为快速入门 git 的好方法是了解基础步骤后直接开始操作~~,于是就有了这篇文章~~
这篇文章的许多内容都是自己试过的,希望下面的内容能给新手们带来一点帮助,如有错误,请指出。
上手之前
准备工具
首先准备好所需的工具:git和github 账号一个(当然其他代码托管平台也是可以的),若没有的话,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.
此时,密钥配置完成。
然后下面是操作的过程,虽然不知道发生了什么,但是先照着做就是了。
跟踪自己的代码
这块内容大致分为两步
- 新建一个仓库
- 往仓库提交你的代码
新建一个仓库
这个新建一次就行了。这个新建一次就行了。这个新建一次就行了。
仓库分为本地的仓库(即本机)和远程仓库(在这里指 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 分支与合并的操作还是要懂得一点的
我目前了解到的合作还是比较肤浅,自己了解过的只有两种
- 受他人邀请后,直接获得对仓库进行更改的权限
- fork 一份他人的 repo,对其修改后,在 github 上发起 PR(Pull Request)
直接修改所有者的 repo
这两种原理是差不多的,我挑较为用过次数比 2 多的 1 来说吧(事实上这有点头铁,推荐用 2)
如果 repo 的所有者对你发出了 collaborate 的邀请,接受了,你对应用户的邮箱就能直接在这个 repo 下进行更改了
此时先使用命令git clone
把对应的仓库 clone 下来
git clone [repo-url]
由于是多人合作,就要避免一些更改的冲突,此处比较保险的方法是利用 git 的分支操作,大概操作如下:
- 创建分支并切换到对应的分支
- 进行相对应的更改并做好 commit
- 在主分支下进行整合工作
- 将当前的分支 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 分别是
- 将主分支的最新更改整合到你的分支里
- push 你的分支到远端
- 在你的 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 工具,可以尝试下面的
- Sourcetree
- vscode
还有一个方法,学习这东西,可以到 github 上面浏览一下出名的 repo 的一些东西,比如说,它们的 commit commet 的写法风格是怎么样的,它们的分支是怎么样的…
以上就是我这菜狗能提供的东西了,如有错误,还请指出~~(菜是原罪)~~