1.git配置
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
2.git仓库
git init
3. 添加文件到缓存区
git add [your file name]
//添加目录下全部文件
git add .
4. 提交
git commit -m "your message about this commit for"
5. git checkout
1.切换到分之dev
git checkout dev
- 如果master分之和dev分之的最近一次提交commitID一致的话,那么在两个分之间切换会把改动也给带过去了,无论你add与否。
- 当两个分之的最近提交记录不一样的时候,如果在一个分之上修改了,但是没有提交,git不允许切换分之。
2.新建一个分之dev,并且切换到dev
git checkout -b dev
注意切换分之的时候如果,两个分之
3.强制切换分之
git checkout -f dev
如果master上有没有提交的修改则会被废弃
4.检出一个文件到工作区
- 从当前分之的暂存区检出一个文件到工作区
git checkout -- git.txt
这里 -- 是为了说明后面加的是一个文件,而不是一个分之,避免产生歧义。如果你有一个dev分之,又有一个dev文件,git checkout -- dev 会让git知道你是要检出文件而不是切换分之,所以-- 我们一般可以不写。
当暂存区中没有一次此文件的暂存时,那么检出到工作区的是当前分之记录里面的文件。
- 从某次提交中检出一个文件到工作区
git checkout commit_id -- file
这里你检出的文件,会被加入暂存区中,也就是你检出一个文件后,工作区和暂存区中的这个文件是一致的了,但是可能会和当前分之中的不一致。一般来说既然你要特地的检出一次commit的中一个文件到当前,那么它肯定和当前分之中的文件不一致
- 检出一个commit
git checkout commit_id
这里会把这个分之的检出到工作区和暂存区,但是这时你不在任何分之上,你可以使用git checkout branch回到一个分之上去,这时你就会回到master上,你的工作区和暂存区也会回到master上。
#这是你检出一个分之后的提示
Note: checking out '25ea3bef91db5b430bfbd25431bf9f8b9db2a028'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b
- 检查工作区
git checkout
注意这里就是git checkout。这时会去检查工作区
- 基于某一次提前,新建分之
git checkout -b commit_id`
- 基于当前分之创建一个没有提交历史的分之
git checkout --orphan
这个可以用来掩盖你之前混乱的提交历史,因为之前的提交的历史全都没有了
- 打补丁
git checkout -p
比较这个分之和当前分之之间的差异
6.git diff
- 比较工作区与暂存区
git diff [...]
后面参数就是你要比较的,可以是一个或多个路径、文件,也可以不加从而比较全部
- 比较暂存区与最新本地版本库
git diff --cached [...]
- 比较工作区与版本库
git diff HEAD [....]
- 比较工作区与指定提交
git diff commit_id [...]
- 比较暂存区与指定提交
git diff --cached [] [...]
- 比较两个提交之间的差异
git diff [] []
- 生成一个差异补丁
git diff --cached >
git diff --HEAD >
git diff >
git apply --check
git apply
7. git reset
- 工作区,暂存区,HEAD都回到某个节点
git reset --hard
- 工作区不做改动,暂存区和HEAD回到某个节点
git reset --mixed
- 工作区,暂存区都不做改动,HEAD回到某个节点
git reset --soft
- 将暂存区的文件reset到HEAD中的
git reset HEAD -- [...]
8.git merge
- 合并一个分之
git merge dev
注意这样合并可能会产生冲突,冲突的解决又会形成一个commit。
9.git rebase
git rebase master
这个基于master分之的最后一次提交然后把dev分之的commit重做一遍,这种模式下冲突的解决是不产生一次commit的
git pull --rebase
先拉取远端代码然后重做commit
使用git rebase 可以使你的提交记录只有一条直线
10. git stash
git stash -p
交互式命令,让你选择每个文件的操作方式,这样就可以暂存部分文件了
git stash save "msg"
暂存当前所有修改,暂时没发现可以只暂存部分文件的命令
git stash list
查看当前所有暂存
git stash apply stash@{index}
还原某个暂存,并不在stash list 中丢弃
git stash pop stash@{index}
应用并丢弃
git stash drop stash@{index}
不应用直接丢弃
git stash clear
不应用直接丢弃所有暂存
11. git apply
git apply --check patch
git apply --stat patch
git am -3 patch
12. git log
git log //单个文件的提交记录
git log -p //单个文件每次提交的diff
git log --author="name"
git log -1 --name-only --pretty=format: ' ' aa524b469c86ac056d63aefcd21108570a9ca1dc //一次提交中修改的文件
git log --stat //查看每个提交的修改文件
13. git show
git show //某次提交中某个文件的修改
14. git branch
git branch -vv //可以查看当前分支对应的远程分支