git平常操做

0.准备工做

0.1 git安装

 
图形客户端建议使用source tree, 中文界面

http://www.sourcetreeapp.com/git

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 HEAD@{0}: reset: moving to HEAD^
f902b09 HEAD@{1}: reset: moving to HEAD@{3}
1ab8fe7 HEAD@{2}: reset: moving to HEAD^
f902b09 HEAD@{3}: reset: moving to HEAD@{1}
1ab8fe7 HEAD@{4}: reset: moving to HEAD^
f902b09 HEAD@{5}: commit: test
1ab8fe7 HEAD@{6}: reset: moving to HEAD^
815cee5 HEAD@{7}: commit: test
1ab8fe7 HEAD@{8}: commit: added missed cacheLib.h
a724beb HEAD@{9}: pull: Merge made by the 'recursive' strategy.
 
回退到某次操做后的状态
git reset HEAD@{序号}
 
注意:没有提交到仓库中的代码没法恢复。
 

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
stash@{0}: On dev: clean 2
stash@{1}: On dev: clean
 
 
1.从远程仓库到本地仓库
 
建立新的本地仓库
git clone git@192.168.0.190: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  <其余分支名称>
 

若是有冲突,文件中会有以下内容:缓存

<<<<<<< app

当前分支fetch

=======ui

合并进来的分支spa

>>>>>>> 日志

解决冲突后,根据merge命令的提示将文件放入暂存区(stage区),而后提交blog

终止当前合并操做get

git merge --abortinput

 

合并某个提交到当前分支

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 stash@{序号}
 
显示临时缓冲区某个缓存的内容
git stash show  stash@{序号}
显示临时缓冲区某个缓存的内容
git stash show  stash@{序号}
 



相关文章
相关标签/搜索