git config

修改提交人信息

全局提交人信息修改:
git config --global user.name "xxx"
git config --global user.email "[email protected]"

检查配置信息

git config --list

git仓库操作

git状态操作

查看当前git状态:git status/git status -s
git add命令将文件放入暂存区

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

输出有两栏,左栏:暂存区的状态,右栏:工作区的状态
M:文件被修改
A:新添加到暂存区的文件
??:新添加未跟踪的文件

可以使用git diff查看工作区和暂存区文件之间的差异,也就是修改以后但是还没有暂存的内容

查看远程的git仓库:git remote -v,其中origin是默认的远程仓库的别名
查看远程仓库的信息:git remote show <shortname>

git仓库修改

删除跟踪的文件,下次提交中将不会跟踪此文件:git rm PROJECT.md
取消暂存的文件:git reset HEAD <file>
撤销暂存区中修改的文件:git checkout -- <file>
给git仓库添加全程仓库:git remote add <shortname> <url>
fetch和pull:fetch会拉取远程仓库,但不会合并远程的修改;pull会拉取远程仓库并合并远程的修改
将自己本地的仓库更新到远程仓库:git push <remote> branch

git查看历史记录

直接显示所有的log记录:git log
显示每次提交的差异(-p),之前2个提交(-2):git log -p -2
显示每次提交的变化:git log --stat

git分支操作

创建新分支:git branch <branch_name>
HEAD指针始终指向当前所在的分支
image.png
分支切换:git checkout <branch_name>
输出分支情况:git log --oneline --decorate --graph --all
创建分支并切换:git checkout -b <branch_name>
合并分支:git merge <branch_name>
删除分支:git branch -d <branch_name>
查看所有分支:git branch
查看分支显示最新的提交:git branch -v
查看远程分支:git ls-remote <remote>
获取远程分支的信息:git show remote <remote>

冲突解决

当分支合并出现冲突的时候:
查看git status获取发生冲突的文件:

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:      index.html

no changes added to commit (use "git add" and/or "git commit -a")

找到发生冲突的文件,并找到文件中冲突的区块:

<<<<<<< HEAD:index.html
<div id="footer">contact : [email protected]</div>
=======
<div id="footer">
 please contact us at [email protected]
</div>
>>>>>>> iss53:index.html

删除冲突区块解决冲突,将修改后的文件git add进入暂存区

分支合并(变基)

除了将一个branch merge到master以外,git可以将一个branch中所有的修改进行重放应用到master中

  1. git checkout 待合并的分支
  2. git rebase master
  3. git checkout master
  4. git merge 待合并的分支

rebase的作用主要是用于简化提交记录