• 1. 孤独な巡礼 - 川井憲次
  • 2. Moon_River - Audrey_Hepburn
person

配置个人信息

  git config --global user.name "xxyangyoulin"
  git config --global user.email "xxyangyoulin@gmail.com"

#查看提交日志

 git log 
 git log  --pretty=oneline #简略查看信息
 git log --graph --pretty=oneline --abbrev-commit #查看分支信息
 git log --oneline --graph --decorate --all #分支树
 git reflog #查看全部提交命令

`git commit --amend 撤销上一次提交并形成一个新的版本
`

文件差别对比

`git diff`  
查看所有

git diff filepath
工作区与暂存区比较

git diff HEAD filepath
工作区与版本库( 当前工作分支) 比较

git diff --staged 或 --cached filepath
工作区与版本库比较

git diff 版本号 版本号
同一个分支里面两个不同版本号的的文件进行对比


git diff 分支 分支
两个不同分支的对比

进行版本穿梭

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上写成HEAD~100。

回退到上一版本

git reset --hard HEAD^

此时git log 发现当前版本以后的版本消失。

想回到未来版本?未关闭窗口之前,找到版本号:

git reset --hard <版本号>

版本的跳转,HEAD如同一个指针,跳转不过是指针指向不同的版本。

HEAD指向哪个版本,当前版本定位就在哪儿。

但是找不到版本号了?

git提供了查看你的每一次命令的命令:

git reflog

回退到某个版本 (万能)

git reset --hard commit_id

撤销修改

在没add之前

git checkout -- changedFile   撤销单个
git checkout -- .   撤销全部

将会回到文件最后一次commit或者没add时候的状态。

已经被你add了?
撤销某一个或多个的文件修改 在add之后

git reset head .
git reset head filename

在执行

git checkout -- . 撤销全部
git checkout -- filename 撤销单个
>可以简单粗暴直接恢复所有更改
git reset --hard head

这样add的文件就被撤销回到工作区了。

删除文件

1.工作区删除了文件并且确定也要删除版本库的该文件:

git rm hello.txt
git commit -m 'rm hello'

2.git操作之git clean删除一些没有git add的文件
删除 一些 没有 git add 的 文件;

git clean 参数

    -n 显示 将要 删除的 文件 和  目录

     -f 删除 文件,-df 删除 文件 和 目录

重命名

git mv filename

2.更改错了?
恢复回来

git reset head filename
git checkout -- hello.txt
git checkout -- .

恢复到最新版本
或者直接恢复

git reset --hard head

进行分支管理

创建新的分支

git branch newbranch

切换到新分支

git checkout newbranch

创建并且切换

git checkout -b newbranch

查看当前分支

git branch

分支更名

git branch -m dev fix

合并指定分支

git merge otherbranch

合并发生冲突,手动修改冲突文件并提交即可。
但是这种方式Git会尽可能的使用Fast forward模式,这种情况下,删除分支后,分支信息会一并删除。

禁用Fast forward模式?
git merge --no-ff otherbranch

--no-ff可以保留之前的分支历史,能够更好的查看历史分支信息。而git merge只保留单条分支记录。

删除指定分支

git branch -d otherbranch

推荐的是:创建一个分支完成一个任务,完成任务合并分支后删除完成任务的分支。

但是提示没有合并分支?

git branch -D otherbranch

强制删除。

储藏工作现场

工作途中,我们在A分支工作,当前任务未完成,没有添加到暂存区,但是需要紧急修复bug,使用:

git stash  可以暂存我们的修改 没有add的状态

储存现场,然后切换到需要修复bug的分支B。

接着,创建修复bug的分支C,完成修复任务,回到B分支,合并C分支,删除C分支。

然后,回到我们正在工作的A分支:

git checkout A

查看我们的工作现场:

git stash list

恢复工作现场?

git stash pop
git stash pop stash@{0} 选择id号恢复
git stash pop stash@{1}

此时会恢复并且删除stash的内容。

不删除stash内容?

git stash apply <指定stash,可以多次stash>

只执行恢复操作。

但是以后想删除?

git stash drop stash@{0}

执行删除stash内容的操作。

查看远程分支

git remote -v 

分支多人协作

其他人从服务器clone你的项目的时候,他默认只能在本地看到master分支,但是想切换其他分支进行工作?

git checkout -b work1 orgin/work1

在本地创建和远程对应的分支。

完成工作之后推送到服务器:

git push origin work1

此时其他人想要推送到work1就必须:

git pull

先拉取一下。

如果提示There is no tracking information for the current branch.

此时需要指定本地work1和远程work1分支的连接关系:

git branch --set-upstream work1 origin/work1

然后再执行拉取操作。

拉取之后,可能会发生冲突,手动解决即可。

tag标签的使用

git tag -a v1.0 -m '第一次提交' dc20625

-m标签说明

commit id 为空将会对应最新的commit

查看标签信息:

git tag
git tag -ln   显示标签名及其描述信息
git tag -ln v1.0   显示标签名及其描述信息

推送标签

git push origin v1.0

推送全部:

git push origin --tags

删除标签:

git tag -d v1.0  #删除本地
git push origin :refs/tags/v1.0  #删除远程

切换标签

git checkout v1.0 #切换到指定标签

使用远程仓库

关联远程仓库

git remote add origin git@github.com:mnnyang/reponame.git

添加后,远程仓库的名字就叫做origin, Git的默认叫法,也可以更改。

关联之后,把本地的master分支所有内容推动到远程库上:

git push -u origin master

-u参数:

Git会把本地的master分支和远程的master分支关联起来,以后的推送和拉取就可以简化命令。

删除已关联的远程库

git remote rm origin 

可以关联多个远程库

修改默认的远程库名称origin即可。

待更新

新评论