本文简单介绍了git的常用命令,上传到github仓储的方法。是一个git入门的教程,希望各位老师,大神帮忙纠正文中的错误,谢谢
git是版本控制工具,可以管理任何文件,不只是程序员可以用。
git管理的状态有三个区 ,工作区,暂存区和版本库
工作区就是我们正在修改操作的本地文件
暂存区 是(git add .)后,等待提交到版本库
版本库 是(git commit)后,提交到版本库,别人可以merge 你的代码了
安装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 ..." to unstage)
deleted: readme.md
Untracked files:
(use "git add ..." 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 .
PS E:\Practice\gitdemo> git add readme.md
git status
PS E:\Practice\gitdemo> git status
On branch master
Changes to be committed:
(use "git reset HEAD ..." to unstage)
modified: readme.md
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
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'
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
git add .
git commit -m ‘dev commit’
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 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
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
git add .
git commit
git branch -d dev
PS E:\Practice\gitdemo> git branch -d dev
Deleted branch dev (was 2f8bc75).
git remote add origin https://github.com/xxxxxxxx
我们就成功的创建了一个叫origin的远程仓储,如果是自己的仓储,一般都命名为origin
git remote 查看一下远程仓储
PS E:\Practice\hero> git remote
origin
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
如果我们在github上fork别人的代码,修改后怎么提交呢
首先clone我们本地仓储fork的代码
然后我们在本地创建一个分支,也可以直接用master
git checkout -b pullrequests
完成代码修改后
git add .
git commit -m ‘pull requests test’
提交到我们的远程仓储
git push origin master
在自己仓储中,点击pull requests,然后点击 new pull request
然后就进到了这个页面了,点击create pull request
录入调教代码的说明,点击create pull request就成功啦,接下来就原来代码的管理master考虑是不是要merge代码啦
如果有问题欢迎大家帮我修正,谢谢
回退上一个版本
git reset --hard head~1
删除版本文件,但是保留本地文件
git rm -r --cached [filename]