0.准备工作
0.1 git安装
图形客户端建议使用source tree,中文界面
0.3 git帮助信息
git help
git help 指令名称
0.4 git配置
显示配置信息
git config -l --global
修改基本配置
git config --global user.name “姓名”
git config --global user.email “邮箱”
git config --global color.ui auto
git
config --global core.autocrlf input
git config --global push.default simple
0.5 git日志
显示所有或某个文件的修改记录
git log <可选的文件名>
显示所有或某个文件的修改记录的概要(修改文件列别行数等)
git log --stat
显示某次提交中所有或某个文件的具体修改内容
git show <提交ID> <可选的文件名>
0.6 git操作记录(用于无限悔棋)
操作记录显示
git reflog show
$ git reflog show
1ab8fe7 [email protected]{0}: reset: moving to HEAD^
f902b09 [email protected]{1}: reset: moving to [email protected]{3}
1ab8fe7 [email protected]{2}: reset: moving to HEAD^
f902b09 [email protected]{3}: reset: moving to [email protected]{1}
1ab8fe7 [email protected]{4}: reset: moving to HEAD^
f902b09 [email protected]{5}: commit: test
1ab8fe7 [email protected]{6}: reset: moving to HEAD^
815cee5 [email protected]{7}: commit: test
1ab8fe7 [email protected]{8}: commit: added missed cacheLib.h
a724beb [email protected]{9}: pull: Merge made by the ‘recursive‘ strategy.
回退到某次操作后的状态
git reset [email protected]{序号}
注意:没有提交到仓库中的代码无法恢复。
0.7 git仓库构成
查看本地仓库状态
git status
$ git status
On branch dev =》 本地仓库当前branch名称
Your branch is up-to-date with ‘origin/dev‘. =》 本地仓库当前branch与远程仓库对应branch之间的差异
Changes to be committed: =》暂存区内容
(use "git reset HEAD <file>..." to unstage)
modified: Makefile
Changes not staged for commit: =》工作区内容 (对仓库中文件的修改)
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: Makefile
Untracked files: =》工作区内容 (对私有文件的修改)
(use "git add <file>..." to include in what will be committed)
build_native/
显示临时缓冲区内容
git stash list
$ git stash list
[email protected]{0}: On dev: clean 2
[email protected]{1}: On dev: clean
1.从远程仓库到本地仓库
创建新的本地仓库
git clone [email protected]:os.git <可选的本地仓库目录名称>
从远程仓库获取最新内容并合并到当前分支
git pull
从远程仓库获取最新内容但是不合并
git fetch
2.从本地仓库到远程仓库
本地仓库更新到远程仓库
git push
3.从本地仓库已有分支到私有分支
切换到已有分支
git checkout <分支名称>
从当前分支创建一个新分支并切换到新分支
git checkout -b <新分支名称>
从某个提交创建一个新分支并切换到新分支(用于查看内容或者查找问题)
git checkout <提交ID> -b <新分支名称>
查看branch信息
git branch -v
删除某个branch
git branch -D <分支名称>
3.从私有分支到本地仓库已有分支
合并其他分支到当前分支
git merge <其他分支名称>
如果有冲突,文件中会有如下内容:
<<<<<<<
当前分支
=======
合并进来的分支
>>>>>>>
解决冲突后,根据merge命令的提示将文件放入暂存区(stage区),然后提交
终止当前合并操作
git merge --abort
合并某个提交到当前分支
git cherry-pick <提交ID>
5.从工作区到暂存区
将工作区中的所有或某个文件放到暂存区(stage区)
git add <可选的文件或者目录名>
将工作区所有对仓库中代码的修改(tracked文件)放到暂存区(stage区)
git add -u
查看暂存区中对仓库中所有或某个文件的修改
git diff --cached <可选的文件或者目录名>
查看工作区中对仓库中所有或某个文件的修改
git diff <可选的文件或者目录名>
6.从暂存区到工作区
将暂存区中对仓库中所有或某个文件的修改恢复到工作区
git reset HEAD <文件或者目录名>
7.从暂存区到本地仓库
将暂存区中的内容提交到本地仓库(简单注释)
git commit -m "注释信息"
将暂存区中的内容提交到本地仓库(复杂注释,将会进入文本编辑界面)
git commit
修改上次提交的注释信息
git commit --amend -m "注释信息"
8.从本地仓库到暂存区
恢复到某次提交前的状态(修改内容仍然在工作区)
git reset <提交ID^>
注意:本操作实质上是复位到某次提交的前一次提交,并用其内容覆盖暂存区的内容,但当前修改内容仍然在工作区
9.从本地仓库到工作区
取消对某个文件或者文件夹的修改
git checkout <文件或者目录名>
注意:本操作实质上是用本地仓库中的数据覆盖工作区中的内容
恢复到某次提交前的状态(工作区修改内容被丢弃)
git reset <提交ID^>
注意:
1.本操作实质上是复位到某次提交的前一次提交,并用其内容覆盖暂存区和工作区的内容
2.如果工作区无修改内容,或者修改内容已保存到临时缓冲区,可以使用该命令查看某次提交的内容或者查找问题,查看完毕后通过reflog恢复。
10.从工作区到本地仓库
直接将文件提交到本地仓库(!!不经过暂存区,慎用)
git commit -a -m "注释信息"
11.从工作区到临时缓冲区
将工作区中所有对仓库中代码的修改(tracked文件)放到临时缓冲区(stash区)
git stash save "缓冲区描述"
12.从临时缓冲区到工作区
将临时缓冲区(stash区)中所有对仓库中代码的修改(tracked文件)弹出到工作区
git stash pop [email protected]{序号}
显示临时缓冲区某个缓存的内容
git stash show [email protected]{序号}
显示临时缓冲区某个缓存的内容
git stash show [email protected]{序号}