赞
踩
初始化一个 Git 仓库,它将创建一个 .git 文件夹,后续的操作记录都会在此文件夹里,相当于 Git 的数据库。
将本地仓库和远程仓库关联,origin 是远程仓库的名字,是 Git 的默认叫法。关联之后,我们就可以将本地的提交历史推送到远程仓库,完成和其他人的协同工作了。
查看关联的远程仓库列表,返回远程仓库名和 URL:
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
显示当前工作目录和暂存区的状态,例如创建了一个文件,此时 git status 就会在 Untracked files 里显示该未追踪的文件,如果将该文件 add 了之后,就会在 Changes to be committed 看到,即已经加到缓存区,等待提交。最后,当我们 commit,就会发现没有任何修改和未提交的文件了。
于将已修改或未跟踪的文件添加到暂存区
将暂存区的文件提交到本地仓库
查看提交的日志信息
查看工作区的文件和暂存区的不同之处
将本地的分支推送到 origin 远程仓库的上,第一次推送远程仓库将会在服务器上创建对应的分支,当第一次推送完后,后续可以直接使用 git push 这种简介用法了
将远程仓库的最新内容合并到本地仓库里
将其他分支里的提交内容合并到当前分支里
合并是有可能有冲突的,如果冲突后想放弃合并,可以使用这个命令
创建新的分支
切换到其他分支上
相当于上面连个命令的合体功能,即创建新分支,然后切换到新分支上。
分别是查看本地分支、查看远程分支、查看所有分支
删除分支,如果该分支没有合并过,则会提示相应错误,如果想要强制删除,可使用 git branch -D
分支名称。
删除本地仓库中未跟踪的文件,如果想删除的是目录,使用 -d
用于重置暂存区的文件与上一次的提交(commit)保持一致,但不会重置工作区的修改,需使用 git checkout <文件名>
命令才能重置工作区的改动。或者使用比较危险的 git reset --hard HEAD
命令,会将工作区和暂存区都重置到上一次版本,包括 commit
信息。
如果只是简单的在工作目录里手动删除文件,则还需要自己将修改添加到暂存区,然后再提交到本地仓库里才完成一次改动版本的记录。git rm 文件
则帮我们在删除的同时,也将修改添加到了暂存区,少了一步的操作。
但有时候我们想保留该文件,以便后续使用,但又想把删除的改动添加到暂存区,此时就可以使用 git rm --cached
文件名 命令来达到此效果了。
如果我们开发到一半,需要重新创建一个新分支去解决线上问题,但此时又不想将当前的分支改动提交到对应分支上,则可以使用 git stash
将修改(包括工作区和暂存区)保存到堆栈中,等新分支处理完毕后,就可以切换到之前的分支,然后使用 git stash pop
恢复缓存的堆栈内容了。
冲突怎么产生的
开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。
如何解决冲突
<1>发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。
<2>发生冲突,也可以使用命令。通过git stash
命令,把工作区的修改提交到栈区,目的是保存工作区的修改;通过git pull
命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;通过git stash pop
命令,把保存在栈区的修改部分合并到最新的工作空间中。
gitresetHEADfile
。如果想撤销提交到本地仓库的文件,可以通过gitreset–softHEAD^n
,恢复当前分支的版本库至上一次提交的状态,索引区和工作空间不变更。gitreset–mixedHEAD^n
恢复当前分支的版本库和索引区至上一次提交的状态,工作区不变更。gitreset–hardHEAD^n
恢复当前分支的版本库、索引区和工作空间至上一次提交的状态。每个节点的地位都是平等,拥有自己的版本库,在没有网络的情况下,对工作空间内代码的修改可以提交到本地仓库,此时的本地仓库相当于集中式的远程仓库,可以基于本地仓库进行提交、撤销等常规操作,从而方便日常开发
git pull
相当于git fetch
和git merge
,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支。
git merge
:将内容合并到当前分支
git fetch
相当于是从远程获取最新版本到本地,不会自动merge 方便记忆.
git pull=git fetch+git merge
git rebase
和 git merge
两个命令都⽤于从⼀个分⽀获取内容并合并到当前分⽀。
以一个 feature/todo
分⽀合并到 master主分⽀为例,我们来看一下分别⽤ rebase
和 merge
会有什么不同。
merge
会⾃动创建⼀个新的 commit
, 如果合并时遇到冲突的话,只需要修改后重新 commit。
commit
情况,包括每个分⽀的详情merge commit
,因此在使⽤⼀些可视化的 git 工具时会看到这些自动产生的 commit
,
这些 commit
对于程序员来说没有什么特别的意义,多了反而会影响阅读.
rebase 会合并之前的 commit 历史。
泰裤辣,加油会慢慢一步一步更新哒。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。