1、暂存某个文件(从工作区添加到缓存区):commit之前
对于修改的,删除的,新增的都是使用命令:git add
单个文件的添加: git add 添加到暂存区。
批量文件的添加:如果要一次添加所有(修改的,删除的,新增的)文件:git add --all或者git add -A命令;
2、撤销未提交修改(未暂存或暂存的):commit之前
(一)、对于工作区的文件,即还未暂存的,如果已经对某个文件(如example.cpp)进行了很多处的修改,后来发现不用修改想撤销当前所有的修改,如果手动在文件中通过Ctrl+Z或者直接改回去都很麻烦且容易漏掉,如果想直接保持和git远程中提交版本一致,这时就只需要执行如下命令:
git checkout -- path/example.cpp //注意:该命令只对unstaged changes(未暂存)(工作区)的文件起作用。
不能直接使用:git checkout命令,后面后面必须接参数。所以只能一个一个的撤销。
这样就可以把对example.cpp的未提交的修改,撤销了。example.cpp的版本就和远程库中一样,或者和本地上次提交的一致了。
*(二)、对于缓存区的文件,即是已经暂存了的文件(staged changes),需要先把它从暂存区迁移到工作区,使用命令如下:
git reset HEAD path/example.cpp //注意:该命令只对staged changes(暂存区)的文件起作用。
后面不接文件路径:git reset HEAD //表示把整个暂存区的所有文件变成未暂存状态(工作区),对所有文件都起作用,如果是新文件也会重新编程未跟踪状态。
然后,可以继续使用上面第一点的命令撤销修改。
*(三)、对于有很多文件的情况,想一次性全部撤销所有修改。
首先,用git add --all命令把所有文件添加到暂存区。
然后,用git reset --hard HEAD命令直接把所有文件从暂存区直接丢弃撤销掉。
这样就可以批量撤销所有文件的修改了,而不用git checkout -- 一个一个文件的去撤销了。
3、提交文件(commit):push之前
一般使用方式是:git commit -m "此次提交的说明注释"。// 该命令只提交暂存区的内容。
如果想跳过git add 命令,直接从未暂存区内开始提交所有文件(新增的文件除外),可以使用命令:
git commit -a -m "提交说明" // 对工作区的所有修改的、删除的文件直接提交。
4、撤销的已经提交的文件:push之前
页分两种情况:
(一)、一种是撤销到暂存区:
git reset --soft HEAD^://把最后一次提交(还没push)撤销掉,并直接把该次提交的文件改成到暂存状态。
(二)、一种是直接撤销修改:
git reset --hard HEAD^ : //这会把最后一次提交(还没push)直接撤销掉,并且会直接丢弃这些文件的修改。
所以:注意:一般最好不要随便使用--hard选项。
(三)、这种是直接撤销掉并创建一次新的提交,只待push:
git revert HEAD : //这会把最后一次提交(还没push)直接撤销并自动创建了一次新的提交但还没push。
5、推送(push)到远程更新文件:一次完整的更新结束。
一般常用的方式是: 直接git push就行了。前提条件是:指定了默认主机,并且当前分支和远程分支存在追踪关系。
git push命令的完整形式是:git push<远程主机名> <本地分支名>:<远程分支名>
表示把本地的某个分支推送到指定的远程主机上的某个远程分支上。
如:git push origin local_master:master //表示把本地的local_master分支推送到远程orgin主机上的master分支上。
其实不用这么麻烦,有几种省略方式:
git push origin ://当前分支与远程分支存在追踪关系,表示直接把当前分支推送到远程orgin主机的对应分支上。
git push origin :remote_dev :// 推送一个空的本地分支到远程的remote_dev分支上,表示删除这个远程分支。等同于:git push origin --delete remote_dev
git push -u origin master ://当把本地仓库和远程仓库关联后第一次推送时要用这个命令。
6、撤销已经push了的文件:
也分两种情况:使用的是revert命令:它的实质是把某次push再反向写回去,并创建了一个新的提交。
(一)、直接撤销并自动创建一次新的提交,等待push :
git revert HEAD://撤销最后一次push.
git revert commit_ish :// 撤销具体某一次push. commit_ish是某次提交的hash码。
(二)、直接撤销到暂存区,可重新修改再commit:
git revert -n HEAD ://撤销最后一次提交push.
git revert –n commit-ish : //撤销某次完整提交(指已经push了的),并且不会自动生成一个新的回滚提交,而是把这次提交回退到暂存状态,可以重新修改后再提交。
7、关于git检测大小写的问题。
git默认是大小写不敏感的,所以当你把某个文件夹或文件名改变了大小写时,git是识别不出来的。
怎样让git识别大小写呢? 可使用命令:git config core.ignorecase false。
改命令需在特定的仓库的git bash下使用。
8、To be continue.....
网友评论