git入门学习
本文简单介绍了git的常用命令,上传到github仓储的方法。是一个git入门的教程,希望各位老师,大神帮忙纠正文中的错误,谢谢
git是什么
git是版本控制工具,可以管理任何文件,不只是程序员可以用。
git管理的状态有三个区 ,工作区,暂存区和版本库
工作区就是我们正在修改操作的本地文件
暂存区 是(git add .)后,等待提交到版本库
版本库 是(git commit)后,提交到版本库,别人可以merge 你的代码了
问题 暂存区有什么,我还是没有弄清楚,也请各位大神帮忙回答一下
如何让git帮我们管理文件
安装git的步骤这里就不介绍了
- 首先我们新建一个文件夹 gitdemo,我的命令都是在powershell中执行的,也可以在 bash
- 输入命令 git init 将这个文件夹交给git 管理,执行命令后,gitdemo中会创建一个 .git 文件夹
git init
PS E:\Practice\gitdemo> git init
new-item readme.md
PS E:\Practice\gitdemo> new-item readme.md
目录: E:\Practice\gitdemo
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/3/6 19:43 0 readme.md
.4. 在readme中编辑内容 ,输入git status,用于查看当前版本状态
git status
PS E:\Practice\gitdemo> git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: readme.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.md
结果告诉我们
当前处在master分支
有没有提交的文件,通过git reset HEAD …恢复上个版本,或者git add …把文件提交到暂存区,交给git管理,接下来可以提交
- 查看变更内容
git diff
PS E:\Practice\gitdemo> git diff
diff --git a/readme.md b/readme.md
index e69de29..b90af49 100644
--- a/readme.md
+++ b/readme.md
@@ -0,0 +1 @@
+哎呦 不错哦
\ No newline at end of file
- git add . 把当前所有不再暂存区的文件添加到暂存区 ,git add readme.md只提交 readme.md文件
git add .
PS E:\Practice\gitdemo> git add readme.md
- git status查看状态
git status
PS E:\Practice\gitdemo> git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: readme.md
- git commit - m ’ commit readme.md ’ 提交到仓储 -m 后面是对提交版本的一个说明
git commit -m ’ commit readme.md’
PS E:\Practice\gitdemo> git commit -m ' commit readme.md'
[master fb602a6] commit readme.md
1 file changed, 1 insertion(+)
- git branch 查看分支
git branch
PS E:\Practice\gitdemo> git branch
* master
10.git 推荐我们不再master分支上修改,可以创建分支,修改后再 merge 到master 分支,效果是一样的。
接下来我们在用dev分支上修改文件
创建 并切换分支 git checkout -b dev
git checkout -b dev
git branch dev 创建分支
git checkout dev 切换分支
PS E:\Practice\gitdemo> git checkout -b dev
Switched to a new branch 'dev'
- 我们在dev 分支下 修改 readme.md文件 新增一行时间戳 dev 3/7/2019 7:20:47 PM
git diff查看一下修改的内容
git diff
PS E:\Practice\gitdemo> git diff
diff --git a/readme.md b/readme.md
index b90af49..4c72278 100644
--- a/readme.md
+++ b/readme.md
@@ -1 +1,2 @@
-哎呦 不错哦
\ No newline at end of file
+哎呦 不错哦^M
+dev 3/7/2019 7:20:47 PM
\ No newline at end of file
- gitt add . ,git commit -m ‘dev commit’ 提交仓储
git add .
git commit -m ‘dev commit’
- 切换到master分支,在master分支下 查看readme.md文件 还是以前的版本,并不是dev修改后的
我们需要融合 dev 分支提交的版本
git checkout master
git merge dev
PS E:\Practice\gitdemo> git merge dev
Updating 137e798..7d5b5a0
Fast-forward
readme.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
- 我们成功的在master分支下融合dev分支的内容
但是我们 工作的时候很多情况下有可能 多个人共同修改一个文件,这时候可能会出现文件的冲突
我们来尝试一下,在master分支和dev分支中同时修改readme.md文件
master readme.md
哎呦 不错哦
dev 3/7/2019 7:20:47 PM
master 3/7/2019 7:35:48 PM
dev readme.md
哎呦 不错哦
dev 3/7/2019 7:20:47 PM
dev 3/7/2019 7:37:58 PM
- 在切换到master merge 的时候,会出现merge 冲突的问题,自动merge失败,让我们手动修改然后再commit
PS E:\Practice\gitdemo> git merge dev
Auto-merging readme.md
CONFLICT (content): Merge conflict in readme.md
Automatic merge failed; fix conflicts and then commit the result.
查看一下readme.md内容,冲突部分被用符号标记出来
哎呦 不错哦
dev 3/7/2019 7:20:47 PM
<<<<<<< HEAD
master 3/7/2019 7:35:48 PM
=======
dev 3/7/2019 7:37:58 PM
>>>>>>> dev
这部分是当前版本的内容
<<<<<<< HEAD
master 3/7/2019 7:35:48 PM
=======
这部分要融合 dev版本中的内容
=======
dev 3/7/2019 7:37:58 PM
>>>>>>> dev
- 我们手动修改有冲突的地方,然后提交到仓库就好完成了,然后再把dev分支删掉
git add .
git commit
git branch -d dev
PS E:\Practice\gitdemo> git branch -d dev
Deleted branch dev (was 2f8bc75).
把本地仓储上传到github
- 在github上新建一个angular hero tutorial的仓储
因为我们选择的是MIT lisence,所以创建后会有个lisence文件 - 复制github上仓储的地址 执行下面的命令,命令的https部分就是github仓储地址
git remote add origin https://github.com/xxxxxxxx
我们就成功的创建了一个叫origin的远程仓储,如果是自己的仓储,一般都命名为origin
git remote 查看一下远程仓储
PS E:\Practice\hero> git remote
origin
- 远程仓储创建完成,我们现在把本地仓储push去
git push origin master
这期间会出现一些问题,但是由于我是提交后写的文档,所以这一部分做完就不能重现了。大概的问题就是,仓储中有一个本地没有的lisence,需要git pull更新一下本地代码。远程仓储和本地仓储的历史不一样,git pull origin master --allow-unrelated-histories忽略历史。
git pull
git pull origin master --allow-unrelated-histories
所有问题都解决后,在git push就成功啦。
git push origin master
PS E:\Practice\hero> git push origin master
Username for 'https://github.com': jsong93
Password for 'https://[email protected]':
Counting objects: 86, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (82/82), done.
Writing objects: 100% (86/86), 213.85 KiB | 0 bytes/s, done.
Total 86 (delta 10), reused 0 (delta 0)
remote: Resolving deltas: 100% (10/10), done.
To https://github.com/jsong93/angular-hero.git
460c81f..6d4544f master -> master
如果有问题欢迎大家帮我修正,谢谢