一.首先使用 git clone 将你要提交文件的远程库克隆到本地。
git clone命令的格式:git clone git@github.com
其中git@github.com 为你的仓库地址.git
二.开始流程操作
1.git checkout 分支名 作用:创建分支和切换分支,也可以称为检出分支。
-
1.1 创建新分支:git branch 分支名
-
1.2切换到新分支:git checkout 分支名
-
1.3两个命令也可以合成为一个命令: git checkout -b 分支名
2.git pull 作用是从一个仓库或者本地的分支拉取并且整合代码
-
2.1 git pull = git fetch + git merge
git fetch不会进行合并执行后需要手动执行git merge来合并分支,而git pull拉取远程分支后直接与本地分支进行合并 -
2.2 git pull基本用法:
git pull <远程主机名> <远程分支名>:<本地分支名>
例如:git pull origin master:test 将将远程主机origin的master分支拉取过来,与本地的test分支合并 -
2.3 将上面的例子改成 fetch来操作
git fetch origin master:test git merge test
git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并 -
2.4 在实际使用中可以进入到本地某个分支中,然后直接使用git pull不加其他东西来进行更新和合并
三.git status 输出的内容分为3个分类/组
当你对文件进行了修改后,要查看状态就用到git status
git status 作用:此命令用于显示工作目录和暂存区的状态
-
1.1例如:
上图为已经在stage区, 等待添加到HEAD中的文件 -
1.2此图为(有修改, 但是没有被添加到stage区的文件)
- 1.3另一种是没有跟踪过的文件, 即从没有add过的文件
Untracked files:
(use “git add …” to include in what will be committed)
四.git add
将文件从工作区提交到stage区,即暂存区
-
1.1git add .
注意后面有个.
不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除 -
1.2git add -u .
-u == --update ,表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了 -
1.3git add -A .
-A == --all,表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区 -
1.4 git add -i .
这个命令它也是作用于版本库中已被跟踪的文件中的执行过修改与删除操作的文件。此命令一般不经常使用
五.git commit
作用:将暂存区里的改动给提交到本地的版本库
每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id
- 1.1 git commit -m “message”
message即是我们用来简要说明这次提交的东西的内容,输入你想写的内容 - 1.2 git commit --amend
也叫追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中
六.git push
文件在本地版本库后,接下来使用git push,最后一步将本地版本库的分支推送到远程服务器上对应的分支
- 1.1 git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名>
例如 git push origin master:refs/master01 ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名 - 1.2 git push origin :refs/for/master
如果省略本地的分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master - 1.3 git push
如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
七.一些git命令
1.git branch -a 查看远程的所有分支列表
2.git branch 查看本地的git分支,绿色代表当前项目所在的分支,红色就是远程分支列表。
3.git log查看日志
在操作中可以按“q”键退出日志的查看
- 3.1git log -n number 查看最后面的几个日志,number为具体的数字
例如:git log -n 3 - 3.2git log --oneline
(注意是两个杠哦) 以一行的方式显示git log 记录 - 3.3gitk 以图形化展示git log 会打开一个图形化的界面
- 3.4git log --graph 在git bash中以树状的形式展示提交记录
- 3.5git log --graph --oneline -n 2 用一行显示+树状形式+最后的两次记录
- 3.6git log --pretty=oneline 这个为简略信息只会显示版本号和提交时的备注信息
- 3.7git reflog 用git log则是看不出来被删除的commit_id,用git reflog则可以看到被删除的commit_id
4.版本回退 git reset
- 4.1git reset --soft 仅仅移动当前Head指针,不会改变工作区和暂存区的内容
- 4.2git reset --mixed 是reset的默认参数,移动head指针,改变暂存区内容,但不会改变工作区
4.3 git reset –hard 当前head指针、工作区和暂存区内容全部改变
- 4.3.1方法一:git reset –hard HEAD ^ ( ^ 表示回到上一个版本,如果需要回退到上上个版本的话,需要将HEAD改成HEAD^, 以此类推。那如果要回退到前20个版本,这种方法肯定不方便,我们可以使用简便命令操作:git reset –hard HEAD~20 );
- 4.3.2方法二:git reset –hard 版本号
此处的版本号是指每次提交生成的commit_id
总结:–soft用处不是很多,当commit之后想撤回commit,但还不想覆盖工作区内容时,使用–mixed;当想完全回滚时,使用–hard来覆盖工作区。