Java进阶开发课堂笔记(一)


本人使用的是MacBook pro,以下操作均在MacOs系统下完成。本人使用的是码云(Gitee)作为私有仓库托管。

Git常用操作命令

安装好Git后,创建一个版本库,首先,选择一个合适的地方,创建一个空目录:

$ mkdir StudyGit
$ cd StudyGit
$ pwd
/Users/melendez/StudyGit

pwd 命令显示的是查看当前文件夹目录地址:/Users/melendez/StudyGit

第二步,使用git init命令把这个目录变成Git可以管理的仓库:

$ git init 
Initialized empty Git repository in /Users/melendez/StudyGit/.git/

此时版本库就建好了,当前目录下会出现一个.git的目录,这个目录是Git用来跟踪管理版本。
如果你没有看见.git目录,可使用ls -ah命令查看

在刚刚创建的StudyGit目录下,新建一个test.txt文件,有两种方法:
1、直接在StudyGit目录下新建。
2、在终端中使用vi test.txt命令,输入Hello World,点击esc后,点击control +q,在命令行中输入wq保存并退出。

当一个文件创建完之后,可以使用git status命令查看结果:

$  git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	test.txt

一个文件放入仓库,需要两步:
1、使用git add命令,将文件添加到仓库:

$ git add test.txt

2、使用git commit -m xxx命令,将文件提交到仓库:

$ git commit -m add test.txt
[master (root-commit) 646e2a8] add
 1 file changed, 2 insertions(+)
 create mode 100644 test.txt

注意:-m后面输入的是本次提交的说明,可输入任意内容,当然最好是有意义的,方便从历史记录中查找改动记录。

扫描二维码关注公众号,回复: 10629786 查看本文章

此时我们已经提交了一个test.txt文件,现在,我们需要改动这个文件,改成一下内容:

Hello World
I am Melendez

现在运行git status查看结果:

 $ git status        
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   test.txt

no changes added to commit (use "git add" and/or "git commit -a")

git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
虽然Git告诉了我们此时的readme.txt已经被修改了,但是若我们不知道修改了什么内容,可使用git diff命令来查看修改内容:

$ git diff test.txt
diff --git a/test.txt b/test.txt
index 9801343..db787e2 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,3 @@
 Hello World
+I am Melendez

知道了修改了什么内容,再使用上述的提交命令即可。

git log从最近到最远的提交日志:

$ git log
commit cbd84e7c1540ff46fb4b6ed6bae861aecaf5e7ea (HEAD -> master)
Author: melendez <[email protected]>
Date:   Sat Mar 28 16:02:51 2020 +0800

    aaaa

commit 646e2a845d92c0b509eff73c3a054309fe578482
Author: melendez <[email protected]>
Date:   Sat Mar 28 15:38:01 2020 +0800

    add

如果嫌弃内容繁杂,可在git log --pretty=oneline命令:

% git log --pretty=oneline
cbd84e7c1540ff46fb4b6ed6bae861aecaf5e7ea (HEAD -> master) aaaa
646e2a845d92c0b509eff73c3a054309fe578482 add

若想回到之前的版本,可输入git reset --head xxxx(版本号)即可。

从远程仓库克隆项目

学校安排本学期使用码云(Gitee)进行教学,以下均基于在Gitee上操作。
首先,登录Gitee,新建一个仓库StudyGit。
在这里插入图片描述
语言选择java,添加 .gitignore 选择Maven
创建完成后,选择克隆/下载,点击复制按钮,复制Https链接。
打开终端,输入克隆命令:

$ git clone https://gitee.com/me1endez/StudyGit.git
Cloning into 'StudyGit'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (8/8), done.

查看当前目录文件:

$ ls -ah
.		.git		.gitignore	    README.md
..		.gitee		README.en.md

出现以上相似内容说明克隆成功。

分支管理

创建与合并

创建并切换到feature分支,使用git checkout -b feature命令:

$ git checkout -b feature
Switched to a new branch 'feature'

创建完成后,使用git branch命令查看当前所在的分支:

$ git branch
* feature
  master

在feature分支下创建一个test.txt文件,并提交到本地仓:

$ vi test.txt
$ git add test.txt 
$ git commit -m "branch test"
[feature 62bb7d0] branch test
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

若需要切换其他分支,使用git checkout master命令:

$ git checkout master
Switched to branch 'master'

切换完成后,使用git branch命令查看当前所在的分支:

$ git branch
  feature
* master

在feature分支下,创建一个test.txt文件,提交到本地仓库后,使用git merge feature命令将feature分支与master分支进行合并:

$ git merge feature
Updating 823660b..62bb7d0
Fast-forward
test.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 test.txt

分支合并完之后,若想删除分支,使用git branch -d feature命令:

$ git branch -d feature
Deleted branch feature (was 62bb7d0).

删除后,查看branch,就只剩下master分支:

git branch
* master

解决冲突

创建一个分支feature_a,并在README.md文件添加一句i am melendez

$ git checkout -b feature_a
Switched to a new branch 'feature_a'
$ vi README.md
$ git add README.md 
$ git commit -m "i am melendez"
[feature_a 3ce1093] i am melendez
 1 file changed, 1 insertion(+)

提交后,切换到master分支,并在README.md文件添加一句I am Melendez。:

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)
$ vi README.md           
$ git add README.md
$ git commit -m"I am Melendez"
[master 576310d] I am Melendez
 1 file changed, 2 insertions(+), 1 deletion(-)

此时,feature _a分支和master分支分别提交了新的README.md文件,就变成了这样:
在这里插入图片描述
在这种情况下,我们将feature_a分支合并到master分支上,就有可能出现冲突:

$ git branch
 feature_a
* master
$ git merge feature_a
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

果然发生了冲突,此时使用git status命令可以告诉我们是README.md文件发生了冲突:

$ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	both modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

解决方法:
使用cat README.md命令查看内容:

cat README.md
Hello World!
<<<<<<< HEAD
I am Melendez
=======
i am melendez
>>>>>>> feature_a

从中,我们可以看到是大小写的不一致导致了此次的冲突,我们修改后保存:

Hello World!
I am Melendez

重新提交:

$ git add README.md           
$ git commit -m"conflict fixed"
[master 1a01533] conflict fixed

此时冲突就修复完成了,我们可以使用git log --graph --pretty=oneline --abbrev-commit来查看分支的合并情况:

$ git log --graph --pretty=oneline --abbrev-commit
*   1a01533 (HEAD -> master) conflict fixed
|\  
| * 3ce1093 (feature_a) i am melendez
* | 576310d I am Melendez
|/  
* 6d14291 add Hello World
* 62bb7d0 branch test
* 823660b (origin/master, origin/develop, origin/HEAD) Initial commit
发布了7 篇原创文章 · 获赞 0 · 访问量 201

猜你喜欢

转载自blog.csdn.net/Vinseny/article/details/105161614
今日推荐