-
用Git Bash在desktop上创建directory:My_first_Git
cd ~/desktop/ mkdir ~/desktop/My_first_Git
-
通过nano或者subl(Sublime Text)在My_first_Git中创建文档version1.txt
nano version1.txt #或者subl然后在Sublime里输入内容1,即第一版内容
-
保存后,在该文件路径中创建git
git init
这样以后使用ls -a就会显示该文件路径下有一个隐藏文件.git
-
将version1.txt从Working Directory上传到Staging Area,再上传到git dirctory(Respostory)
git add version1.txt #传入Staging Area git commit #传入git dirctory(Respostory) #或者前两步一步到位:git commit -a
此时会打开Subilme或者其他默认编辑器,输入一行以动词开头的英文(eg: Add/Upgrade to version1/2/3/…)后保存即可
-
比较git dirctory(Respostory)中的现行版和历史版:
输入git log
显示如图
然后 找到要比较的两个版本的编码,如要比较上图的version2和version3:git diff 2c46107c176dfec27496f29d341b477ad188b8e6 9753cca034818b7c03d53650243e4338ec58123a
-
比较Working Directory和Staging Area:
git diff
-
比较Staging Area和git dirctory(Respostory):
git diff --staged
-
返回git directory的最后一个版本:不论在本地(Working Directory)和暂存区(Staging Area)如何修改,只要还没有commit,都可以通过git_reset恢复git directory的最后一个版本
git reset --hard
-
关于branch(分支):
git branch #查看branch git branch chinese_version #创建了一个chinese_version git checkout chinese_version #切换到了chinese_version
-
分支合并:
git merge master test
通常除了master外还有一个test的分支,当test分支中的版本稳定后,就在master分支下合并:git merge master test,注意如果在test分支下合并则master的文件没有改变没有更新。
-
分支有冲突:当merge时,出现如下代码:
Auto-merging xxx.txt CONFLICT (content): Merge conflict in xxx.txt Automatic merge failed; fix conflicts and then commit the result.
原因:如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。此时 Git 做了合并,但是没有自动地创建一个新的合并提交。 Git 会暂停下来,等待你去解决合并产生的冲突。 你可以在合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件:
$ git status On branch master 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: xxx.txt no changes added to commit (use "git add" and/or "git commit -a")
任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来。 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:
<<<<<<< HEAD section_1 ======= section_2 >>>>>>> test
<<<<<<< HEAD与=======之间的部分是冲突的第一个部分,=======和>>>>>>> test之间的部分是冲突另一个部分。你需要二者择其一即可,比如改为:
section_1
注意:<<<<<<< HEAD,=======,>>>>>>> test都要删掉。并且记得改后commit。
通过Git进行本地版本控制
最新推荐文章于 2024-05-07 17:47:12 发布