git的一些基础知识学习

git 有远程库和本地库,比如github.com和git.oschina.net上我们称为远程库,我们本地项目中会有个.git的文件夹,那个我们称为本地库

1、 git init
git init命令可以在我们本地项目中初始化一个本地库,我们的代码一开始都是放在本地库的;

2、 git status
git status命令可以查看我们更改的代码的文件,这里的比对对象是本地库,如果和本地库比较,有过修改的文件显示为红色

3、 git add
git add是将我们修改的代码存到缓存中,这时我们通过git status查看的话所有的红色文件都会变成绿色,git add 后面需要接参数:

space + . 就是所有的的修改文件加入到缓存
space + 文件路径 单独把需要的文件加入到缓存
space + -A 有些特殊情况,space + .不能把文件加入到缓存,我们用这条命令

【注】这里我们插入讲一下.gitignore, 在有些时候依赖包,.idea文件夹,我们是不提交到库上的,这是我们就要对一些文件进行add 操作的忽略,这种情况我们在项目里创建一个.gitignore的文件,在里面加入需要忽略的文件夹或文件路径。

4、 git commit -m “提交描述”
当我们执行git add操作后,我们可以通过git commit创建一个提交记录,把代码加入到本地的库中,这时候执行git status命令时,绿色的文件夹就没有了。

5、 git push
执行git push操作我们把本地库和远程库进行比较,如果本地库commit 版本高于远程库,就说明本地代码最新,这是后执行git push操作就会把优先的commit的代码更新到远程库上,如果远程库有commit 本地库没有,这时执行这步操作就会报错,会提示执行git pull操作;
【注】如果是刚创建的项目,我们本地执行完以上命令,远程库也创建了,这时我们需要将本地库与远程库连接起来,我们需要执行git remote add origin + 远程库路径,这样就关联起来了,然后执行git push -u origin master这里的master就是我们指定代码的提交的分支,关于分支的概念可以自己学习了解一下。

6、git pull
每次在我们执行git commit操作后都需要执行git status查看一下,如果commit成功了,我们都需要执行一下git pull将别人提交的代码拉取下来,这里我们就会遇到一个常见的问题,代码的冲突问题。冲突是怎么产生的呢?当一个程序员编写修改了a文件的第一行,并且提交了,另一个程序员这是也编写修改a文件的第一行,然后commit操作完之后,执行git pull操作会有冲突提示:

1
2
Auto-merging "冲突的文件路径"
CONFLICT (content): Merge conflict in ...

这个时候代码已经拉取下来了,我们打开a文件会发现这样一串:

1
2
3
4
5
<<<<<<< HEAD
aaaabbb
=======
aaaaccc
>>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc

HEAD======之间的代码是自己修改的,======到一串字符串(commit的版本号)之间是另一个程序员修改的,这时我们要根据项目需求保留正确的代码,如果自己是对的,就删除别人的,那些标识也要删除掉,如果都是要保留的,那就需要进行修改,两者都保留,然后在执行以上一系列命令把解决冲突的代码提交上去。