Git is what?
git是分布式版本代码储存库,熟练使用它后,不管是一个团队还是个人的开发效率来说提升的作用都很大。重要性自然不多说,这篇文章以最快的方式学会使用最基本的git命令。
安装git从官网入手即可:https://git-scm.com/
官方快速上手教程:https://try.github.io/levels/1/challenges/1
github图文教程:http://rogerdudler.github.io/git-guide/
不想看英文的可以看一下下方的git一般操作步骤,看一遍后就会基本地使用git命令了。
git工作区、暂存区、仓库区
先了解一下基本概念,git的工作区域一般分为3个,分别是工作区(Working Area)、暂存区(Staging Area)、仓库区(Repository)。
也就是下图从左向右顺序。
git一般操作步骤
1 创建目录
guoyanzongdeMacBook-Pro:TempFile oldpan$ mkdir git-test
2 进入目录
guoyanzongdeMacBook-Pro:TempFile oldpan$ cd git-test/ guoyanzongdeMacBook-Pro:git-test oldpan$ ls
3 使当前目录变为git仓库
guoyanzongdeMacBook-Pro:git-test oldpan$ git init Initialized empty Git repository in /Users/oldpan/Documents/TempFile/git-test/.git/
4 查看当前有没有提交记录,当然显示没有任何记录
guoyanzongdeMacBook-Pro:git-test oldpan$ git log fatal: your current branch 'master' does not have any commits yet
5 查看当前git状态
guoyanzongdeMacBook-Pro:git-test oldpan$ git status On branch master No commits yet nothing to commit (create/copy files and use "git add" to track)
6 查看此时目录下有什么文件,发现多了一个.git文件
guoyanzongdeMacBook-Pro:git-test oldpan$ ls -a . .. .git
7 在git-test目录下创建一个txt文件
guoyanzongdeMacBook-Pro:git-test oldpan$ vim myfile.txt
# myfile的内容
hello
~
~
~
~
~
8 再次使用git log命令查看
guoyanzongdeMacBook-Pro:git-test oldpan$ git status On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) myfile.txt nothing added to commit but untracked files present (use "git add" to track)
9 但此时myfile文件并没有被git加入到暂存区,所以使用add命令
guoyanzongdeMacBook-Pro:git-test oldpan$ git add myfile.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: myfile.txt
10 现在再创建一个文件yourfile.txt,内容为pig
guoyanzongdeMacBook-Pro:git-test oldpan$ vim yourfile.txt
...
pig
~
~
~
11 再次使用git status观察此时文件的情况
guoyanzongdeMacBook-Pro:git-test oldpan$ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: myfile.txt Untracked files: (use "git add <file>..." to include in what will be committed) yourfile.txt
12 进行git commit,此时将之前通过add命令把暂存区的myfile.txt进行commit,并填写commit信息
guoyanzongdeMacBook-Pro:git-test oldpan$ git commit ... commit myfilt.txt # 在这一行填写commit信息,填写完保存即可 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch master # # Initial commit # # Changes to be committed: # new file: myfile.txt # # Untracked files: # yourfile.txt # ... [master (root-commit) ab5b577] commit myfilt.txt 1 file changed, 1 insertion(+) create mode 100644 myfile.txt
13 将另一个文件yourfile.txt也进行add并commit
guoyanzongdeMacBook-Pro:git-test oldpan$ git add yourfile.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git commit # 填写commit信息,略 [master 88ca0a5] commit yourfile.txt 1 file changed, 1 insertion(+) create mode 100644 yourfile.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git status # 此时再看已经没有需要commit的文件了 On branch master nothing to commit, working tree clean
14 查看当前分支,发现我们只有一个分支,那就是master
guoyanzongdeMacBook-Pro:git-test oldpan$ git branch
* master
15 创建一个新的分支,名称叫做’new-branch’
guoyanzongdeMacBook-Pro:git-test oldpan$ git branch new-branch guoyanzongdeMacBook-Pro:git-test oldpan$ git branch * master new-branch
16 利用checkout命令切换当’new-branch’这个分支
guoyanzongdeMacBook-Pro:git-test oldpan$ git branch new-branch guoyanzongdeMacBook-Pro:git-test oldpan$ git branch * master new-branch guoyanzongdeMacBook-Pro:git-test oldpan$ git checkout new-branch Switched to branch 'new-branch' guoyanzongdeMacBook-Pro:git-test oldpan$ git branch master * new-branch
17 此时,我在’new-branch’这个新的分支上修改myfile文件并提交它,通过这个命令git log --graph --oneline master new-branch
来查看两个分支的commit详情(master 和 new-branch是两个分支的名称)。
guoyanzongdeMacBook-Pro:git-test oldpan$ git checkout new-branch M myfile.txt Switched to branch 'new-branch' guoyanzongdeMacBook-Pro:git-test oldpan$ vim myfile.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git add myfile.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git commit myfile.txt [new-branch d608dab] add another new line 1 file changed, 2 insertions(+) guoyanzongdeMacBook-Pro:git-test oldpan$ git log commit d608dab1c9b0e91ebc8a2fc2dcde43f0c0f575ea (HEAD -> new-branch) Author: oldpan <295484914@qq.com> Date: Sat May 12 15:43:07 2018 +0800 add another new line commit 88ca0a56781142d60e095784f29a58caac2375e2 (master) Author: oldpan <295484914@qq.com> Date: Wed May 9 18:57:00 2018 +0800 commit yourfile.txt commit ab5b5771550dbf67cb4a649b1b120b4d18bc9863 Author: oldpan <295484914@qq.com> Date: Wed May 9 18:52:52 2018 +0800 commit myfilt.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git log --graph --oneline master new-branch * d608dab (HEAD -> new-branch) add another new line * 88ca0a5 (master) commit yourfile.txt * ab5b577 commit myfilt.txt
相关命令
git log:查看commit记录。
git diff: 对比两个文件,显示两个文件中内容的不同地方(增加或者减少一些文字),使用不同参数的diff命令比较的对象不同。
git diff # 比较工作区和暂存区的文件区别 -------在工作区中修改文件--------------------- guoyanzongdeMacBook-Pro:git-test oldpan$ vim myfile.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git diff diff --git a/myfile.txt b/myfile.txt index ce01362..fcb9da8 100644 --- a/myfile.txt +++ b/myfile.txt @@ -1 +1,2 @@ hello +add a new line ------------------------------------------ git diff --staged # 比较暂存区和commit区的文件 -------------将上面的myfile.txt文件进行add--- guoyanzongdeMacBook-Pro:git-test oldpan$ git diff --staged guoyanzongdeMacBook-Pro:git-test oldpan$ ls myfile.txt yourfile.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git add myfile.txt guoyanzongdeMacBook-Pro:git-test oldpan$ git diff --staged diff --git a/myfile.txt b/myfile.txt index ce01362..fcb9da8 100644 --- a/myfile.txt +++ b/myfile.txt @@ -1 +1,2 @@ hello +add a new line ------------------------------------------- git diff commit1 commit2 # 比较两个commit文件的内容 commit1和commit2分别是两个commit的编号
git中需要注意的地方
- 在合并文件的决策中有几点是需要注意的,假如有两个人a和b,他们正在分别独立地编辑同一个文件的两个副本,a和b每天在都编辑这个文件,有时候在文件中增加一些行,有时候删除一些行,总之a和b分别对这个文件的副本进行编辑。然而某一天他们两个人编辑好的文件要进行合并。
- 在产品实际操作中,一般只会存在一个master分支。这个master分支是稳定的、面向用户的分支,在实际编写中不会对其有特殊的修改。但是你如果有一个新想法或者想要实现新功能,那么可以使用命令’git branch’开发一个新的分支,这个分支和master分支是并行的,互不影响。
谢谢博主热心分享,留言支持一下,也欢迎回访一下我的网站
谢谢!