Git基础
git init 初始化后,在当前目录下会出现一个名为 .git 的目录。
git clone url 从现有仓库克隆。
git status 检查当前文件状态。
git add 加入git跟踪或者加入暂存。
git diff 查看没有暂存的文件和暂存文件的区别。
git diff --staged 已经暂存起来的文件和上次提交时的快照之间的区别。
请注意,单单 git diff 不过是显示没有暂存起来的和暂存起来的区别,而不是这次工作和上次提交之间的区别。
git commit -m '说明' 提交更新
git rm 1.原仓库有该文件,手动在工作目录删除,调用 git rm 命令,之后 git commit
2.原仓库有该文件,手动在工作目录修改过后而且已经放入暂存区,再删除,需要 git rm -f
3.原仓库有该文件,从仓库中删除,工作目录保留, git rm --cached
git mv 文件改名
git log 查看提交历史
git commit --amend 修改最有一次提交,比如你有新修改的东西,想和上一次的提交合并到一起,那么把这一次的修改 git add (暂存)后,git commit -amend 撤销上一次提交,这是上一次的暂存和这一次的暂存将合并,你可以都放在这一次提交
git reset HEAD 取消暂存
git checkout 取消对文件的修改
远程仓库
git remote 查看当前远程仓库
git remote add 添加远程仓库
git fetch 从远程仓库抓取数据
本地分支
Git中有一个HEAD指针,指向你正在工作中的本地分支的指针。
git branch [name] 新建分支
git checkout [branch name] 切换分支,切换分支的时候最好保持一个清洁的工作区域。你的暂存区或者工作目录里,那些还没有提交的修改,它会和 你即将检出的分支产生冲突从而阻止 Git 为你切换分支。
git merge [branch name] 合并分支,这里 branch name 是被合并的分支。
1.如果遇到冲突,git status 找到冲突文件,git 会把两个分支的内容合并,等待你手动解决,解决后 git add ,之后 git commit 才可以 git merge。
2.如果没有冲突,可能出现 Fast forward 提示,那么 Git 顺着一个分支走下去可以到达另一个分支的话,在合并两者时,只会简单地把指针右移,因为这种单线的历史分支不存在任何需要解决的分歧,所以这种合并过程可以称为快进(Fast forward)。
git branch -d [branch name] 删除分支
git branch --merged 查看已经合并的分支,一般来说,在该命令列表下没有 * 的分支是可以git branch -d 删除的。
git branch --no-merged 查看没有合并的分支
远程分支
当你调用 git clone url 从远程仓库克隆。Git 会自动为你将此远程仓库命名为 origin,并下载其中所有的数据,建立一个指向它的 master 分支的指针,在本地命名为origin/master,但你无法在本地更改其数据。接着,Git 建立一个属于你自己的本地 master 分支,始于origin 上 master 分支相同的位置,你可以就此开始工作。一次 Git 克隆会建立你自己的本地分支 master 和远程分支 origin/master,并且将它们都指向 origin 上的 master 分支。
![](https://i-blog.csdnimg.cn/blog_migrate/597abe8290bebf14d027fdffab87eede.png)
如果要把该远程分支的内容合并到当前分支,可以运行 git merge origin/master。
![](https://i-blog.csdnimg.cn/blog_migrate/bd66f352ff9cc00990bd079c2457654d.png)
从远程分支checkout出来的本地分支,称为 跟踪分支 (tracking branch)。跟踪分支是一种和某个远程分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。同样,在这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。
在克隆仓库时,Git 通常会自动创建一个名为 master 的分支来跟踪 origin/master。当然,你可以随心所欲地设定为其它跟踪分支, git checkout -b [分支名] [远程名]/[分支名]。