git add test 添加单个文件test
git add test1 test2 test3 多个文件可以用空格来隔开
也可以使用git add -A添加所有的文件
git commit -m "Test change" 提交到本地版本库 -m 是指定提交信息,必填项目 。“ Test change ” 是此次的提交的说明。
git commit --a,对本地所有变更的文件执行提交操作,包括对本地修改的文件和删除的文件,但是不包括未被版本库跟踪的文件。但是这个命令最好不要使用,这样会丢掉Git暂存区带给用户的最大好处:对提交内容进行控制的能力
-
怎样恢复到历史版本( reset )?
使用
git log
查看更改记录,记住其中的 commit 版本号,然后,运行git reset <log> --hard
即可(<log>
即 commit 版本号)。另外,git reset HEAD
可以恢复到上一个 commit 版本。如果只是想把更改状态切换到某一个历史记录,那么,可以
git reset <log>
这样,文件不会恢复到历史版本,但是,在这个记录后修改的文件会被标记为已修改,但未添加修改记录里。
分支操作:
git branch 查看本地分支
git branch -a 查看所有分支包括本地和远程分支
git branch -v 查看所有分支最后一次提交
git branch test 创建test分支
git branch -d 删除分支
git branch -D 强制删除分支
切换分支操作:
git checkout test 切换到test分支上去
git checkout -b test 创建新的分支test,并切换到test分支上,-b就是branch
git push origin gruntTest 上传本地当前分支到远程的gruntTest分支
git push origin test:master 提交本地分支test 作为远程master分支
git rebase master 更新master分支上的东西到该分支上
先切换到master分支上然后再更新test分支上的东西到master上
git checkout master
git rebase test
查看提交历史操作
git log 查看提交历史
git log -p 查看提交历史并列出修改内容
git log --stat 显示被提交的文件名
git blame fileNme |grep xxx_notify 查看某行代码的提交历史(比如fileName文件中的xxx_notify()函数)
获取最新代码
可以先从github上,在项目所在的主分支上(比如:master)合并代码到自己的分支上(gruntTest),然后在pull代码
先checkout到自己的分支上,然后再执行git pull。
或者是如下方法:
git pull = git fetch + git merge
git fetch 是下载服务器代码到本地,但是不会自动合并。
将branch2上的代码合并到branch1上:
git checkout branch1
git merge branch2
提交代码的操作
代码提交
代码提交一般有五个步骤:
1.查看目前代码的修改状态
2.查看代码修改内容
3.暂存需要提交的文件
4.提交已暂存的文件
5.同步到服务器
1. 查看目前代码的修改状态
提交代码之前,首先应该检查目前所做的修改,运行git status命令
a) 已暂存 (changes to be committed)
new file //表示新建文件
modified //表示修改文件
deleted //表示删除文件
b) 已修改 (changed but not updated)
modified //表示修改文件
deleted //表示删除文件
另外,git 给出了可能需要的操作命令,git add/rm, gitcheckout --
c) 未跟踪 (untracked files)
2. 查看代码修改的内容
git diff <file>
比较某文件与最近提交节点的差异。
注意:如果该文件已暂存,那么应该使用git diff –cached<file>
git diff <hashcode> <hashcode> <file>
比较某文件在提交节点a,节点b的差异。
技巧:如果省略后面一个hashcode,则默认表示与上一提交节点比较。(也可以利用^运算符)
3. 暂存需要提交的文件
如果是新建的文件
则git add <file>
如果是修改的文件
则git add <file>
如果是删除的文件
则 git rm <file>
4. 提交已暂存的文件
git commit
注意注释填写规范。
git commit --amend
修改最近一次提交。有时候如果提交注释书写有误或者漏提文件,可以使用此命令。
5. 同步到服务器
同步到服务器前先需要将服务器代码同步到本地
命令: git pull
如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。
命令:git checkout -- <有冲突的文件路径>
同步到服务器
命令: git push origin <本地分支名>
如果执行失败,一般是没有将服务器代码同步到本地导致的,先执行上面的git pull命令。
git add -A = git add . + git add -u
git add -A
stages Allgit add .
stages new and modified, without deleted- 是把本地的所有文件添加到repository中,除了已经删除的文件
git add -u
stages modified and deleted, without new
删除文件
"git rm" 和 "rm" 的区别
这是一个比较肤浅的问题,但对于 git 初学者来说,还是有必要提一下的。
用 git rm
来删除文件,同时还会将这个删除操作记录下来;
用 rm
来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。
直观的来讲,git rm
删除过的文件,执行 git commit -m "abc"
提交时,
会自动将删除该文件的操作提交上去。
而对于用 rm
命令直接删除的文件,执行 git commit -m "abc"
提交时,
则不会将删除该文件的操作提交上去。
不过不要紧,即使你已经通过 rm
将某个文件删除掉了,
也可以再通过 git rm
命令重新将该文件从 git 的记录中删除掉,
这样的话,在执行 git commit -m "abc"
以后,也能将这个删除操作提交上去。
如果之前不小心用 rm
命令删除了一大批文件呢?
是的,此时用 git rm
逐个地再删除一次就显得相当蛋疼了。
所幸还有更方便的处理方案,用如下的方式做提交就没有问题了: git commit -am "abc"
总结一下:
在被 git 管理的目录中删除文件时,可以选择如下两种方式来记录删除动作:
一、rm
+ git commit -am "abc"
二、git rm
+ git commit -m "abc"
另外,git add .
仅能记录添加、改动的动作,删除的动作需靠 git rm
来完成。
最后,rm
删除的文件是处于 not staged
状态的,
也就是一种介于 “未改动” 和 “已提交过” 之间的状态。
下面是测试图
一、git rm
与 rm
之间的区别
二、git add .
无法记录 rm
删除动作
三、git commit -m "abc"
无法提交 rm
删除动作
四、git commit -am "abc"
中参数 a 的作用