如果您更倾向于视频学习,我推荐您git知道这些就够了
如果您想通过文档了解更全面的git,我推荐您廖雪峰git教程
贼常用的命令
-
git init :初始化一个git仓库
-
git status: 查看当前仓库的状态信息
红色字体:代表文件有变更
绿色字体:文件在暂存区中 -
git add <**> :将**加入暂存区
git add<filename>
:将单个文件放入暂存区
git add -A 或者 .注意是.
:将所有的文件加入暂存区,A要大写 -
git commit -m <message>:将暂存区的文件放入仓库并附上描述信息message。
每个commit都有一个唯一的哈希值与之对应。
commit 只会提交绿的文件。 -
git log:查看日志信息,可以查看每次的commit的时间、人员和内容
-
git reflog:查看所有的操作记录
文件状态
- untracked:新建文件的状态
- unmodified:文件第一次提交后的文件
- modified:提交的文件有了变更之后的状态
- staged:提交(commit)后的状态
撤销
-
git reset <filename>:从暂存区中撤销文件,就是status中绿色变成红色。
-
git reset <commitID>:根据commitID回退到不同的版本。
–hard:不保存所有变更
–soft:保留变更且变更内容处于staged状态
–mixed:保留变更且变更内容处于modified状态当回退后想回到之前最新的可能会用到reflog命令,或者git pull直接回到最新的commit。
分支
版本的变更就放在不同的分支中,版本切换时就切换分支,就不需要使用commitId了。
- git checkout -b <name> <template> :创建一个新的分支,name:新分支的名字,template:指以哪个分支或者commit为模板,不填默认以当前分支为模板。
分支会继承在他创建之前master中的commit,之后在此分支提交的commit不会同步到master
- git checkout <name>:切换不同的分支,name是分支的名字。
- git branch:查看所有的分支。
带*/高亮的代表当前所在的分支。
合并
合并分支的变更,注意不是分支的内容。
- git merge --no-ff <branchName> :设当前所在分支是master,则就是将branchName的变更合并到master上。注意:建议merge的时候总是用 --no-ff 选项。
合并不同的分支时可能会产生冲突,需要解决冲突,可以使用工具,也可以手动(手动就是自己选择保留什么内容,之后再次commit)
远程仓库
- git clone ****:克隆远程仓库
- git push : 将本地仓库推送至远程仓库
在本地首次创建的分支(远程仓库中没有该分支),push会出错,报错:当前分支没有上流分支,☞该分支只在存在于本地而远程仓库并没有。不要怂,出错了git会给你提示。
git push --set-upstream origin branchName:推送当前分支并设置远端为上流分支。 - git fetch:拉取远程仓库的信息。
获取信息后,第一次使用git branch你不会看到远程新加的分支,因为git branch是获取本地的分支,但是 fetch后可以使用git checkout branchName切换到新加的分支,没有fetch的话checkout不会起作用。
git checkout -b branchName origin RemoteBranchName:将远程的RemoteBranchName切到本地并取名为branchName - git pull:先fetch再自动merge。