git命令学习笔记

参考自http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

一、配置

git config --global user.name "Your Name"

git config --global user.email "[email protected]" 使用--global参数表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址

二、提交

git status

git init 初始化生成.git文件夹

git add test.txt 将改动添加到暂存区,可以多次执行add命令,然后一次性commit.比如git add file1.txt/git add file2.txt file3.txt git commit -m "add 3 files."

git commit -m "本次提交的说明备注"

git log 查看提交记录 git log --pretty=oneline 此参数可以将日志简略为版本号加提交说明

git diff 查看更改记录

三、往返任意一个版本

git reset --hard HEAD^ 回退版本,HEAD^^表示回退上上一个版本,HEAD^100表示回退上100个版本

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

四、撤消修改

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

五、删除

git rm test.txt

git commit -m "remove"

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

六、远程连接

添加远程库:

git remote add origin [email protected]:CuiXu1987/TestGit.git

origin是远程仓库在本地别名,你可以自由取,git链接是在建立远程仓库时要你记下的ssh连接。此句就是在本地建立远程仓库别名并链接到远程仓库。

git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

从远程库克隆:

git remote -v

fetch抓取权限

push推送权限

git push origin master

git push origin dev

git clone [email protected]:CuiXu1987/gitskills.git 会将远程项目下载到当前路径master

git checkout -b dev origin/dev要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支

git commit -m ""

git push origin dev 提交到dev分支

先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

git branch --set-upstream dev origin/dev

git pull

git commit -m ""

git push origin dev 

因此,多人协作的工作模式通常是这样:

首先,可以试图用git push origin branch-name推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

七、分支

在撤消操作中,git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

创建dev分支并切换:

git branch dev 创建dev分支

git checkout dev 切换分支

也可以合并成一行:git checkout -b dev 创建加切换

git branch可以查看当前分支,git checkout master/dev则可以切换当前所处分支

git merge dev用于合并指定分支dev到当前分支master

git branch -d dev则是合并后删除掉dev分支 丢弃一个没有合并过的分支需要git branch -D dev

master发布稳定版本 只在发布时使用

dev为开发分支 内部使用

从dev上每个小组成员都有自己的分支 做完提交

如果当前分支没有做完 想另起分支去做另一个任务 可以使用Stash功能

git stash

git dev 进入dev分支

git checkout -b issue-101

git add xx.txt

git commit -m "fix bug"

git checkout dev

git merge --no--ff -m "merged bug fix" issue-101

git branch -d issue-101

git stash apply恢复后,stash内容并不删除,你需要用git stash drop来删除;

git stash pop恢复的同时把stash内容也删了:

猜你喜欢

转载自smartblack.iteye.com/blog/2305289