git入门学习

本文简单介绍了git的常用命令,上传到github仓储的方法。是一个git入门的教程,希望各位老师,大神帮忙纠正文中的错误,谢谢

git是什么

git是版本控制工具,可以管理任何文件,不只是程序员可以用。
git管理的状态有三个区 ,工作区,暂存区和版本库
工作区就是我们正在修改操作的本地文件
暂存区 是(git add .)后,等待提交到版本库
版本库 是(git commit)后,提交到版本库,别人可以merge 你的代码了

问题 暂存区有什么,我还是没有弄清楚,也请各位大神帮忙回答一下

如何让git帮我们管理文件

安装git的步骤这里就不介绍了

  1. 首先我们新建一个文件夹 gitdemo,我的命令都是在powershell中执行的,也可以在 bash
  2. 输入命令 git init 将这个文件夹交给git 管理,执行命令后,gitdemo中会创建一个 .git 文件夹

git init

PS E:\Practice\gitdemo> git init
  1. 新建一个readme.md

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管理,接下来可以提交

  1. 查看变更内容

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
  1. git add . 把当前所有不再暂存区的文件添加到暂存区 ,git add readme.md只提交 readme.md文件

git add .

PS E:\Practice\gitdemo> git add readme.md
  1. 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
  1. 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(+)
  1. 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'
  1. 我们在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
  1. gitt add . ,git commit -m ‘dev commit’ 提交仓储

git add .
git commit -m ‘dev commit’

  1. 切换到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(-)
  1. 我们成功的在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 
  1. 在切换到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
  1. 我们手动修改有冲突的地方,然后提交到仓库就好完成了,然后再把dev分支删掉

git add .
git commit
git branch -d dev

PS E:\Practice\gitdemo> git branch -d dev
Deleted branch dev (was 2f8bc75).

把本地仓储上传到github

  1. 在github上新建一个angular hero tutorial的仓储
    git入门学习
    因为我们选择的是MIT lisence,所以创建后会有个lisence文件
    git入门学习
  2. 复制github上仓储的地址 执行下面的命令,命令的https部分就是github仓储地址

git remote add origin https://github.com/xxxxxxxx

我们就成功的创建了一个叫origin的远程仓储,如果是自己的仓储,一般都命名为origin

git remote 查看一下远程仓储

PS E:\Practice\hero> git remote
origin
  1. 远程仓储创建完成,我们现在把本地仓储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

如果有问题欢迎大家帮我修正,谢谢

相关文章: