网站原型图设计软件,wordpress 中文在线留言,网址大全2021,运城推广型网站建设Git教程I 本地Git创建git仓库将修改存到暂存区将暂存区提交到当前分支查看提交历史回退版本恢复到更晚的版本创建新分支切换分支简单的分支合并冲突分支合并不使用fast forward: --no-ff 远程Git连接远程仓库将本地分支上传到远程仓库从远程仓库拉取 本地Git
学习如何使用本地… Git教程I 本地Git创建git仓库将修改存到暂存区将暂存区提交到当前分支查看提交历史回退版本恢复到更晚的版本创建新分支切换分支简单的分支合并冲突分支合并不使用fast forward: --no-ff 远程Git连接远程仓库将本地分支上传到远程仓库从远程仓库拉取 本地Git
学习如何使用本地Git。
创建git仓库
git init可以在当前位置创建一个git仓库。
也可以用git clone创建并克隆一个远程仓库。
将修改存到暂存区
假设你添加/修改/删除了文件a.cpp。可以用git status来看你的电脑在修改了哪些内容。untracked就是还没有存在暂存区的。
可以用git add a.cpp来将这个修改添加到暂存区。这之后再用git status就能看到已经存了。
将暂存区提交到当前分支
当前分支就是现在所在的分支。默认创建后是master或main。你总是在某一个分支上。
用git commit -m NIHAO来将暂存区内容提交到当前分支。
查看提交历史
多次进行“修改-add-commit”后你就已经多次commit了。现在可以用git log来看每次commit。每次commit有commit、Author、Date等信息。commit后的十六进制数是这个commit的编号。一次commit也就是一个版本。
可以用git blame a.cpp查看一个文件的改变历史。
回退版本
用git reset --hard 12345ab来回退到以12345ab开头的编号的commit版本。这会修改你的电脑里相应的文件。
commit编号至少填前四位。
恢复到更晚的版本
刚才我们学习了如何回到更早的版本。那么如何回到更晚的版本
同样用git reset --hard …命令就可以了。
如果不知道版本commit编号可以用git reflog查看commit对应的编号在该行的开头。
创建新分支
每次commit可以视为一个树上的节点随着commit的进行一根树枝在不断生长。我们也可以在一个节点创建一个新分支。这之后我们可以切换到这个分支上在这个分支上生长同时其它分支没有改变。
用git branch apple来创建一个名为apple的分支这时还没有切换过去。
切换分支
用git checkout apple来切换到apple分支。同样也可以git checkout master切换回来。
用git branch查看现在有的所有分支以及当前在哪个分支。
切换分支之后电脑里的文件也会相应修改。
简单的分支合并
假设你在某个版本A切换到了新分支apple并在这上面提交了一些版本。那么现在apple就领先master若干个版本。
如果想让master追上apple可以先切换到master分支然后git merge apple就行了。
如果想删除apple分支可以用git branch -d apple。
一定要注意的是这种分支合并只用于merge到的分支是另一个的后代的情况git会使用fast-forward模式。
如果你merge了一个更落后的分支即祖先节点那么什么也不会发生。
冲突分支合并
如果你merge了一个既有落后也有领先的分支即既不是祖先也不是后代那么就不能fast-forward合并。这时merge的话会进入MERGING模式你可以在命令行上面看到。
可以用git status总览合并与冲突的情况。有些文件是both modified也就是说它在两个分支里做了不同的修改。
现在查看电脑里的both modified文件其内容被改为了类似diff结果的格式。
事实上这也相当于untracked modified文件。我们在把它修改成想要的内容后git add就可以commit了。commit之后MERGING模式也结束了。
可以使用git mergetool来修改文件。这里介绍vimdiff的使用方法聚焦于下方窗口这个是最后保存的文件。用]c命令定位到不同之处。用:diffg l来采用本地的方案在屏幕左上方窗口的:diffg r采用远程方案屏幕右上方窗口:diffg b采用base方案屏幕正上方的。也可以自己修改调整。最后:wqa全部保存退出。
现在可以用git log --graph --prettyoneline来看分支合并的示意图。
不使用fast forward: --no-ff
合并到后代时如果想保持自己的分支和后代分支不在一个节点上可以加上--no-ff参数。这会新建一个commit可以用-m参数指定提示信息。这么做的效果看起来像自己先提交了一个没有修改的commit然后冲突合并且完全采用后代。
远程Git
学习如何使用远程Git。
连接远程仓库
git remote命令可以显示远程仓库。如果是用git init创建的本地仓库那么应该还没有连接什么也不会显示。
用git remote add grape gitgithub.com:myjs999/gittest.git来连接到一个存在的GitHub仓库。你也可以连接到别的仓库。grape是本地的一个远程仓库的代号你也可以改成别的名字比如origin。
将本地分支上传到远程仓库
假设本地有已经commit的分支。
用git push grape来将当前分支上传到远程仓库。会在远程仓库自动创建同名分支。
如果远程仓库已经有这个分支那么只要本地版本领先于远程版本上传就能成功。
从远程仓库拉取
git pull grape apple可以将远程仓库的apple分支内容拉取到当前分支。这相当于做了一次merge。如果远程仓库领先于本地那么拉取就能直接成功。否则可以参考冲突合并。